Class: Collie::Linter::Rules::LeftRecursion
- Defined in:
- lib/collie/linter/rules/left_recursion.rb
Overview
Detects left recursion in grammar rules
Constant Summary
Constants inherited from Base
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 29 |
# 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 = find_rule_like(ast, rule_name) next unless rule add_offense( rule, message: "Rule '#{rule_name}' uses left recursion. This is normal for LR parsers; " \ "review only if targeting LL parser portability." ) end @offenses end |