7267
|
1 # This file contains definitions of expression grammar
|
|
2
|
|
3 def p_expression_binop(t):
|
|
4 '''expression : expression PLUS expression
|
|
5 | expression MINUS expression
|
|
6 | expression TIMES expression
|
|
7 | expression DIVIDE expression'''
|
|
8 if t[2] == '+' : t[0] = t[1] + t[3]
|
|
9 elif t[2] == '-': t[0] = t[1] - t[3]
|
|
10 elif t[2] == '*': t[0] = t[1] * t[3]
|
|
11 elif t[2] == '/': t[0] = t[1] / t[3]
|
|
12
|
|
13 def p_expression_uminus(t):
|
|
14 'expression : MINUS expression %prec UMINUS'
|
|
15 t[0] = -t[2]
|
|
16
|
|
17 def p_expression_group(t):
|
|
18 'expression : LPAREN expression RPAREN'
|
|
19 t[0] = t[2]
|
|
20
|
|
21 def p_expression_number(t):
|
|
22 'expression : NUMBER'
|
|
23 t[0] = t[1]
|
|
24
|
|
25 def p_expression_name(t):
|
|
26 'expression : NAME'
|
|
27 try:
|
|
28 t[0] = names[t[1]]
|
|
29 except LookupError:
|
|
30 print("Undefined name '%s'" % t[1])
|
|
31 t[0] = 0
|