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 .common import ParseError, GrammarError, UnexpectedToken
from .lexer import UnexpectedInput, LexError from .lexer import UnexpectedInput, LexError
from .lark import Lark 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 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)




+ 0
- 3
lark/transformers.py View File

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


+ 0
- 34
lark/tree.py View File

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


+ 3
- 1
tests/test_parser.py View File

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


Loading…
Cancel
Save