diff --git a/smnp/ast/node/expression.py b/smnp/ast/node/expression.py index 243337f..4d0ea0d 100644 --- a/smnp/ast/node/expression.py +++ b/smnp/ast/node/expression.py @@ -43,9 +43,9 @@ def ExpressionParser(input): ifElseExpression = Parser.allOf( expr4, Parser.terminal(TokenType.IF), - expr4, - Parser.terminal(TokenType.ELSE), - expr4, + Parser.doAssert(expr4, "expression"), + Parser.terminal(TokenType.ELSE, doAssert=True), + Parser.doAssert(expr4, "expression"), createNode=lambda ifNode, _, condition, __, elseNode: IfElse.createNode(ifNode, condition, elseNode) ) diff --git a/smnp/ast/node/identifier.py b/smnp/ast/node/identifier.py index e3a0e6c..97f0c5f 100644 --- a/smnp/ast/node/identifier.py +++ b/smnp/ast/node/identifier.py @@ -56,14 +56,14 @@ def IdentifierLiteralParser(input): def IdentifierParser(input): functionCallParser = Parser.allOf( IdentifierLiteralParser, - abstractIterableParser(ArgumentsList, TokenType.OPEN_PAREN, TokenType.CLOSE_PAREN, ExpressionParser), + abstractIterableParser(ArgumentsList, TokenType.OPEN_PAREN, TokenType.CLOSE_PAREN, Parser.doAssert(ExpressionParser, "expression")), createNode=lambda name, arguments: FunctionCall.withChildren(name, arguments) ) assignmentParser = Parser.allOf( IdentifierLiteralParser, Parser.terminal(TokenType.ASSIGN, createNode=Operator.withValue), - ExpressionParser, + Parser.doAssert(ExpressionParser, "expression"), createNode=lambda identifier, assign, expr: Assignment.withValues(identifier, assign, expr) )