Class: Lrama::Warnings::NameConflicts
- Inherits:
-
Object
- Object
- Lrama::Warnings::NameConflicts
- Defined in:
- lib/lrama/warnings/name_conflicts.rb
Overview
Warning rationale: Parameterized rule names conflicting with symbol names
- When a %rule name is identical to a terminal or non-terminal symbol name, it reduces grammar readability and may cause unintended behavior
- Detecting these conflicts helps improve grammar definition quality
Instance Method Summary collapse
-
#initialize(logger, warnings) ⇒ NameConflicts
constructor
A new instance of NameConflicts.
- #warn(grammar) ⇒ Object
Constructor Details
#initialize(logger, warnings) ⇒ NameConflicts
Returns a new instance of NameConflicts.
12 13 14 15 |
# File 'lib/lrama/warnings/name_conflicts.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 |
# File 'lib/lrama/warnings/name_conflicts.rb', line 18 def warn(grammar) return unless @warnings return if grammar.parameterized_rules.empty? symbol_names = collect_symbol_names(grammar) check_conflicts(grammar.parameterized_rules, symbol_names) end |