From 84b9307263ed23679ffaf7ff2a4ded0a259a8778 Mon Sep 17 00:00:00 2001 From: Oleg Broytman Date: Sun, 22 Jun 2014 04:03:52 +0400 Subject: [PATCH] Reorder handling: AND - OR - NOT --- parser/grammar | 2 +- parser/parser.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/parser/grammar b/parser/grammar index 6944378..b88b9ed 100644 --- a/parser/grammar +++ b/parser/grammar @@ -29,10 +29,10 @@ expression : NAME | expression SP0 AND_OP AND_OP SP0 expression | expression SP0 AND_OP SP0 expression | l_expression and_word r_expression - | NOT_OP SP0 expression | expression SP0 OR_OP OR_OP SP0 expression | expression SP0 OR_OP SP0 expression | l_expression or_word r_expression + | NOT_OP SP0 expression | expression_parens l_expression : expression_parens diff --git a/parser/parser.py b/parser/parser.py index c28474b..68800ac 100644 --- a/parser/parser.py +++ b/parser/parser.py @@ -40,10 +40,6 @@ def p_expression_op_word(p): elif p[2] in ('OR', 'or'): p[0] = ('OR', p[1], p[3]) -def p_expression_not(p): - """expression : NOT_OP SP0 expression""" - p[0] = ('NOT', p[3]) - def p_expression_or_or(p): """expression : expression SP0 OR_OP OR_OP SP0 expression""" p[0] = ('OR', p[1], p[6]) @@ -52,6 +48,10 @@ def p_expression_or(p): """expression : expression SP0 OR_OP SP0 expression""" p[0] = ('OR', p[1], p[5]) +def p_expression_not(p): + """expression : NOT_OP SP0 expression""" + p[0] = ('NOT', p[3]) + def p_expression_in_parens(p): """expression : expression_parens""" p[0] = p[1] -- 2.39.2