X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmeta%2FGrammar.java;h=857c1762fb3bcf3900cceb730bddbb577e45c26b;hb=972303162555284f8066047d3caead8df139afd4;hp=693a7bad399c18f659c492975e67cd72fc42d30d;hpb=0632bba5da482b2c39e6959e449259bd6725c213;p=sbp.git diff --git a/src/edu/berkeley/sbp/meta/Grammar.java b/src/edu/berkeley/sbp/meta/Grammar.java index 693a7ba..857c176 100644 --- a/src/edu/berkeley/sbp/meta/Grammar.java +++ b/src/edu/berkeley/sbp/meta/Grammar.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.*; @@ -12,26 +14,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 red = (Tree.TreeFunctor)t.head(); + public static Union create(Tree t, String s, Grammar.Bindings gbr) { + TreeFunctor red = (TreeFunctor)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.create(p.tag, p.elements, p.drops, false); + } + } }