tokens = ('NAME', 'AND_OP', 'OR_OP', 'NOT_OP')
-t_NAME = '[a-z][a-z0-9_]+'
+t_NAME = '[a-z][a-z0-9_]*'
t_AND_OP = '&'
t_NOT_OP = '!'
+t_ignore = '[ \t]+'
+
def t_error(t):
"""Avoid warnings on stderr"""
"""expression : NAME"""
p[0] = ('NAME', p[1])
+def p_expression_and_and(p):
+ """expression : expression AND_OP AND_OP expression"""
+ p[0] = ('AND', p[1], p[4])
+
def p_expression_and(p):
"""expression : expression AND_OP expression"""
p[0] = ('AND', p[1], p[3])
"""expression : NOT_OP expression"""
p[0] = ('NOT', p[2])
+def p_expression_or_or(p):
+ """expression : expression OR_OP OR_OP expression"""
+ p[0] = ('OR', p[1], p[4])
+
def p_expression_or(p):
"""expression : expression OR_OP expression"""
p[0] = ('OR', p[1], p[3])