diff --git a/lark/parsers/resolve_ambig.py b/lark/parsers/resolve_ambig.py index f60a3f0..9c859b5 100644 --- a/lark/parsers/resolve_ambig.py +++ b/lark/parsers/resolve_ambig.py @@ -30,11 +30,15 @@ def _compare_priority(tree1, tree2): tree1.iter_subtrees() def _compare_drv(tree1, tree2): - try: - rule1, rule2 = tree1.rule, tree2.rule - except AttributeError: - # Probably non-trees, or user trees that weren't created by the parse (better way to distinguish?) + rule1 = getattr(tree1, 'rule', None) + rule2 = getattr(tree2, 'rule', None) + + if None == rule1 == rule2: return compare(tree1, tree2) + elif rule1 is None: + return -1 + elif rule2 is None: + return 1 assert tree1.data != '_ambig' assert tree2.data != '_ambig'