X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammar.java;h=d2aae07397034feaa56432117db34bb655dc1160;hp=78c4b725a47a490bcb3127eeace8858ba96b33c8;hb=6e639c9ed89dfda4b14ac4c768e66d25b91f5037;hpb=c8a17fdd2e149fe5feecd96c71b7f2cab286ab96 diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index 78c4b72..d2aae07 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -53,178 +53,11 @@ public class MetaGrammar { os.close(); } - - - public static class Production { - public String tag; - public String nonTerminal; - public boolean[] drops; - public Element[] elements; - public int count = 0; - public Production(String tag, String nonTerminal, Element[] elements, boolean[] drops) { - this.tag = tag; - this.elements = elements; - this.nonTerminal = nonTerminal; - this.drops = drops; - for(int i=0; i0 && types[0]==Input.Region.class; - for(int i=0; i, ToJava { - private int[] map; - private Bindable _bindable; - private boolean _israw; - - public void toJava(StringBuffer sb) { - sb.append("new MetaGrammar.TargetReducer(new int[] {"); - for(int i=0; i t) { - if (_israw) return _bindable.impose(new Object[] { t }); - ArrayList ret = new ArrayList(); - for(Tree tc : t) { - if (tc.head() != null && tc.head() instanceof Functor) - ret.add(((Tree.TreeFunctor)tc.head()).invoke(tc)); - else if (tc.numChildren() == 0) - ret.add(tc.head()); - else { - System.err.println("FIXME: don't know what to do about " + tc); - ret.add(null); - } - } - Object[] o = (Object[])ret.toArray(new Object[0]); - int max = 0; - for(int i=0; i 0 && - _bindable.getArgTypes()[0]==Input.Region.class) - max++; - Object[] o2 = new Object[max+1]; - for(int i=0; i 0 && - _bindable.getArgTypes()[0]==Input.Region.class) - o2[0] = t.getRegion(); - return _bindable.impose(o2); - } - } - - public static Union make() { return make(MetaGrammarTree.meta, "s"); } public static Union make(Tree t, String s) { return make(t, s, new AnnotationGrammarBindingResolver(MetaGrammarBindings.class)); } public static Union make(Tree t, String s, GrammarBindingResolver rm) { Tree.TreeFunctor red = (Tree.TreeFunctor)t.head(); - MetaGrammarBindings.GrammarNode g = (MetaGrammarBindings.GrammarNode)red.invoke(t); + MetaGrammarBindings.GrammarNode g = (MetaGrammarBindings.GrammarNode)red.invoke(t.children()); return g.build(s, rm); }