X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FMetaGrammar.java;h=5772906a5499d01f83f43065d1275184b632f123;hp=91fd42feb3d3d90ba9cb8dbb8d5914aea782bbd5;hb=6777617313e957d0838a23ebf17ae0d9693ee225;hpb=34202c7836b0f48a034f38e4477623d512d0b2d5 diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index 91fd42f..5772906 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -106,7 +106,6 @@ public class MetaGrammar { _bindable, isRaw()) { public Object invoke(Iterable> t) { - if (_israw) return _bindable.impose(new Object[] { t }); ArrayList ret = new ArrayList(); ret.add(region); for(Tree tc : t) { @@ -135,9 +134,12 @@ public class MetaGrammar { p.drops); } + if (isRaw()) + return Sequence.rewritingSequence(new Tree.BindingFunctor(_bindable.createBinding()), + p.elements, + p.drops); return Sequence.rewritingSequence(new TreeBindableReducer(buildSequence(p), - _bindable, - isRaw()), + _bindable), p.elements, p.drops); } @@ -147,26 +149,22 @@ public class MetaGrammar { public static class TreeBindableReducer implements Tree.TreeFunctor, ToJava { int[] map; Bindable _bindable; - boolean _israw; public void toJava(StringBuffer sb) { sb.append("new MetaGrammar.TreeBindableReducer(new int[] {"); for(int i=0; i> t) { - if (_israw) return _bindable.createBinding().invoke(new Object[] { t }); ArrayList ret = new ArrayList(); for(Tree tc : t) { if (tc.head() != null && tc.head() instanceof Functor)