|
|
@@ -173,6 +173,7 @@ def generate_line(root):
|
|
|
left = rightmost_node(left)
|
|
|
|
|
|
# a * b -> ab
|
|
|
+ # a * a -> a * a
|
|
|
# a * 2 -> a * 2
|
|
|
# a * (b) -> a(b)
|
|
|
# (a) * b -> (a)b
|
|
|
@@ -181,18 +182,21 @@ def generate_line(root):
|
|
|
# a * sin(b) -> a sin(b)
|
|
|
left_char = content[left][-1]
|
|
|
right_char = content[right][0]
|
|
|
- left_paren = lparens or left_char in ')]}'
|
|
|
- right_paren = rparens or right_char in '([{'
|
|
|
- right_alpha = right_char.isalpha()
|
|
|
- left_simple = is_id(left) or is_int(left)
|
|
|
-
|
|
|
- if left_paren or (right_paren and left_simple) \
|
|
|
- or (is_id(left) and is_id(right)) \
|
|
|
- or (is_int(left) and right_alpha):
|
|
|
- return ''
|
|
|
-
|
|
|
- if is_id(left) and right_alpha:
|
|
|
- return ' '
|
|
|
+
|
|
|
+ if lparens or rparens or left_char != right_char:
|
|
|
+ left_paren = lparens or left_char in ')]}'
|
|
|
+ right_paren = rparens or right_char in '([{'
|
|
|
+ left_alpha = left_char.isalpha()
|
|
|
+ right_alpha = right_char.isalpha()
|
|
|
+ left_simple = is_id(left) or is_int(left)
|
|
|
+
|
|
|
+ if left_paren or (right_paren and left_simple) \
|
|
|
+ or (is_id(left) and is_id(right)) \
|
|
|
+ or (is_int(left) and right_alpha):
|
|
|
+ return ''
|
|
|
+
|
|
|
+ if is_id(left) and right_alpha:
|
|
|
+ return ' '
|
|
|
|
|
|
return ' * '
|
|
|
|