checkpoint
[sbp.git] / src / edu / berkeley / sbp / meta / Grammar.java
index 693a7ba..ad96a5f 100644 (file)
@@ -12,26 +12,24 @@ import java.io.*;
 public class Grammar {
 
     /**
-     *  Create a grammar from a parse tree.
-     * 
-     *  @param t a tree produced by parsing a grammar using the metagrammar
-     *  @param s the name of the "start symbol"
-     */
-    public static Union create(Tree t, String s) {
-        return create(t, s, new AnnotationGrammarBindingResolver(MetaGrammarBindings.class));
-    }
-
-    /**
      *  Create a grammar from a parse tree and binding resolver
      * 
      *  @param t   a tree produced by parsing a grammar using the metagrammar
      *  @param s   the name of the "start symbol"
      *  @param gbr a GrammarBindingResolver that resolves grammatical reductions into tree-node-heads
      */
-    public static Union create(Tree t, String s, GrammarBindingResolver gbr) {
-        Tree.TreeFunctor<Object,Object> red = (Tree.TreeFunctor<Object,Object>)t.head();
+    public static Union create(Tree t, String s, Grammar.Bindings gbr) {
+        TreeFunctor<Object,Object> red = (TreeFunctor<Object,Object>)t.head();
         MetaGrammarBindings.GrammarNode g = (MetaGrammarBindings.GrammarNode)red.invoke(t.children());
         return g.build(s, gbr);
     }
+
+    public static class Bindings {
+        public Object repeatTag()                   { return null; }
+        public Sequence createSequence(Production p) {
+            if (p.tag==null) return null;
+            return Sequence.newRewritingSequence(p.tag, p.elements, p.drops);
+        }
+    }
     
 }