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); }
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; }