diff options
Diffstat (limited to 'lib/racc/grammar.rb')
| -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 |
