Explorar el Código

Further improved multiplication sign omission.

Taddeus Kroes hace 14 años
padre
commit
c0a73ab43d
Se han modificado 2 ficheros con 6 adiciones y 2 borrados
  1. 3 2
      line.py
  2. 3 0
      tests/test_line.py

+ 3 - 2
line.py

@@ -168,9 +168,10 @@ def generate_line(root):
             # 2 * a -> 2a
             l = e[0][-1]
             r = e[1][0]
+            left_simple = is_id(left) or is_int(left)
 
-            if r == '(' or (l == ')' and r != '-') \
-                    or ((is_id(left) or is_int(left)) and r.isalpha()):
+            if (r == '(' and left_simple) or (l == ')' and r != '-') \
+                    or (left_simple and r.isalpha()):
                 sep = ''
 
         exp = sep.join(e)

+ 3 - 0
tests/test_line.py

@@ -155,6 +155,9 @@ class TestLine(unittest.TestCase):
         mul = N('*', l2, N('^', l2, a))
         self.assertEquals(generate_line(mul), '2 * 2 ^ a')
 
+        mul = N('*', N('/', a, l2), N('+', a, b))
+        self.assertEquals(generate_line(mul), 'a / 2 * (a + b)')
+
     def test_plus_to_minus(self):
         plus = N('+', L(1), -L(2))
         self.assertEquals(generate_line(plus), '1 - 2')