package de.fuberlin.projecta.parser; import java.util.EnumSet; import java.util.HashMap; import java.util.Map; public enum NonTerminal { program ("program"), funcs ("funcs"), func ("func"), func_ ("func'"), optparams ("optparams"), params ("params"), params_ ("params'"), block ("block"), decls ("decls"), decl ("decl"), type ("type"), type_ ("type'"), stmts ("stmts"), stmt ("stmt"), stmt_ ("stmt'"), stmt__ ("stmt''"), loc ("loc"), loc_ ("loc'"), loc__ ("loc''"), assign ("assign"), assign_ ("assign'"), bool ("bool"), bool_ ("bool'"), join ("join"), join_ ("join'"), equality ("equality"), equality_ ("equality'"), rel ("rel"), rel_ ("rel'"), expr ("expr"), expr_ ("expr'"), term ("term"), term_ ("term'"), unary ("unary"), factor ("factor"), factor_ ("factor'"), optargs ("optargs"), args ("args"), args_ ("args'"); private static Map<String,NonTerminal> nonTerminalSymbol2NonTerminal = new HashMap<String, NonTerminal>(); static{ for(NonTerminal t : EnumSet.allOf(NonTerminal.class)){ nonTerminalSymbol2NonTerminal.put(t.getNonTerminalSymbol(), t); } } private final String nonTerminalSymbol; private NonTerminal(String nonTerminalSymbol) { this.nonTerminalSymbol=nonTerminalSymbol; } public String getNonTerminalSymbol() { return this.nonTerminalSymbol; } public static NonTerminal byNonTerminalSymbol(String s) { return nonTerminalSymbol2NonTerminal.get(s); } }