public void visit(ExprNode_UnaryOp node) { switch (node.Op) { case "not": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(int), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Ldc_I4_0); m_stmt.ILGenerator.Emit(OpCodes.Ceq); m_currentType = typeof(int); break; case "-": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(double), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Neg); m_currentType = typeof(double); break; case "#": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(object), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Callvirt, typeof(List <object>).GetMethod("get_Count")); m_currentType = typeof(int); break; default: Trace.Assert(false); break; } }
public void visit(ExprNode_UnaryOp node) { switch (node.Op) { case "not": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(int), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Ldc_I4_0); m_stmt.ILGenerator.Emit(OpCodes.Ceq); m_currentType = typeof(int); break; case "-": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(double), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Neg); m_currentType = typeof(double); break; case "#": new ExprNodeVisitor_CodeEmitor(m_stmt, typeof(object), node.Expr); m_stmt.ILGenerator.Emit(OpCodes.Callvirt, typeof(List<object>).GetMethod("get_Count")); m_currentType = typeof(int); break; default: Trace.Assert(false); break; } }