Class: CFGHelper::ChainingFree

Inherits:
Object
  • Object
show all
Defined in:
lib/cfg_helper/chaining_free.rb

Overview

remove chaining rules from CFG

Instance Method Summary collapse

Instance Method Details

#rebuild_rules(current_rules) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/cfg_helper/chaining_free.rb', line 16

def rebuild_rules(current_rules)
  res = {}

  @vars.each { |v| res[v] = [] }

  current_rules.each do |l, r|
    res[l] << r.chars unless res[l].include? r.chars
  end

  res
end

#run(rules, vars) ⇒ Object



6
7
8
9
10
11
12
13
14
# File 'lib/cfg_helper/chaining_free.rb', line 6

def run(rules, vars)
  @rules = rules
  @vars  = vars
  c_r    = _chaining_relation

  # build transivity relation from _chaining_relation(K) as A
  # remove _chaining_relation from rules
  _rebuild_rules + c_r.map { |r| _transitivity_relation r }.reduce(:concat) - c_r
end