public FuncLite(string Name, LiteEnv Env, SyntaxParamListStatementNode ParamList, SyntaxBlockStatementNode Block) : base(Name) { this.Env_ = Env; this.ParamList_ = ParamList; this.Block_ = Block; }
// paramlist ::= "(" [ param { "," param } ] ")" // param ::= ident private SyntaxParamListStatementNode ParseParamListNode() { if (!TokenStream_.TakeExpect(TokenType.Delimiter, "(", out Token Tok)) { ExitCode_ = new ExitUnexpectedSymbolCode(Tok); return(null); } var Node = new SyntaxParamListStatementNode(); if (TokenStream_.PeekExpect(TokenType.Delimiter, ")")) { TokenStream_.Take(); return(Node); } while (!TokenStream_.IsEnd()) { if (!TokenStream_.TakeExpect(TokenType.Identifier, out Token Param)) { ExitCode_ = new ExitUnexpectedSymbolCode(Param); return(null); } Node.AddNode(new SyntaxIdentifierNode(Param)); if (!TokenStream_.TakeExpect(TokenType.Delimiter, out Tok)) { ExitCode_ = new ExitUnexpectedSymbolCode(Tok); return(null); } if (Tok.Code == ")") { return(Node); } if (Tok.Code == ",") { continue; } ExitCode_ = new ExitUnexpectedSymbolCode(Tok); } ExitCode_ = new ExitUnexpectedSymbolCode(Tok); return(null); }
public SyntaxFunctionNode(string FuncName, SyntaxParamListStatementNode ParamListNode, SyntaxBlockStatementNode BlockNode) : base(ParamListNode, BlockNode) { FuncName_ = FuncName; }