import java.lang.reflect.*;
import java.io.*;
+/** The java classes typically used to represent a parsed grammar AST */
public class MetaGrammarBindings {
- public static @bind class Grammar {
- public NonTerminal get(String s) {
- for(NonTerminal nt : nonterminals)
- if (nt.name.equals(s)) return nt;
- return null;
- }
- public @bind.arg NonTerminal[] nonterminals;
+ public static class Grammar extends HashMap<String,NonTerminal> {
+ public @bind Grammar(NonTerminal[] nonterminals) {
+ for(NonTerminal nt : nonterminals) this.put(nt.name, nt); }
public String toString() {
String ret = "[ ";
- for(NonTerminal nt : nonterminals) ret += nt + ", ";
+ for(NonTerminal nt : values()) ret += nt + ", ";
return ret + " ]";
}
}