From 93302d7ceb8dbf28c401d2e5523935715b241fa3 Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Tue, 31 Oct 2017 12:27:17 +0200 Subject: [PATCH] Important optimization for fix --- lark/parsers/earley.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lark/parsers/earley.py b/lark/parsers/earley.py index a4b469e..0722fec 100644 --- a/lark/parsers/earley.py +++ b/lark/parsers/earley.py @@ -181,12 +181,13 @@ class Parser: while True: to_predict = {x.expect for x in column.to_predict.get_news() if x.ptr} # if not part of an already predicted batch - to_reduce = column.to_reduce.get_news() + to_reduce = set(column.to_reduce.get_news()) if not (to_predict or to_reduce): break for nonterm in to_predict: column.add( predict(nonterm, column) ) + for item in to_reduce: new_items = list(complete(item)) for new_item in new_items: