소스 검색

Add delete functionality

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Kevin Latimer 6 년 전
부모
커밋
a5625a3be9
1개의 변경된 파일20개의 추가작업 그리고 2개의 파일을 삭제
  1. +20
    -2
      lark/tree.py

+ 20
- 2
lark/tree.py 파일 보기

@@ -95,7 +95,13 @@ class Transformer(object):
return getattr(self, name)

def transform(self, tree):
items = [self.transform(c) if isinstance(c, Tree) else c for c in tree.children]
items = []
for c in tree.children:
if isinstance(c, Tree):
try:
items.append(self.transform(c))
except Erase:
pass
try:
f = self._get_func(tree.data)
except AttributeError:
@@ -110,6 +116,9 @@ class Transformer(object):
return TransformerChain(self, other)


class Erase(Exception):
pass

class TransformerChain(object):
def __init__(self, *transformers):
self.transformers = transformers
@@ -166,7 +175,16 @@ class Transformer_NoRecurse(Transformer):
return f(t)

for subtree in reversed(subtrees):
subtree.children = [_t(c) if isinstance(c, Tree) else c for c in subtree.children]
children = []
for c in subtree.children:
if isinstance(c, Tree):
try:
children.append(_t(c))
except Erase:
pass
else:
children.append(c)
subtree.children = children

return _t(tree)



불러오는 중...
취소
저장