"""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"""
"""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