123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from hutnparser import Tree
- from visitor import Visitor
- class PrintVisitor(Visitor):
- def __init__(self, args):
- Visitor.__init__(self, args)
- self.result = ''
- pass
- def visit(self, tree, level=0):
- if isinstance(tree, Tree):
- self.result += '\n' + '\t' * level + tree.head
- for child in tree.tail:
- self.visit(child, level+1)
- else:
- self.result += '(' + repr(tree) + ')'
- def dump(self):
- return self.result
- class PrettyPrintVisitor(Visitor):
- def __init__(self, args):
- Visitor.__init__(self, args)
- self.result = ""
- def visit(self, tree, level=0):
- if isinstance(tree, Tree):
- if tree.is_rule() and len(tree.get_tail()) > 1:
- self.result += '\n' + '\t' * level + tree.head
- if not tree.head.startswith("implicit_autogenerated_"):
- for child in tree.tail:
- self.visit(child, level+1)
- else:
- if not tree.head.startswith("implicit_autogenerated_"):
- for child in tree.tail:
- self.visit(child, level)
- else:
- self.result += '\n' + '\t' * level + '(' + repr(tree) + ')'
- def dump(self):
- return self.result
|