| @@ -132,7 +132,7 @@ class GrammarAnalyzer(object): | |||||
| self.FIRST, self.FOLLOW, self.NULLABLE = calculate_sets(rules) | self.FIRST, self.FOLLOW, self.NULLABLE = calculate_sets(rules) | ||||
| def expand_rule(self, rule): | |||||
| def expand_rule(self, source_rule): | |||||
| "Returns all init_ptrs accessible by rule (recursive)" | "Returns all init_ptrs accessible by rule (recursive)" | ||||
| init_ptrs = set() | init_ptrs = set() | ||||
| def _expand_rule(rule): | def _expand_rule(rule): | ||||
| @@ -147,14 +147,7 @@ class GrammarAnalyzer(object): | |||||
| if not new_r.is_term: | if not new_r.is_term: | ||||
| yield new_r | yield new_r | ||||
| for _ in bfs([rule], _expand_rule): | |||||
| for _ in bfs([source_rule], _expand_rule): | |||||
| pass | pass | ||||
| return fzset(init_ptrs) | |||||
| def _first(self, r): | |||||
| if r.is_term: | |||||
| return {r} | |||||
| else: | |||||
| return {rp.next for rp in self.expand_rule(r) if rp.next.is_term} | |||||
| return fzset(init_ptrs) | |||||