]> git.phdru.name Git - phdru.name/cgi-bin/blog-ru/search-tags.git/blobdiff - parser/parser.py
Allow ' OR ' and ' or '
[phdru.name/cgi-bin/blog-ru/search-tags.git] / parser / parser.py
index d278e4b210681817be55a9624083d3b7d62747a7..c28474bda544e2e213ef921f917e6f04e79c8b3a 100644 (file)
@@ -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