public override ParserRuleContext VisitAddExpr([NotNull] StructuredTextParser.AddExprContext context) { var result = new VisualBasicParser.AddExprContext(_contextStack.Peek(), 0); _contextStack.Push(result); result.AddChild(Visit(context.lhs)); for (int i = 1; i < context.ChildCount; i += 2) { var operand = context.GetChild <ITerminalNode>(i).Symbol; int type; switch (operand.Type) { case StructuredTextParser.PLUS: type = VisualBasicParser.PLUS; break; case StructuredTextParser.MINUS: type = VisualBasicParser.MINUS; break; default: throw new InvalidOperationException(); } result.AddChild(new CommonToken(type, operand.Text)); result.AddChild(Visit(context.GetChild(i + 1))); } _contextStack.Pop(); return(result); }
/// <summary> /// Visit a parse tree produced by <see cref="VisualBasicParser.addExpr"/>. /// <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 VisitAddExpr([NotNull] VisualBasicParser.AddExprContext context) { return(VisitChildren(context)); }