From 26ce48b940aab5ea88a102407310d9fe77d25263 Mon Sep 17 00:00:00 2001 From: Kevin Latimer Date: Mon, 18 Dec 2017 14:51:07 -0500 Subject: [PATCH] Bug fix for Discard and make the syntax more pythonic --- lark/tree.py | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/lark/tree.py b/lark/tree.py index 300e3f6..824bce6 100644 --- a/lark/tree.py +++ b/lark/tree.py @@ -106,11 +106,10 @@ class Transformer(object): def transform(self, tree): items = [] for c in tree.children: - if isinstance(c, Tree): - try: - items.append(self.transform(c)) - except Discard: - pass + try: + items.append(self.transform(c) if isinstance(c, Tree) else c) + except Discard: + pass try: f = self._get_func(tree.data) except AttributeError: @@ -183,16 +182,13 @@ class Transformer_NoRecurse(Transformer): else: return f(t) - for subtree in (subtrees): + for subtree in reversed(subtrees): children = [] for c in subtree.children: - if isinstance(c, Tree): - try: - children.append(_t(c)) - except Discard: - pass - else: - children.append(c) + try: + children.append(_t(c) if isinstance(c, Tree) else c) + except Discard: + pass subtree.children = children return _t(tree)