Create asserts for expression and identifier

This commit is contained in:
Bartłomiej Pluta
2019-07-12 17:20:38 +02:00
parent 386c89502a
commit fe8dca4d2c
2 changed files with 5 additions and 5 deletions

View File

@@ -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)
)

View File

@@ -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)
)