Browse Source

BUGFIX: Non-linearity in tree construction, causing performance issues for large inputs (Issue #94)

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.5
Erez Shinan 6 years ago
parent
commit
d5c617f0fe
2 changed files with 5 additions and 2 deletions
  1. +4
    -1
      lark/parse_tree_builder.py
  2. +1
    -1
      lark/tree.py

+ 4
- 1
lark/parse_tree_builder.py View File

@@ -61,7 +61,10 @@ class ChildFilter:
filtered = []
for i, to_expand in self.to_include:
if to_expand:
filtered += children[i].children
if filtered:
filtered += children[i].children
else: # Optimize for left-recursion
filtered = children[i].children
else:
filtered.append(children[i])



+ 1
- 1
lark/tree.py View File

@@ -11,7 +11,7 @@ from .utils import inline_args
class Tree(object):
def __init__(self, data, children):
self.data = data
self.children = list(children)
self.children = children

def __repr__(self):
return 'Tree(%s, %s)' % (self.data, self.children)


Loading…
Cancel
Save