rem: code.push_back(op);  switch (op) {  case OP_NEG: cout << "neg\n"; break;  case OP_ADD: cout << "add\n"; break;  case OP_SUB: cout << "sub\n"; break;  case OP_MUL: cout << "mul\n"; break;  case OP_DIV: cout << "div\n"; break; }
add: using namespace std; int n = strtol(str, 0, 10); code.push_back(OP_INT); code.push_back(n); cout << "push\t" << int(n) << endl;
context:     void operator()(char const*, char const*) const    {        code.push_back(op);        switch (op) {            case OP_NEG:                cout << "neg\n";                break;            case OP_ADD:                cout << "add\n";                break;            case OP_SUB:                cout << "sub\n";                break;            case OP_MUL:                cout << "mul\n";                break;            case OP_DIV:                cout << "div\n";                break;        }    }