From f69bceb3354c01f427535e94af15de62247c7436 Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Fri, 13 Apr 2018 12:02:01 +0300 Subject: [PATCH] Snap more things into place --- lark/__init__.py | 3 ++- lark/parse_tree_builder.py | 2 +- lark/transformers.py | 3 --- lark/tree.py | 34 ---------------------------------- tests/test_parser.py | 4 +++- 5 files changed, 6 insertions(+), 40 deletions(-) diff --git a/lark/__init__.py b/lark/__init__.py index af6f7b5..a2a67b9 100644 --- a/lark/__init__.py +++ b/lark/__init__.py @@ -1,4 +1,5 @@ -from .tree import Tree, Transformer, InlineTransformer +from .tree import Tree +from .transformers import Transformer from .common import ParseError, GrammarError, UnexpectedToken from .lexer import UnexpectedInput, LexError from .lark import Lark diff --git a/lark/parse_tree_builder.py b/lark/parse_tree_builder.py index 1acfe2f..ea26347 100644 --- a/lark/parse_tree_builder.py +++ b/lark/parse_tree_builder.py @@ -145,7 +145,7 @@ class ParseTreeBuilder: user_callback_name = rule.alias or rule.origin try: - f = transformer._get_func(user_callback_name) + f = getattr(transformer, user_callback_name) except AttributeError: f = partial(self.tree_class, user_callback_name) diff --git a/lark/transformers.py b/lark/transformers.py index 033d2f4..245b733 100644 --- a/lark/transformers.py +++ b/lark/transformers.py @@ -79,9 +79,6 @@ class Visitor(Base): self._call_userfunc(subtree) return tree - def __default__(self, tree): - pass - class InPlaceTransformer(Transformer): # def _transform(self, tree): diff --git a/lark/tree.py b/lark/tree.py index cf88293..c478ae6 100644 --- a/lark/tree.py +++ b/lark/tree.py @@ -113,40 +113,6 @@ class SlottedTree(Tree): __slots__ = 'data', 'children', 'rule' -###{standalone -class Transformer(object): - def _get_func(self, name): - return getattr(self, name) - - def transform(self, tree): - items = [] - for c in tree.children: - try: - items.append(self.transform(c) if isinstance(c, Tree) else c) - except Discard: - pass - try: - f = self._get_func(tree.data) - except AttributeError: - return self.__default__(tree.data, items) - else: - return f(items) - - def __default__(self, data, children): - return Tree(data, children) - - def __mul__(self, other): - return TransformerChain(self, other) - - -class InlineTransformer(Transformer): - def _get_func(self, name): # use super()._get_func - return inline_args(getattr(self, name)).__get__(self) - - - -###} - def pydot__tree_to_png(tree, filename): import pydot diff --git a/tests/test_parser.py b/tests/test_parser.py index 4aaea93..6ffe1ad 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -20,7 +20,9 @@ logging.basicConfig(level=logging.INFO) from lark.lark import Lark from lark.common import GrammarError, ParseError, UnexpectedToken from lark.lexer import LexError, UnexpectedInput -from lark.tree import Tree, Transformer +from lark.tree import Tree +from lark.transformers import Transformer_Children as Transformer +# from lark.tree import Transformer __path__ = os.path.dirname(__file__) def _read(n, *args):