prettyprint_visitor.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from hutnparser import Tree
  2. class PrintVisitor(object):
  3. def __init__(self):
  4. self.result = ''
  5. pass
  6. def visit(self, tree, level=0):
  7. if isinstance(tree, Tree):
  8. self.result += '\n' + '\t' * level + tree.head
  9. for child in tree.tail:
  10. self.visit(child, level+1)
  11. else:
  12. self.result += '(' + repr(tree) + ')'
  13. def dump(self):
  14. return self.result
  15. class PrettyPrintVisitor(object):
  16. def __init__(self):
  17. self.result = ''
  18. pass
  19. def visit(self, tree, level=0):
  20. if isinstance(tree, Tree):
  21. if tree.is_rule() and len(tree.get_tail()) > 1:
  22. self.result += '\n' + '\t' * level + tree.head
  23. if not tree.head.startswith("implicit_autogenerated_"):
  24. for child in tree.tail:
  25. self.visit(child, level+1)
  26. else:
  27. if not tree.head.startswith("implicit_autogenerated_"):
  28. for child in tree.tail:
  29. self.visit(child, level)
  30. else:
  31. self.result += '\n' + '\t' * level + '(' + repr(tree) + ')'
  32. def dump(self):
  33. return self.result