X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FProduction.java;h=4cbbef2bf69868410efb8da3cb187bbf9c8b9aab;hp=08588d9c3e953cb9bbbbc699d8ee06a20caa9c9a;hb=9d727bd14c659cdc6c34153b988e8d3fdb8067f5;hpb=6e639c9ed89dfda4b14ac4c768e66d25b91f5037 diff --git a/src/edu/berkeley/sbp/meta/Production.java b/src/edu/berkeley/sbp/meta/Production.java index 08588d9..4cbbef2 100644 --- a/src/edu/berkeley/sbp/meta/Production.java +++ b/src/edu/berkeley/sbp/meta/Production.java @@ -1,3 +1,5 @@ +// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp.meta; import edu.berkeley.sbp.util.*; import edu.berkeley.sbp.*; @@ -11,10 +13,13 @@ import java.io.*; public class Production { public String tag; + public String nonTerminal; public boolean[] drops; public Element[] elements; - public String nonTerminal; public int count = 0; + + public String tag() { return tag==null ? nonTerminal : tag; } + public Production(String tag, Element[] elements, boolean[] drops) { this(tag, tag, elements, drops); } public Production(String tag, String nonTerminal, Element[] elements, boolean[] drops) { this.tag = tag; @@ -96,19 +101,21 @@ public class Production { public Sequence makeSequence(Object o) { return makeSequence(Bindable.create(o)); } public Sequence makeSequence(final Bindable _bindable) { + /* if (_bindable.getArgTypes().length > 0 && _bindable.getArgTypes()[0] == Input.Region.class) { Functor func = new Functor() { int[] map = buildSequence(_bindable); public Object invoke(final Input.Region region) { return _bindable.createBinding(map, region); } }; - return Sequence.regionRewritingSequence(func, elements, drops); + return Sequence.newRegionRewritingSequence(func, elements, drops); } + */ if (_bindable.isAnnotationPresent(bind.raw.class)) - return Sequence.rewritingSequence(new Tree.RawBindingFunctor(_bindable.createBinding()), elements, drops); + return Sequence.create(new RawBindingFunctor(tag(), _bindable.createBinding()), elements, drops, false); int[] map = buildSequence(_bindable); - return Sequence.rewritingSequence(new Tree.BindingFunctor(_bindable.createBinding()), elements, drops); + return Sequence.create(new BindingFunctor(tag(), _bindable.createBinding()), elements, drops, false); } }