def Rule.from_Yacc(input)
i = 1
output = ""
zeilen = input.split("\n")
name = zeilen[0].split[1]
output += name + " -> " + name + i.to_s + "\n"
zeilen.delete_at(0)
zeilen.each do |zeile|
optoken = zeile.split[0]
operator = zeile.split[1]
if optoken == "left"
output += name + i.to_s + " -> " + name + i.to_s + " " + operator + " " + name + (i+1).to_s + "\n"
output += " " * (name + i.to_s).length + " | " + name + (i+1).to_s + "\n"
i += 1
elsif optoken == "right"
output += name + i.to_s + " -> " + name + (i+1).to_s + " " + operator + " " + name + i.to_s + "\n"
output += " " * (name + i.to_s).length + " | " + name + (i+1).to_s + "\n"
i += 1
elsif optoken == "none"
output += name + i.to_s + " -> " + name + (i+1).to_s + " " + operator + " " + name + (i+1).to_s + "\n"
output += " " * (name + i.to_s).length + " | " + name + (i+1).to_s + "\n"
i += 1
elsif optoken == "pre"
output += name + i.to_s + " -> " + operator + " " + name + i.to_s + " " + "\n"
output += " " * (name + i.to_s).length + " | " + name + (i+1).to_s + "\n"
i += 1
elsif optoken == "post"
output += name + i.to_s + " -> " + name + i.to_s + " " + operator + " " + name + (i+1).to_s + "\n"
output += " " * (name + i.to_s).length + " | " + name + (i+1).to_s + "\n"
i += 1
end
end
output += name + i.to_s + " -> " + "(" + name + 1.to_s + ")" +"\n"
atome = zeilen[zeilen.size-1].split(/,\s|\s/)
atome.delete_at(0)
atome.each do |atom|
output += " " * (name + i.to_s).length + " | " + atom + "\n"
end
output
end