• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This file contains definitions of expression grammar
2
3def 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
13def p_expression_uminus(t):
14    'expression : MINUS expression %prec UMINUS'
15    t[0] = -t[2]
16
17def p_expression_group(t):
18    'expression : LPAREN expression RPAREN'
19    t[0] = t[2]
20
21def p_expression_number(t):
22    'expression : NUMBER'
23    t[0] = t[1]
24
25def 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
32