コード例 #1
0
        private ProgramNode ParseProgram()
        {
            var program = new ProgramNode();

            while (!IsNext(TokenType.EndOfInput))
            {
                if (IsNext(TokenType.OpenCurly))
                {
                    program.AddGroup(ParseGroup());
                }
                else if (IsNext(TokenType.ExpressionName))
                {
                    program.AddExpression(ParseExpression());
                }
                else
                {
                    throw WrongTokenException(TokenType.OpenCurly, TokenType.ExpressionName, TokenType.Comma);
                }

                if (IsNext(TokenType.Comma)) // optional comma
                {
                    program.AddToken(Advance());
                }
            }

            program.AddToken(Expect(TokenType.EndOfInput));
            return(program);
        }
コード例 #2
0
ファイル: Parser.cs プロジェクト: modulexcite/cs-schyntax
        private ProgramNode ParseProgram()
        {
            var program = new ProgramNode();

            while (!IsNext(TokenType.EndOfInput))
            {
                if (IsNext(TokenType.OpenCurly))
                {
                    program.AddGroup(ParseGroup());
                }
                else if (IsNext(TokenType.ExpressionName))
                {
                    program.AddExpression(ParseExpression());
                }
                else
                {
                    throw WrongTokenException(TokenType.OpenCurly, TokenType.ExpressionName, TokenType.Comma);
                }

                if (IsNext(TokenType.Comma)) // optional comma
                {
                    program.AddToken(Advance());
                }
            }

            program.AddToken(Expect(TokenType.EndOfInput));
            return program;
        }