public override object Visit(AssignmentExpression assignmentExpression, object data) { if (assignmentExpression.Op == AssignmentOperatorType.Add) { methodReference = true; CodeExpression methodInvoker = (CodeExpression)assignmentExpression.Right.AcceptVisitor(this, null); methodReference = false; if (assignmentExpression.Left is IdentifierExpression) { AddStmt(new CodeAttachEventStatement(new CodeEventReferenceExpression(new CodeThisReferenceExpression(), ((IdentifierExpression)assignmentExpression.Left).Identifier), methodInvoker)); } else { FieldReferenceExpression fr = (FieldReferenceExpression)assignmentExpression.Left; AddStmt(new CodeAttachEventStatement(new CodeEventReferenceExpression((CodeExpression)fr.TargetObject.AcceptVisitor(this, data), fr.FieldName), methodInvoker)); } } else { if (assignmentExpression.Left is IdentifierExpression) { AddStmt(new CodeAssignStatement((CodeExpression)assignmentExpression.Left.AcceptVisitor(this, null), (CodeExpression)assignmentExpression.Right.AcceptVisitor(this, null))); } else { AddStmt(new CodeAssignStatement((CodeExpression)assignmentExpression.Left.AcceptVisitor(this, null), (CodeExpression)assignmentExpression.Right.AcceptVisitor(this, null))); } } return null; }
public override object Visit(AssignmentExpression assignmentExpression, object data) { Console.WriteLine(assignmentExpression.ToString()); return assignmentExpression.AcceptChildren(this, data); }
public override object Visit(AssignmentExpression assignmentExpression, object data) { DebugOutput(assignmentExpression); string op = null; string left = assignmentExpression.Left.AcceptVisitor(this, data).ToString(); string right = assignmentExpression.Right.AcceptVisitor(this, data).ToString(); switch (assignmentExpression.Op) { case AssignmentOperatorType.Assign: op = " = "; break; case AssignmentOperatorType.Add: op = " += "; if (IsEventHandlerCreation(assignmentExpression.Right)) { return String.Format("AddHandler {0}, AddressOf {1}", left, ((Expression)((ObjectCreateExpression)assignmentExpression.Right).Parameters[0]).AcceptVisitor(this, data).ToString()); } break; case AssignmentOperatorType.Subtract: op = " -= "; if (IsEventHandlerCreation(assignmentExpression.Right)) { return String.Format("RemoveHandler {0}, AddressOf {1}", left, ((Expression)((ObjectCreateExpression)assignmentExpression.Right).Parameters[0]).AcceptVisitor(this, data).ToString()); } break; case AssignmentOperatorType.Multiply: op = " *= "; break; case AssignmentOperatorType.Divide: op = " /= "; break; case AssignmentOperatorType.ShiftLeft: op = " <<= "; break; case AssignmentOperatorType.ShiftRight: op = " >>= "; break; case AssignmentOperatorType.ExclusiveOr: return String.Format("{0} = {0} Xor ({1})", left, right); case AssignmentOperatorType.Modulus: return String.Format("{0} = {0} Mod ({1})", left, right); case AssignmentOperatorType.BitwiseAnd: return String.Format("{0} = {0} And ({1})", left, right); case AssignmentOperatorType.BitwiseOr: return String.Format("{0} = {0} Or ({1})", left, right); } return String.Concat(left, op, right); }
public override object Visit(AssignmentExpression assignmentExpression, object data) { return assignmentExpression.Left.AcceptVisitor(this, data); }
public virtual object Visit(AssignmentExpression assignmentExpression, object data) { if (assignmentExpression.Left == null || assignmentExpression.Right == null) return null; assignmentExpression.Left.AcceptVisitor(this, data); return assignmentExpression.Right.AcceptVisitor(this, data); }
void Expr( #line 1767 "cs.ATG" out Expression expr) { #line 1768 "cs.ATG" expr = null; Expression expr1 = null, expr2 = null; UnaryExpr( #line 1770 "cs.ATG" out expr); if (StartOf(5)) { ConditionalOrExpr( #line 1773 "cs.ATG" ref expr); if (la.kind == 11) { lexer.NextToken(); Expr( #line 1773 "cs.ATG" out expr1); Expect(9); Expr( #line 1773 "cs.ATG" out expr2); #line 1773 "cs.ATG" expr = new ConditionalExpression(expr, expr1, expr2); } } else if (StartOf(6)) { #line 1775 "cs.ATG" AssignmentOperatorType op; Expression val; AssignmentOperator( #line 1775 "cs.ATG" out op); Expr( #line 1775 "cs.ATG" out val); #line 1775 "cs.ATG" expr = new AssignmentExpression(expr, op, val); } else SynErr(128); }
void StatementExpr( #line 1748 "cs.ATG" out Statement stmt) { #line 1753 "cs.ATG" bool mustBeAssignment = la.kind == Tokens.Plus || la.kind == Tokens.Minus || la.kind == Tokens.Not || la.kind == Tokens.BitwiseComplement || la.kind == Tokens.Times || la.kind == Tokens.BitwiseAnd || IsTypeCast(); Expression expr = null; UnaryExpr( #line 1759 "cs.ATG" out expr); if (StartOf(6)) { #line 1762 "cs.ATG" AssignmentOperatorType op; Expression val; AssignmentOperator( #line 1762 "cs.ATG" out op); Expr( #line 1762 "cs.ATG" out val); #line 1762 "cs.ATG" expr = new AssignmentExpression(expr, op, val); } else if (la.kind == 10 || la.kind == 12 || la.kind == 19) { #line 1763 "cs.ATG" if (mustBeAssignment) Error("error in assignment."); } else SynErr(172); #line 1764 "cs.ATG" stmt = new StatementExpression(expr); }
public override object Visit(AssignmentExpression assignmentExpression, object data) { assignmentExpression.Left.AcceptVisitor(this, data); outputFormatter.Space(); switch (assignmentExpression.Op) { case AssignmentOperatorType.Assign: outputFormatter.PrintToken(Tokens.Assign); break; case AssignmentOperatorType.Add: outputFormatter.PrintToken(Tokens.PlusAssign); break; case AssignmentOperatorType.Subtract: outputFormatter.PrintToken(Tokens.MinusAssign); break; case AssignmentOperatorType.Multiply: outputFormatter.PrintToken(Tokens.TimesAssign); break; case AssignmentOperatorType.Divide: outputFormatter.PrintToken(Tokens.DivAssign); break; case AssignmentOperatorType.ShiftLeft: outputFormatter.PrintToken(Tokens.ShiftLeftAssign); break; case AssignmentOperatorType.ShiftRight: outputFormatter.PrintToken(Tokens.ShiftRightAssign); break; case AssignmentOperatorType.ExclusiveOr: outputFormatter.PrintToken(Tokens.XorAssign); break; case AssignmentOperatorType.Modulus: outputFormatter.PrintToken(Tokens.ModAssign); break; case AssignmentOperatorType.BitwiseAnd: outputFormatter.PrintToken(Tokens.BitwiseAndAssign); break; case AssignmentOperatorType.BitwiseOr: outputFormatter.PrintToken(Tokens.BitwiseOrAssign); break; } outputFormatter.Space(); assignmentExpression.Right.AcceptVisitor(this, data); return null; }