Fix parsing of expression statements

This commit is contained in:
Alexander Luzgarev 2018-12-08 13:47:29 +01:00
parent e38cdd8b36
commit 4b6ee62f07
2 changed files with 12 additions and 3 deletions

View File

@ -22,6 +22,17 @@ namespace Parser.Tests
Assert.IsType<AssignmentExpressionSyntaxNode>(((ExpressionStatementSyntaxNode)assignment).Expression); Assert.IsType<AssignmentExpressionSyntaxNode>(((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<ExpressionStatementSyntaxNode>(statement);
Assert.IsType<BinaryOperationExpressionSyntaxNode>(((ExpressionStatementSyntaxNode)statement).Expression);
}
[Fact] [Fact]
public void ParseAssignmentExpression_Incomplete() public void ParseAssignmentExpression_Incomplete()
{ {

View File

@ -1070,8 +1070,6 @@ namespace Parser.Internal
case "elseif": case "elseif":
case "end": case "end":
return null; return null;
default:
return ParseExpressionStatement();
} }
} }
@ -1084,7 +1082,7 @@ namespace Parser.Internal
{ {
return Factory.EmptyStatementSyntax(EatToken()); return Factory.EmptyStatementSyntax(EatToken());
} }
throw new ParsingException($"Unexpected token \"{CurrentToken}\" at {CurrentPosition}."); return ParseExpressionStatement();
} }
private SyntaxList ParseStatementList() private SyntaxList ParseStatementList()