Files

28 lines
984 B
Python

from antlr4.Utils import escapeWhitespace
from antlr4.tree.Tree import Tree
from antlr4.tree.Trees import Trees
# need forward declaration
Parser = None
class TreesUser(Trees):
# Print out a whole tree in prettier form
# Based on Trees.toStringTree()
# indent is the number of indents to use in the display
@classmethod
def PrettyPrint(cls, t:Tree, ruleNames:list=None, recog:Parser=None, indent:int=0):
# indentation is the indent to actually display
indentation = ''
for n in range(indent):
indentation += ' '
if recog is not None:
ruleNames = recog.ruleNames
s = escapeWhitespace(cls.getNodeText(t, ruleNames), False)
retval = indentation + s + "\n"
if t.getChildCount()>0:
# we have children to deal with
for i in range(0, t.getChildCount()):
retval += cls.PrettyPrint(t.getChild(i), ruleNames, indent=indent+1)
return retval