コード例 #1
0
 public FuncLite(string Name, LiteEnv Env, SyntaxParamListStatementNode ParamList, SyntaxBlockStatementNode Block)
     : base(Name)
 {
     this.Env_       = Env;
     this.ParamList_ = ParamList;
     this.Block_     = Block;
 }
コード例 #2
0
        // 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);
        }
コード例 #3
0
 public SyntaxFunctionNode(string FuncName, SyntaxParamListStatementNode ParamListNode, SyntaxBlockStatementNode BlockNode)
     : base(ParamListNode, BlockNode)
 {
     FuncName_ = FuncName;
 }