From c68d5efe62ba8386934f981a58b705ff33b041d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Przemys=C5=82aw=20Pluta?= Date: Sat, 7 Mar 2020 19:39:18 +0100 Subject: [PATCH] Fix operator precedence between relation operators and logic operators --- .../io/smnp/dsl/ast/parser/SubexpressionParser.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/io/smnp/dsl/ast/parser/SubexpressionParser.kt b/src/main/kotlin/io/smnp/dsl/ast/parser/SubexpressionParser.kt index f20ce8d..1cc6e90 100644 --- a/src/main/kotlin/io/smnp/dsl/ast/parser/SubexpressionParser.kt +++ b/src/main/kotlin/io/smnp/dsl/ast/parser/SubexpressionParser.kt @@ -19,15 +19,15 @@ class SubexpressionParser : Parser() { val expr2Parser = leftAssociativeOperator( expr1Parser, - listOf(TokenType.RELATION, TokenType.OPEN_ANGLE, TokenType.CLOSE_ANGLE), + listOf(TokenType.AND), expr1Parser ) { lhs, operator, rhs -> - RelationOperatorNode(lhs, operator, rhs) + LogicOperatorNode(lhs, operator, rhs) } val expr3Parser = leftAssociativeOperator( expr2Parser, - listOf(TokenType.AND), + listOf(TokenType.OR), expr2Parser ) { lhs, operator, rhs -> LogicOperatorNode(lhs, operator, rhs) @@ -35,10 +35,10 @@ class SubexpressionParser : Parser() { val expr4Parser = leftAssociativeOperator( expr3Parser, - listOf(TokenType.OR), + listOf(TokenType.RELATION, TokenType.OPEN_ANGLE, TokenType.CLOSE_ANGLE), expr3Parser ) { lhs, operator, rhs -> - LogicOperatorNode(lhs, operator, rhs) + RelationOperatorNode(lhs, operator, rhs) } return expr4Parser.parse(input)