From b5ae4ceb563fd4d52514ef4f4206c5c2be8140ca Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 6 Jul 2006 01:57:39 -0400 Subject: [PATCH] checkpoint darcs-hash:20060706055739-5007d-23a55dc2e24ba50b6d04028b40576b6cab343872.gz --- src/edu/berkeley/sbp/meta/MetaGrammar.java | 4 ++-- src/edu/berkeley/sbp/meta/MetaGrammarBindings.java | 14 ++++---------- src/edu/berkeley/sbp/meta/MetaGrammarTree.java | 2 ++ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index 0e8968f..2077bbd 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -253,7 +253,7 @@ public class MetaGrammar { MetaGrammarBindings.Grammar g = (MetaGrammarBindings.Grammar)red.invoke(t.children()); Context cx = new Context(g,rm); Union u = null; - for(MetaGrammarBindings.NonTerminal nt : g.nonterminals) { + for(MetaGrammarBindings.NonTerminal nt : g.values()) { Union el = (Union)cx.get(nt.name); StringBuffer st = new StringBuffer(); el.toString(st); @@ -275,7 +275,7 @@ public class MetaGrammar { } public Union build() { Union ret = null; - for(MetaGrammarBindings.NonTerminal nt : grammar.nonterminals) { + for(MetaGrammarBindings.NonTerminal nt : grammar.values()) { Union u = get(nt.name); if ("s".equals(nt.name)) ret = u; diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index f780e80..5168c34 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -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 { + 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 + " ]"; } } diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarTree.java b/src/edu/berkeley/sbp/meta/MetaGrammarTree.java index 064ae41..2040cee 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarTree.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarTree.java @@ -22,6 +22,7 @@ class MetaGrammarTree { + // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.Grammar.class.getConstructor(new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminal[].class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0,1}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminal.class.getConstructor(new Class[] {java.lang.String.class,edu.berkeley.sbp.meta.MetaGrammarBindings.Seq[][].class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "s", new edu.berkeley.sbp.Tree[] { })})}), new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("psx", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.Seq.class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("seq", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.El[].class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("bang", new Class[] {edu.berkeley.sbp.meta.MetaGrammarBindings.El.class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.NonTerminalReference.class), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bindable.create(edu.berkeley.sbp.meta.MetaGrammarBindings.class.getMethod("word", new Class[] {java.lang.String.class})), false), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, new Tree.ArrayBuildingTreeFunctor(), new edu.berkeley.sbp.Tree[] { new edu.berkeley.sbp.Tree(null, "w", new edu.berkeley.sbp.Tree[] { }), @@ -515,3 +516,4 @@ new edu.berkeley.sbp.Tree(null, new MetaGrammar.TargetReducer(new int[] {0}, Bin + -- 1.7.10.4