public override ASTNode VisitAssignStmt([NotNull] llangParser.AssignStmtContext context) { Expression lhs = (Expression)Visit(context.expr(0)), rhs = (Expression)Visit(context.expr(1)); //if (!TypeSymbol.Match(lhs.type, rhs.type)) Program.ErrorExit("Type mismatch", context.Start.Line, context.Start.Column); if (context.assignop().GetText().Length == 2) { return(new AugAssignNode(lhs, rhs, context.assignop().GetText(), MakeSourceLoc(context))); } return(new AssignNode(lhs, rhs, MakeSourceLoc(context))); }
/// <summary> /// Exit a parse tree produced by <see cref="llangParser.assignStmt"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitAssignStmt([NotNull] llangParser.AssignStmtContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="llangParser.assignStmt"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitAssignStmt([NotNull] llangParser.AssignStmtContext context) { return(VisitChildren(context)); }