X-Git-Url: https://git.phdru.name/?p=phdru.name%2Fcgi-bin%2Fblog-ru%2Fsearch-tags.git;a=blobdiff_plain;f=parser%2Fparser.py;h=c28474bda544e2e213ef921f917e6f04e79c8b3a;hp=d278e4b210681817be55a9624083d3b7d62747a7;hb=a701255bb701988f09266b1d3bbbbf7a063094a0;hpb=02dbb2a7f4d0804c56122cc7ca681224fe659abc diff --git a/parser/parser.py b/parser/parser.py index d278e4b..c28474b 100644 --- a/parser/parser.py +++ b/parser/parser.py @@ -33,9 +33,12 @@ def p_expression_and(p): """expression : expression SP0 AND_OP SP0 expression""" p[0] = ('AND', p[1], p[5]) -def p_expression_and_word(p): - """expression : l_expression and_word r_expression""" - p[0] = ('AND', p[1], p[3]) +def p_expression_op_word(p): + """expression : l_expression op_word r_expression""" + if p[2] in ('AND', 'and'): + p[0] = ('AND', p[1], p[3]) + elif p[2] in ('OR', 'or'): + p[0] = ('OR', p[1], p[3]) def p_expression_not(p): """expression : NOT_OP SP0 expression""" @@ -79,9 +82,9 @@ def p_expression_parens(p): """expression_parens : '(' SP0 expression SP0 ')'""" p[0] = ('PARENS', p[3]) -def p_and_word(p): - """and_word : NAME""" - if p[1] in ('AND', 'and'): +def p_op_word(p): + """op_word : NAME""" + if p[1] in ('AND', 'and', 'OR', 'or'): p[0] = p[1] else: raise SyntaxError