From 97d1a381e112e843ff014a05a083e42165b7bb01 Mon Sep 17 00:00:00 2001 From: Marc-Andre Lafortune Date: Thu, 13 Aug 2020 21:50:16 -0400 Subject: [Fixes #137] Improve reporting --- lib/racc/grammar.rb | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'lib') 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 -- cgit v1.2.3