| @@ -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 .common import ParseError, GrammarError, UnexpectedToken | ||||
| from .lexer import UnexpectedInput, LexError | from .lexer import UnexpectedInput, LexError | ||||
| from .lark import Lark | from .lark import Lark | ||||
| @@ -145,7 +145,7 @@ class ParseTreeBuilder: | |||||
| user_callback_name = rule.alias or rule.origin | user_callback_name = rule.alias or rule.origin | ||||
| try: | try: | ||||
| f = transformer._get_func(user_callback_name) | |||||
| f = getattr(transformer, user_callback_name) | |||||
| except AttributeError: | except AttributeError: | ||||
| f = partial(self.tree_class, user_callback_name) | f = partial(self.tree_class, user_callback_name) | ||||
| @@ -79,9 +79,6 @@ class Visitor(Base): | |||||
| self._call_userfunc(subtree) | self._call_userfunc(subtree) | ||||
| return tree | return tree | ||||
| def __default__(self, tree): | |||||
| pass | |||||
| class InPlaceTransformer(Transformer): | class InPlaceTransformer(Transformer): | ||||
| # def _transform(self, tree): | # def _transform(self, tree): | ||||
| @@ -113,40 +113,6 @@ class SlottedTree(Tree): | |||||
| __slots__ = 'data', 'children', 'rule' | __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): | def pydot__tree_to_png(tree, filename): | ||||
| import pydot | import pydot | ||||
| @@ -20,7 +20,9 @@ logging.basicConfig(level=logging.INFO) | |||||
| from lark.lark import Lark | from lark.lark import Lark | ||||
| from lark.common import GrammarError, ParseError, UnexpectedToken | from lark.common import GrammarError, ParseError, UnexpectedToken | ||||
| from lark.lexer import LexError, UnexpectedInput | 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__) | __path__ = os.path.dirname(__file__) | ||||
| def _read(n, *args): | def _read(n, *args): | ||||