Class: Lrama::Warnings::ImplicitEmpty
- Inherits:
-
Object
- Object
- Lrama::Warnings::ImplicitEmpty
- Defined in:
- lib/lrama/warnings/implicit_empty.rb
Overview
Warning rationale: Empty rules are easily overlooked and ambiguous
- Empty alternatives like
rule: | "token";can be missed during code reading - Difficult to distinguish between intentional empty rules vs. omissions
- Explicit marking with %empty directive comment improves clarity
Instance Method Summary collapse
-
#initialize(logger, warnings) ⇒ ImplicitEmpty
constructor
A new instance of ImplicitEmpty.
- #warn(grammar) ⇒ Object
Constructor Details
#initialize(logger, warnings) ⇒ ImplicitEmpty
Returns a new instance of ImplicitEmpty.
12 13 14 15 |
# File 'lib/lrama/warnings/implicit_empty.rb', line 12 def initialize(logger, warnings) @logger = logger @warnings = warnings end |
Instance Method Details
#warn(grammar) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/lrama/warnings/implicit_empty.rb', line 18 def warn(grammar) return unless @warnings grammar.rule_builders.each do |builder| if builder.rhs.empty? @logger.warn("warning: empty rule without %empty") end end end |