Class: CFG

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

Overview

Samll CFG impletation Generate words and check if words are the @lang generates random words

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(alphabet, vars, start_var, rules) ⇒ CFG

Returns a new instance of CFG.



17
18
19
20
21
22
23
# File 'lib/cfg.rb', line 17

def initialize(alphabet, vars, start_var, rules)
  @start_var  = start_var
  @rules      = _rules rules
  @rnd_words  = []
  @vars       = vars
  @alphabet   = alphabet
end

Instance Attribute Details

#chomsky_nf_rulesObject (readonly)

Returns the value of attribute chomsky_nf_rules.



13
14
15
# File 'lib/cfg.rb', line 13

def chomsky_nf_rules
  @chomsky_nf_rules
end

#cyk_matrixObject (readonly)

Returns the value of attribute cyk_matrix.



13
14
15
# File 'lib/cfg.rb', line 13

def cyk_matrix
  @cyk_matrix
end

#is_in_lObject (readonly)

Returns the value of attribute is_in_l.



13
14
15
# File 'lib/cfg.rb', line 13

def is_in_l
  @is_in_l
end

#rnd_wordsObject (readonly)

Returns the value of attribute rnd_words.



13
14
15
# File 'lib/cfg.rb', line 13

def rnd_words
  @rnd_words
end

#rulesObject

Returns the value of attribute rules.



12
13
14
# File 'lib/cfg.rb', line 12

def rules
  @rules
end

#rules_cfObject (readonly)

Returns the value of attribute rules_cf.



13
14
15
# File 'lib/cfg.rb', line 13

def rules_cf
  @rules_cf
end

#rules_cf_resObject (readonly)

Returns the value of attribute rules_cf_res.



13
14
15
# File 'lib/cfg.rb', line 13

def rules_cf_res
  @rules_cf_res
end

#rules_efObject (readonly)

Returns the value of attribute rules_ef.



13
14
15
# File 'lib/cfg.rb', line 13

def rules_ef
  @rules_ef
end

#rules_ef_resObject (readonly)

Returns the value of attribute rules_ef_res.



13
14
15
# File 'lib/cfg.rb', line 13

def rules_ef_res
  @rules_ef_res
end

#start_varObject

Returns the value of attribute start_var.



12
13
14
# File 'lib/cfg.rb', line 12

def start_var
  @start_var
end

Instance Method Details

#chaining_freeObject



43
44
45
46
47
# File 'lib/cfg.rb', line 43

def chaining_free
  c_free        = CFGHelper::ChainingFree.new
  @rules_cf_res = c_free.run @rules, @vars
  @rules_cf     = c_free.rebuild_rules @rules_cf_res
end

#chomsky_nf(custom_rule) ⇒ Object



49
50
51
52
53
54
# File 'lib/cfg.rb', line 49

def chomsky_nf(custom_rule)
  chomsky = CFGHelper::ChomskyNF.new
  rules   = chomsky.run custom_rule || @rules, @alphabet

  @chomsky_nf_rules = chomsky.simplify rules
end

#cyk_run(word) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/cfg.rb', line 56

def cyk_run(word)
  cyk = CFGHelper::CYK.new word, @chomsky_nf_rules

  cyk.run

  @cyk_matrix = cyk.matrix
  @is_in_l    = cyk.is_in_l
end

#epsilon_free(custom_rule) ⇒ Object



37
38
39
40
41
# File 'lib/cfg.rb', line 37

def epsilon_free(custom_rule)
  e_free        = CFGHelper::EpsilonFree.new
  @rules_ef_res = e_free.run custom_rule || @rules
  @rules_ef     = e_free.rebuild_rules @rules, @rules_ef_res
end

#generate_words(count) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/cfg.rb', line 25

def generate_words(count)
  @rnd_words = []

  loop do
    word = _expand @start_var

    @rnd_words << word unless @rnd_words.include? word

    break if @rnd_words.size == count
  end
end