summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMarc-Andre Lafortune <github@marc-andre.ca>2020-08-13 21:50:16 -0400
committerHiroshi SHIBATA <hsbt@ruby-lang.org>2020-09-28 18:07:24 +0900
commit97d1a381e112e843ff014a05a083e42165b7bb01 (patch)
tree5c995202ecb3de5101ef45e9bc749537f7539faf /lib
parent3da3c2747feb0c4a122182792150a49012bed1a6 (diff)
[Fixes #137] Improve reporting
Diffstat (limited to 'lib')
-rw-r--r--lib/racc/grammar.rb34
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