Jelajahi Sumber

Added check that prevents that multiplication sign is not printed before a negated scope node.

Taddeus Kroes 14 tahun lalu
induk
melakukan
4f3552b459
2 mengubah file dengan 5 tambahan dan 3 penghapusan
  1. 3 1
      line.py
  2. 2 2
      tests/test_line.py

+ 3 - 1
line.py

@@ -283,11 +283,13 @@ def generate_line(root):
             right_paren = e[1][0] == '('
 
             if (is_id(left) or left_paren or is_int(left)) \
-                    and (is_id(right) or right_paren):
+                    and ((not right.negated and is_id(right)) or right_paren):
                 sep = ''
 
         exp = sep.join(e)
 
+        #if node.negated:
+        # FIXME: Keep it this way?
         if node.negated and op != '*':
             exp = '(' + exp + ')'
 

+ 2 - 2
tests/test_line.py

@@ -50,8 +50,8 @@ class TestLine(unittest.TestCase):
 
     def test_multiplication_identifiers(self):
         a, b = L('a'), L('b')
-        mul = N('*', a, b)
-        self.assertEquals(generate_line(mul), 'ab')
+        self.assertEquals(generate_line(N('*', a, b)), 'ab')
+        self.assertEquals(generate_line(N('*', a, -b)), 'a * -b')
 
     def test_multiplication_constant_identifier(self):
         l0, a = L(2), L('a')