diff options
author | Marc-Andre Lafortune <github@marc-andre.ca> | 2020-08-13 21:50:16 -0400 |
---|---|---|
committer | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2020-09-28 18:07:24 +0900 |
commit | 97d1a381e112e843ff014a05a083e42165b7bb01 (patch) | |
tree | 5c995202ecb3de5101ef45e9bc749537f7539faf /lib | |
parent | 3da3c2747feb0c4a122182792150a49012bed1a6 (diff) |
[Fixes #137] Improve reporting
Diffstat (limited to 'lib')
-rw-r--r-- | lib/racc/grammar.rb | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/lib/racc/grammar.rb b/lib/racc/grammar.rb index fa81534338..3444dfcce3 100644 --- a/lib/racc/grammar.rb +++ b/lib/racc/grammar.rb @@ -86,14 +86,15 @@ module Racc end def n_useless_nonterminals - @n_useless_nonterminals ||= - begin - n = 0 - @symboltable.each_nonterminal do |sym| - n += 1 if sym.useless? - end - n - end + @n_useless_nonterminals ||= each_useless_nonterminal.count + end + + def each_useless_nonterminal + return to_enum __method__ unless block_given? + + @symboltable.each_nonterminal do |sym| + yield sym if sym.useless? + end end def useless_rule_exist? @@ -101,14 +102,15 @@ module Racc end def n_useless_rules - @n_useless_rules ||= - begin - n = 0 - each do |r| - n += 1 if r.useless? - end - n - end + @n_useless_rules ||= each_useless_rule.count + end + + def each_useless_rule + return to_enum __method__ unless block_given? + + each do |r| + yield r if r.useless? + end end def nfa |