Class: CFGHelper::EpsilonFree
- Inherits:
-
Object
- Object
- CFGHelper::EpsilonFree
- Defined in:
- lib/cfg_helper/epsilon_free.rb
Overview
used to clear a CFG from the epsilon rules
Instance Method Summary collapse
Instance Method Details
#rebuild_rules(current_rules, rules_epsilon_free) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/cfg_helper/epsilon_free.rb', line 22 def rebuild_rules(current_rules, rules_epsilon_free) missing_vars = current_rules.keys - rules_epsilon_free.keys res = {} rules_epsilon_free.each do |key, rules| res[key] = [] rules.each do |rule| res[key] << rule.chars end end missing_vars.each { |v| res[v] = current_rules[v] } res end |
#run(rules) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/cfg_helper/epsilon_free.rb', line 6 def run(rules) epsilon = _epsilon rules rules_ef = {} return if epsilon.empty? epsilon.each do |e_class| cleared_rules = _cleared_rules rules[e_class] epsilon_free_word = cleared_rules.map(&:join) grammer = _grammer_epsilon_free epsilon_free_word, e_class rules_ef[e_class] = grammer end rules_ef end |