Example #1
0
        public Node FunDef()
        {
            var n1 = new FunctionDef()
            {
                AnchorToken = Expect(TokenCategory.IDENTIFIER)
            };

            Expect(TokenCategory.PARENTHESIS_OPEN);
            if (CurrentToken == TokenCategory.IDENTIFIER)
            {
                n1.Add(IDList(new ParamList()));
            }
            else
            {
                n1.Add(new ParamList());
            }
            Expect(TokenCategory.PARENTHESIS_CLOSE);
            Expect(TokenCategory.BRACE_OPEN);
            while (CurrentToken == TokenCategory.VAR)
            {
                n1.Add(VarDef());
            }
            if (firstOfStatement.Contains(CurrentToken))
            {
                var listStmt = new ListStatements();
                while (firstOfStatement.Contains(CurrentToken))
                {
                    listStmt.Add(Statement());
                }
                n1.Add(listStmt);
            }
            Expect(TokenCategory.BRACE_CLOSE);
            return(n1);
        }