public rpn_inst(NT v) { m_cmd = rpn_cmd.PUSH_CONST; m_param.val = v; }
public rpn_inst(rpn_cmd cmd, size_t index = 0) { m_cmd = cmd; m_param.index = index; }
public rpn_inst() { m_cmd = rpn_cmd.ADD; m_param = new param_union() { val = plib.constants <NT, NT_OPS> .zero(), index = 0 }; }
//#define OP0(OP, EXPR) \ //case OP: \ // *(ptr++) = (EXPR); \ // break; static void evaluate_OP0(ref Pointer <NT> ptr, rpn_cmd OP, NT EXPR) { ptr[0] = EXPR; ptr++; }
} //#define ST2 *(ptr-1) //#define OP(OP, ADJ, EXPR) \ //case OP: \ // ptr-= (ADJ); \ // *(ptr-1) = (EXPR); \ // break; static void evaluate_OP(ref Pointer <NT> ptr, rpn_cmd OP, UInt32 ADJ, NT EXPR) { ptr -= ADJ; (ptr - 1)[0] = EXPR; //*(ptr-1) = (EXPR); \ }