# File Compilerbau2.rb, line 266 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 } end