X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammarBindings.java;h=5168c34746493074c51bf204af98067a19428eea;hp=3ba3d2af371918c2496bcf0b52598ca8f05b9edd;hb=b5ae4ceb563fd4d52514ef4f4206c5c2be8140ca;hpb=f7d5c2384df4e9e586f3c3465a6e6e0f4212115c diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index 3ba3d2a..5168c34 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -9,17 +9,14 @@ import java.lang.annotation.*; 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 { + 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 + " ]"; } } @@ -47,8 +44,8 @@ public class MetaGrammarBindings { } public static class NonTerminal extends Un { public String name = null; - public @bind NonTerminal(@bind.arg("Word") String name, - @bind.arg("RHS") Seq[][] sequences) { + public @bind NonTerminal(@bind.arg String name, + @bind.arg Seq[][] sequences) { this.name = name; this.sequences = sequences; }