Class: Collie::Analyzer::Reachability

Inherits:
Object
  • Object
show all
Defined in:
lib/collie/analyzer/reachability.rb

Overview

Reachability analysis for grammar rules

Instance Method Summary collapse

Constructor Details

#initialize(grammar) ⇒ Reachability



9
10
11
12
13
# File 'lib/collie/analyzer/reachability.rb', line 9

def initialize(grammar)
  @grammar = grammar
  @reachable = Set.new
  @dependencies = Hash.new { |h, k| h[k] = Set.new }
end

Instance Method Details

#analyze(start_symbol = nil) ⇒ Object



15
16
17
18
19
20
# File 'lib/collie/analyzer/reachability.rb', line 15

def analyze(start_symbol = nil)
  build_dependency_graph
  start = start_symbol || infer_start_symbol
  mark_reachable(start) if start
  @reachable
end

#unreachable_rulesObject



22
23
24
25
# File 'lib/collie/analyzer/reachability.rb', line 22

def unreachable_rules
  all_rules = @grammar.rules.to_set(&:name)
  all_rules - @reachable
end