33from collections import Counter , defaultdict
44from typing import List , Dict , Iterator , FrozenSet , Set
55
6- from ..utils import bfs , fzset , classify
6+ from ..utils import bfs , fzset , classify , OrderedSet
77from ..exceptions import GrammarError
88from ..grammar import Rule , Terminal , NonTerminal , Symbol
99from ..common import ParserConf
@@ -177,13 +177,13 @@ def __init__(self, parser_conf: ParserConf, debug: bool=False, strict: bool=Fals
177177
178178 self .FIRST , self .FOLLOW , self .NULLABLE = calculate_sets (rules )
179179
180- def expand_rule (self , source_rule : NonTerminal , rules_by_origin = None ) -> State :
180+ def expand_rule (self , source_rule : NonTerminal , rules_by_origin = None ) -> OrderedSet [ RulePtr ] :
181181 "Returns all init_ptrs accessible by rule (recursive)"
182182
183183 if rules_by_origin is None :
184184 rules_by_origin = self .rules_by_origin
185185
186- init_ptrs = set ()
186+ init_ptrs = OrderedSet [ RulePtr ] ()
187187 def _expand_rule (rule : NonTerminal ) -> Iterator [NonTerminal ]:
188188 assert not rule .is_term , rule
189189
@@ -200,4 +200,4 @@ def _expand_rule(rule: NonTerminal) -> Iterator[NonTerminal]:
200200 for _ in bfs ([source_rule ], _expand_rule ):
201201 pass
202202
203- return fzset ( init_ptrs )
203+ return init_ptrs
0 commit comments