Class: Collie::Linter::Rules::LeftRecursion
- Defined in:
- lib/collie/linter/rules/left_recursion.rb
Overview
Detects left recursion in grammar rules
Instance Method Summary collapse
Methods inherited from Base
#autocorrectable?, #initialize
Constructor Details
This class inherits a constructor from Collie::Linter::Base
Instance Method Details
#check(ast, _context = {}) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/collie/linter/rules/left_recursion.rb', line 13 def check(ast, _context = {}) analyzer = Analyzer::Recursion.new(ast) result = analyzer.analyze result[:left_recursive].each do |rule_name| rule = ast.rules.find { |r| r.name == rule_name } next unless rule add_offense( rule, message: "Rule '#{rule_name}' uses left recursion (consider using right recursion for LL parsers)" ) end @offenses end |