]> thyrsus.com Git - mad.git/commitdiff
Apply printing needs work.
authorEric S. Raymond <esr@thyrsus,com>
Wed, 14 Jan 2004 19:36:40 +0000 (19:36 +0000)
committerEric S. Raymond <esr@thyrsus,com>
Wed, 14 Jan 2004 19:36:40 +0000 (19:36 +0000)
mad

diff --git a/mad b/mad
index d99123dc10cc0a450667a784bb8affedb98cb987..b718543dcad3d500c2a2ed32ef88aa8a4897edf9 100755 (executable)
--- 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)