From 4c61aaf1dc09aa46fe0e4248e326bd7cf78fd2b7 Mon Sep 17 00:00:00 2001 From: Erez Sh Date: Mon, 4 May 2020 13:30:47 +0300 Subject: [PATCH] Small refactoring for iter_subtrees --- lark/tree.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lark/tree.py b/lark/tree.py index e2e41d9..84c996a 100644 --- a/lark/tree.py +++ b/lark/tree.py @@ -62,14 +62,12 @@ class Tree(object): queue = [self] subtrees = OrderedDict() for subtree in queue: - if id(subtree) in subtrees: - continue subtrees[id(subtree)] = subtree - queue += [c for c in reversed(subtree.children) if isinstance(c, Tree)] + queue += [c for c in reversed(subtree.children) + if isinstance(c, Tree) and id(c) not in subtrees] del queue - for subtree in reversed(list(subtrees.values())): - yield subtree + return reversed(list(subtrees.values())) def find_pred(self, pred): "Find all nodes where pred(tree) == True"