public DereferenceField(Expression obj, String field) { Object = obj; Field = field; }
private void ApplyIncrementDecrement(Expression exp, OpCode op) { exp.Visit(this); //visit the identifier again, as the right hand side of an assignment so we emit the OpCodes for loading onto the stack new Identifier(null, _lastWalkedIdentifier).Visit(this); _gen.Emit(OpCodes.Ldc_I4_1); _gen.Emit(op); //store this back to the location ApplyAssignmentCallback(); }
public Increment(Expression inc) { Expression = inc; }
private InternalType TypeCheckIncrementDecrement(Expression expr, string operatorName, LexLocation loc) { if (!(expr is Identifier)) { ReportError(loc, "The {0} operator requires an instance of a numeric datatype", operatorName); throw new Exception(string.Format("The {0} operator requires an instance of a numeric datatype", operatorName)); } var identifier = (Identifier)expr; identifier.IsLeftHandSide = true; var t = CheckSubTree(identifier); if (t.IsNumeric) return t; ReportError(loc, "The {0} operator requires an instance of a numeric datatype", operatorName); throw new Exception(string.Format("The {0} operator requires an instance of a numeric datatype", operatorName)); }
public Invoke(Expression obj, SpecialFunction func) { Object = obj; SpecialFunc = func; }
public Invoke(Expression obj, String method, ExpressionList actuals) { Object = obj; Method = method; Actuals = actuals; }
public Qualifier(string type, Expression e) { Type = type; Expression = e; }
public Assign(LValue lval, Expression exp) { lval.IsLeftHandSide = true; LValue = lval; Expr = exp; }
public StatementExpression(Expression exp) { Expression = exp; }