public override Node VisitFor([NotNull] TigerParser.ForContext context) { var node = new ForNode(context); ITerminalNode id = context.ID(); var init = new VarDeclNode(id.Symbol.Line, id.Symbol.Column, true); init.Children.Add(new IdNode(id.Symbol.Line, id.Symbol.Column, id.GetText())); // init -> INIT VARIABLE NAME init.Children.Add(null); // init -> INIT VARIABLE TYPE init.Children.Add(Visit(context.expr(0))); // init -> INIT VARIABLE VALUE EXPRESSION node.Children.Add(init); // INIT VARIABLE node.Children.Add(Visit(context.expr(1))); //TO EXPRESSION node.Children.Add(Visit(context.expr(2))); //DO EXPRESSION return(node); }
/// <summary> /// Visit a parse tree produced by the <c>For</c> /// labeled alternative in <see cref="TigerParser.expr"/>. /// <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 VisitFor([NotNull] TigerParser.ForContext context) { return(VisitChildren(context)); }