1 # -----------------------------------------------------------------------------
4 # A grammar with an unused rule
5 # -----------------------------------------------------------------------------
9 from calclex
import tokens
13 ('left','PLUS','MINUS'),
14 ('left','TIMES','DIVIDE'),
21 def p_statement_assign(t
):
22 'statement : NAME EQUALS expression'
25 def p_statement_expr(t
):
26 'statement : expression'
29 def p_expression_binop(t
):
30 '''expression : expression PLUS expression
31 | expression MINUS expression
32 | expression TIMES expression
33 | expression DIVIDE expression'''
34 if t
[2] == '+' : t
[0] = t
[1] + t
[3]
35 elif t
[2] == '-': t
[0] = t
[1] - t
[3]
36 elif t
[2] == '*': t
[0] = t
[1] * t
[3]
37 elif t
[3] == '/': t
[0] = t
[1] / t
[3]
39 def p_expression_uminus(t
):
40 'expression : MINUS expression %prec UMINUS'
43 def p_expression_group(t
):
44 'expression : LPAREN expression RPAREN'
47 def p_expression_number(t
):
51 def p_expression_name(t
):
56 print "Undefined name '%s'" % t
[1]
60 'exprlist : exprlist COMMA expression'
64 'exprlist : expression'
69 print "Syntax error at '%s'" % t
.value