1 # -----------------------------------------------------------------------------
4 # Bad precedence specifier
5 # -----------------------------------------------------------------------------
9 sys
.path
.insert(0,"..")
10 import ply
.yacc
as yacc
12 from calclex
import tokens
20 def p_statement_assign(t
):
21 'statement : NAME EQUALS expression'
24 def p_statement_expr(t
):
25 'statement : expression'
28 def p_expression_binop(t
):
29 '''expression : expression PLUS expression
30 | expression MINUS expression
31 | expression TIMES expression
32 | expression DIVIDE expression'''
33 if t
[2] == '+' : t
[0] = t
[1] + t
[3]
34 elif t
[2] == '-': t
[0] = t
[1] - t
[3]
35 elif t
[2] == '*': t
[0] = t
[1] * t
[3]
36 elif t
[3] == '/': t
[0] = t
[1] / t
[3]
38 def p_expression_uminus(t
):
39 'expression : MINUS expression %prec UMINUS'
42 def p_expression_group(t
):
43 'expression : LPAREN expression RPAREN'
46 def p_expression_number(t
):
50 def p_expression_name(t
):
55 print "Undefined name '%s'" % t
[1]
59 print "Syntax error at '%s'" % t
.value