Browse Source

Snap more things into place

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.0
Erez Shinan 7 years ago
parent
commit
f69bceb335
5 changed files with 6 additions and 40 deletions
  1. +2
    -1
      lark/__init__.py
  2. +1
    -1
      lark/parse_tree_builder.py
  3. +0
    -3
      lark/transformers.py
  4. +0
    -34
      lark/tree.py
  5. +3
    -1
      tests/test_parser.py

+ 2
- 1
lark/__init__.py View File

@@ -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


+ 1
- 1
lark/parse_tree_builder.py View File

@@ -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)



+ 0
- 3
lark/transformers.py View File

@@ -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):


+ 0
- 34
lark/tree.py View File

@@ -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


+ 3
- 1
tests/test_parser.py View File

@@ -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):


Loading…
Cancel
Save