| expression MINUS expression
| expression TIMES expression
| expression DIVIDE expression'''
- print "Foo"
t[0] = (t[2].lower(), t[1], t[3])
def p_expression_binop2(t):
res += "[" + dim[1] + "]"
return res
elif t[0] == 'apply':
- return t[1] + `t[2]`
- elif t[0] == 'plus':
- return "(%s + %s)" % (print_expr(t[1]), print_expr(t[2]))
- elif t[0] == 'minus':
- return "(%s - %s)" % (print_expr(t[1]), print_expr(t[2]))
- elif t[0] == 'times':
+ return t[1][:-1] + `t[2]`
+ elif t[0] == '+':
+ if len(t) == 2:
+ return "%s" % print_expr(t[1])
+ else:
+ return "(%s + %s)" % (print_expr(t[1]), print_expr(t[2]))
+ elif t[0] == '-':
+ if len(t) == 2:
+ return "-%s" % print_expr(t[1])
+ else:
+ return "(%s - %s)" % (print_expr(t[1]), print_expr(t[2]))
+ elif t[0] == '*':
return "(%s * %s)" % (print_expr(t[1]), print_expr(t[2]))
- elif t[0] == 'divide':
+ elif t[0] == '/':
return "(%s / %s)" % (print_expr(t[1]), print_expr(t[2]))
elif t[0] == 'l':
return "(%s < %s)" % (print_expr(t[1]), print_expr(t[2]))
return "(%s == %s)" % (print_expr(t[1]), print_expr(t[2]))
elif t[0] == 'abs':
return "abs(%s)" % print_expr(t[1])
- elif t[0] == '+':
- return "%s" % print_expr(t[1])
- elif t[0] == '-':
- return "(-%s)" % print_expr(t[1])
elif t[0] in ('intnum', 'floatnum'):
return t[1]
else:
source = sys.stdin.read()
# Grotty hack to add end-of-statement delimiters
source = re.sub("\n([A-Z]|\t)", " ;\n\\1", source).rstrip() + " ;\n"
- yacc.parse(source, debug=1)
+ yacc.parse(source)
analyze(deck)