/// <remark> /// function : KW_FUN LPAREN (function_argument (SYM_COMMA function_argument)*)? RPAREN statement_block ; /// function_argument : argument_type_specifier IDENTIFIER ; /// </remark> public UserDefinedLambda(ShellParser.FunctionContext ctx) { context = ctx; statement_block = context.statement_block(); for (int i = 0; i < context.function_argument().Length; i++) { var arg = context.function_argument(i); string name = arg.IDENTIFIER().GetText(); var token = Shell.Interpreter.Utility.GetTokenOfArgumentTypeSpecifier(arg.argument_type_specifier()); argList.Add(new Tuple <string, Specifier>(name, Shell.Interpreter.Utility.GetSpecifier(token))); } }
/// <summary> /// Visit a parse tree produced by <see cref="ShellParser.statement_block"/>. /// <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 VisitStatement_block([NotNull] ShellParser.Statement_blockContext context) { return(VisitChildren(context)); }