diff --git a/Parser.Tests/MParserShould.cs b/Parser.Tests/MParserShould.cs index bb1fb01..8171f41 100644 --- a/Parser.Tests/MParserShould.cs +++ b/Parser.Tests/MParserShould.cs @@ -22,6 +22,17 @@ namespace Parser.Tests Assert.IsType(((ExpressionStatementSyntaxNode)assignment).Expression); } + [Fact] + public void ParseExpressionStatement() + { + var text = "2 + 3"; + var sut = GetSut(text); + var actual = sut.Parse(); + var statement = actual.Root.StatementList[0].AsNode(); + Assert.IsType(statement); + Assert.IsType(((ExpressionStatementSyntaxNode)statement).Expression); + } + [Fact] public void ParseAssignmentExpression_Incomplete() { diff --git a/Parser/Internal/MParserGreen.cs b/Parser/Internal/MParserGreen.cs index a578042..f7de28f 100644 --- a/Parser/Internal/MParserGreen.cs +++ b/Parser/Internal/MParserGreen.cs @@ -1070,8 +1070,6 @@ namespace Parser.Internal case "elseif": case "end": return null; - default: - return ParseExpressionStatement(); } } @@ -1084,7 +1082,7 @@ namespace Parser.Internal { return Factory.EmptyStatementSyntax(EatToken()); } - throw new ParsingException($"Unexpected token \"{CurrentToken}\" at {CurrentPosition}."); + return ParseExpressionStatement(); } private SyntaxList ParseStatementList()