"""Avoid warnings on stderr"""
lexer = lex.lex()
+
+def p_expression_name(p):
+ """expression : NAME"""
+ p[0] = ('NAME', p[1])
+
+def p_expression_and(p):
+ """expression : expression AND_OP expression"""
+ p[0] = ('AND', p[1], p[3])
+
+def p_expression_not(p):
+ """expression : NOT_OP expression"""
+ p[0] = ('NOT', p[2])
+
+def p_expression_or(p):
+ """expression : expression OR_OP expression"""
+ p[0] = ('OR', p[1], p[3])
+
+def p_expression_parens(p):
+ """expression : '(' expression ')'"""
+ p[0] = ('PARENS', p[2])
+
+def p_error(p):
+ """Avoid warnings on stderr"""
+ yacc.restart()
+
+precedence = (
+ ('left', 'OR_OP'),
+ ('left', 'AND_OP'),
+ ('right', 'NOT_OP'),
+)
+
+parser = yacc.yacc()