def initialize(gram)
@rules = Hash.new
@terminals = Hash.new
@nonterminals = Hash.new
gram.split(/\s*\n\s*\n\s*/).each do |rule|
newrule = Rule.new(rule)
if @rules.size == 0
@startsymbol = newrule.getSymbol
end
@rules[newrule.getSymbol] = newrule
@nonterminals[newrule.getSymbol.getName] = newrule.getSymbol
end
@rules.each_value {|rule|
rule.getAlts.each do |alt|
alt.getSymbols.each do |symb|
if @nonterminals.has_key?(symb.getName) == false
@terminals[ symb.getName ]= symb
end
end
end
}
@epsilonSymbole = epsilon_Symbole;
end