Source code for pycropml.transpiler.antlr_py.simplifyAntlrTree
from pycropml.transpiler.antlr_py.parse import *
from pycropml.transpiler.helpers import *
import pycropml.transpiler.antlr_py
[docs]
def process_tree( antlr_tree: ParseTree,
base_visitor_cls: Type["BaseAstVisitor"] = None,
transformer_cls = None,
simplify=True,
) -> "BaseNode":
cls_registry = BaseNodeRegistry()
if not base_visitor_cls:
base_visitor_cls = BaseAstVisitor
elif not issubclass(base_visitor_cls, BaseAstVisitor):
raise ValueError("base_visitor_cls must be a BaseAstVisitor subclass")
tree = base_visitor_cls(cls_registry).visit(antlr_tree)
if transformer_cls is not None:
if not issubclass(transformer_cls, BaseNodeTransformer):
raise ValueError("transformer_cls must be a BaseNodeTransformer subclass")
tree = transformer_cls(cls_registry).visit(tree)
if simplify:
tree = simplify_tree(tree, unpack_lists=False)
return tree