public override ASTNode VisitFuncallStmt([NotNull] llangParser.FuncallStmtContext context) { Expression name = (Expression)Visit(context.expr()); List <Expression> args = new List <Expression>(); if (context.argslist() != null) { for (int i = 0; i < context.argslist().expr().Length; i++) { Expression e = (Expression)Visit(context.argslist().expr(i)); args.Add(e); } } if (context.Iden() != null) { List <Expression> newargs = new List <Expression>(args.Count + 1) { (Expression)Visit(context.expr()) }; newargs.AddRange(args); return(new ImplicitFunCallStmtNode(context.Iden().GetText(), name, newargs, MakeSourceLoc(context))); } else { return(new FunCallStmtNode(name, args, MakeSourceLoc(context))); } }
/// <summary> /// Exit a parse tree produced by <see cref="llangParser.funcallStmt"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitFuncallStmt([NotNull] llangParser.FuncallStmtContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="llangParser.funcallStmt"/>. /// <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 VisitFuncallStmt([NotNull] llangParser.FuncallStmtContext context) { return(VisitChildren(context)); }