|
@@ -1,12 +1,11 @@
|
|
|
-from node import Node
|
|
|
|
|
|
|
+from node import Leaf
|
|
|
|
|
|
|
|
def generate_line(root):
|
|
def generate_line(root):
|
|
|
"""
|
|
"""
|
|
|
Print an expression tree in a single text line. Where needed, add
|
|
Print an expression tree in a single text line. Where needed, add
|
|
|
parentheses.
|
|
parentheses.
|
|
|
|
|
|
|
|
- >>> from node import Leaf
|
|
|
|
|
-
|
|
|
|
|
|
|
+ >>> from node import Node, Leaf
|
|
|
>>> l0, l1 = Leaf(1), Leaf(2)
|
|
>>> l0, l1 = Leaf(1), Leaf(2)
|
|
|
>>> plus = Node('+', l0, l1)
|
|
>>> plus = Node('+', l0, l1)
|
|
|
>>> print generate_line(plus)
|
|
>>> print generate_line(plus)
|
|
@@ -51,7 +50,7 @@ def generate_line(root):
|
|
|
"""
|
|
"""
|
|
|
Get the associativity of an operator node.
|
|
Get the associativity of an operator node.
|
|
|
"""
|
|
"""
|
|
|
- if isinstance(node, Node) and len(node) > 1:
|
|
|
|
|
|
|
+ if not isinstance(node, Leaf) and len(node) > 1:
|
|
|
op = node.title()
|
|
op = node.title()
|
|
|
|
|
|
|
|
for i, group in enumerate(operators):
|
|
for i, group in enumerate(operators):
|
|
@@ -68,7 +67,7 @@ def generate_line(root):
|
|
|
"""
|
|
"""
|
|
|
s = node.title()
|
|
s = node.title()
|
|
|
|
|
|
|
|
- if not isinstance(node, Node):
|
|
|
|
|
|
|
+ if isinstance(node, Leaf):
|
|
|
return s
|
|
return s
|
|
|
|
|
|
|
|
arity = len(node)
|
|
arity = len(node)
|