From 6e32ca23cbe5cc42b3ae6183d93ff9886138dd77 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Wed, 14 Jan 2004 19:36:40 +0000 Subject: [PATCH] Apply printing needs work. --- mad | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/mad b/mad index d99123d..b718543 100755 --- a/mad +++ b/mad @@ -194,7 +194,6 @@ def p_expression_binop1(t): | 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): @@ -308,14 +307,20 @@ def print_expr(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])) @@ -341,10 +346,6 @@ def print_expr(t): 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: @@ -369,7 +370,7 @@ if __name__ == '__main__': 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) -- 2.43.0