3 from ply import lex, yacc
7 tokens = ('NAME', 'AND_OP', 'OR_OP', 'NOT_OP')
9 t_NAME = '[a-z][a-z0-9_]+'
18 """Avoid warnings on stderr"""
22 def p_expression_name(p):
23 """expression : NAME"""
26 def p_expression_and(p):
27 """expression : expression AND_OP expression"""
28 p[0] = ('AND', p[1], p[3])
30 def p_expression_not(p):
31 """expression : NOT_OP expression"""
34 def p_expression_or(p):
35 """expression : expression OR_OP expression"""
36 p[0] = ('OR', p[1], p[3])
38 def p_expression_parens(p):
39 """expression : '(' expression ')'"""
40 p[0] = ('PARENS', p[2])
43 """Avoid warnings on stderr"""