checkpoint
[sbp.git] / src / edu / berkeley / sbp / meta / MetaGrammarBindings.java
index f780e80..5168c34 100644 (file)
@@ -11,18 +11,12 @@ import java.io.*;
 
 /** The java classes typically used to represent a parsed grammar AST */
 public class MetaGrammarBindings {
-    public static class Grammar {
-        public NonTerminal get(String s) {
-            for(NonTerminal nt : nonterminals)
-                if (nt.name.equals(s)) return nt;
-            return null;
-        }
-        public NonTerminal[] nonterminals;
-        public Grammar() { }
-        public @bind Grammar(NonTerminal[] nonterminals) { this.nonterminals = 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 + " ]";
         }
     }