From 2ca60a30895e90a0458361974402cee001498784 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 13 Jul 2006 23:00:30 -0400 Subject: [PATCH] checkpoint darcs-hash:20060714030030-5007d-44fd7803a8fa01867355270b751ec34418112fd2.gz --- ...gResolver.java => AnnotationGrammarBindings.java} | 4 ++-- src/edu/berkeley/sbp/meta/Grammar.java | 15 ++++----------- src/edu/berkeley/sbp/meta/MetaGrammar.java | 4 ++-- src/edu/berkeley/sbp/meta/MetaGrammarBindings.java | 4 +++- .../sbp/meta/TaggingGrammarBindingResolver.java | 18 ------------------ src/edu/berkeley/sbp/misc/Demo.java | 2 +- src/edu/berkeley/sbp/misc/RegressionTests.java | 10 +++++----- src/edu/berkeley/sbp/tib/TibDoc.java | 2 +- 8 files changed, 18 insertions(+), 41 deletions(-) rename src/edu/berkeley/sbp/meta/{AnnotationGrammarBindingResolver.java => AnnotationGrammarBindings.java} (95%) delete mode 100644 src/edu/berkeley/sbp/meta/TaggingGrammarBindingResolver.java diff --git a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindings.java similarity index 95% rename from src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java rename to src/edu/berkeley/sbp/meta/AnnotationGrammarBindings.java index 9ea5d7e..b7d89a3 100644 --- a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java +++ b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindings.java @@ -10,7 +10,7 @@ import java.lang.reflect.*; import java.io.*; // FIXME: non-static methods -public class AnnotationGrammarBindingResolver extends Grammar.Bindings { +public class AnnotationGrammarBindings extends Grammar.Bindings { private static boolean harsh = true; @@ -18,7 +18,7 @@ public class AnnotationGrammarBindingResolver extends Grammar.Bindings { private HashMap _inner = new HashMap(); private HashMap _allMethods = new HashMap(); - public AnnotationGrammarBindingResolver(Class c) { + public AnnotationGrammarBindings(Class c) { this._cl = c; add(c, ""); } diff --git a/src/edu/berkeley/sbp/meta/Grammar.java b/src/edu/berkeley/sbp/meta/Grammar.java index 531105e..35429d3 100644 --- a/src/edu/berkeley/sbp/meta/Grammar.java +++ b/src/edu/berkeley/sbp/meta/Grammar.java @@ -12,16 +12,6 @@ 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 @@ -36,7 +26,10 @@ public class Grammar { public static class Bindings { public Object repeatTag() { return null; } - public Sequence tryResolveTag(Production p) { return null; } + public Sequence tryResolveTag(Production p) { + if (p.tag==null) return null; + return Sequence.rewritingSequence(p.tag, p.elements, p.drops); + } } } diff --git a/src/edu/berkeley/sbp/meta/MetaGrammar.java b/src/edu/berkeley/sbp/meta/MetaGrammar.java index 5a055c9..d5e3036 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammar.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammar.java @@ -15,7 +15,7 @@ public class MetaGrammar { public static Union newInstance() { return Grammar.create(MetaGrammar.meta, "s", - new AnnotationGrammarBindingResolver(MetaGrammarBindings.class)); + new MetaGrammarBindings()); } /** Used to rebuild MetaGrammar.java, and not for much else */ @@ -41,7 +41,7 @@ public class MetaGrammar { out.append("\n // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED\n"); Tree t = MetaGrammar.meta; - Union u = Grammar.create(t, "s"); + Union u = Grammar.create(t, "s", new MetaGrammarBindings()); t = new CharParser((Union)u).parse(new FileInputStream(args[0])).expand1(); diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index ecde372..ca0a2eb 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -10,7 +10,9 @@ import java.lang.reflect.*; import java.io.*; /** The java classes typically used to represent a parsed grammar AST; each inner class is a type of AST node. */ -public class MetaGrammarBindings { +public class MetaGrammarBindings extends AnnotationGrammarBindings { + + public MetaGrammarBindings() { super(MetaGrammarBindings.class); } // FIXME ugly ugly ugly scary dangerous public static String prefix = ""; diff --git a/src/edu/berkeley/sbp/meta/TaggingGrammarBindingResolver.java b/src/edu/berkeley/sbp/meta/TaggingGrammarBindingResolver.java deleted file mode 100644 index ef1ce3b..0000000 --- a/src/edu/berkeley/sbp/meta/TaggingGrammarBindingResolver.java +++ /dev/null @@ -1,18 +0,0 @@ -package edu.berkeley.sbp.meta; -import edu.berkeley.sbp.util.*; -import edu.berkeley.sbp.*; -import edu.berkeley.sbp.chr.*; -import edu.berkeley.sbp.misc.*; -import edu.berkeley.sbp.bind.*; -import java.util.*; -import java.lang.annotation.*; -import java.lang.reflect.*; -import java.io.*; - -public class TaggingGrammarBindingResolver extends Grammar.Bindings { - public Object repeatTag() { return null; } - public Sequence tryResolveTag(Production p) { - if (p.tag==null) return null; - return Sequence.rewritingSequence(p.tag, p.elements, p.drops); - } -} diff --git a/src/edu/berkeley/sbp/misc/Demo.java b/src/edu/berkeley/sbp/misc/Demo.java index a4cc7ff..e8d38ee 100644 --- a/src/edu/berkeley/sbp/misc/Demo.java +++ b/src/edu/berkeley/sbp/misc/Demo.java @@ -39,7 +39,7 @@ public class Demo { Parser metaGrammarParser = new CharParser(MetaGrammar.newInstance()); Tree parsedGrammar = metaGrammarParser.parse(new CharInput(new FileInputStream(s[0]))).expand1(); - Grammar.Bindings gbr = new AnnotationGrammarBindingResolver(Math.class); + Grammar.Bindings gbr = new AnnotationGrammarBindings(Math.class); Union mathGrammar = Grammar.create(parsedGrammar, "Expr", gbr); Parser mathParser = new CharParser(mathGrammar); diff --git a/src/edu/berkeley/sbp/misc/RegressionTests.java b/src/edu/berkeley/sbp/misc/RegressionTests.java index 9c1290b..d870ae2 100644 --- a/src/edu/berkeley/sbp/misc/RegressionTests.java +++ b/src/edu/berkeley/sbp/misc/RegressionTests.java @@ -33,7 +33,7 @@ public class RegressionTests { System.err.println("parsing " + s[0]); Tree res = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream(s[0])).expand1(); - Union meta = Grammar.create(res, "s"); + Union meta = Grammar.create(res, "s", new MetaGrammarBindings()); System.err.println("parsing " + s[1]); //SequenceInputStream sis = new SequenceInputStream(new FileInputStream(s[0]), new FileInputStream(s[1])); @@ -89,7 +89,7 @@ public class RegressionTests { } } - public static class TestCaseMaker extends AnnotationGrammarBindingResolver { + public static class TestCaseMaker extends AnnotationGrammarBindings { public TestCaseMaker() { super(TestCaseMakerHelper.class); add(MetaGrammarBindings.class, "grammar"); @@ -97,7 +97,7 @@ public class RegressionTests { } public static class TestCaseMakerHelper { public static @bind.as("grammaro") @bind.raw Object grammaro(Iterable t) { - return Grammar.create(t.iterator().next(), "s", new TaggingGrammarBindingResolver()); + return Grammar.create(t.iterator().next(), "s", new Grammar.Bindings()); } //public static @bind.as("tca") Object tca(Object[] o) throws IOException { //return new TestCase((String)o[0], (String[])o[1], (Union)o[2], false, false); } @@ -194,13 +194,13 @@ public class RegressionTests { public static class TestCaseBuilder extends StringWalker { public Object walk(Tree tree) { try { - if ("grammaro".equals(tree.head())) return Grammar.create(tree, "s"); + if ("grammaro".equals(tree.head())) return Grammar.create(tree, "s", new MetaGrammarBindings()); else if ("output".equals(tree.head())) return string(tree.children()); else if ("input".equals(tree.head())) return string(tree.children()); else if ("testcase".equals(tree.head())) { String input = string(tree.child(0)); String[] output = tree.numChildren()>2 ? ((String[])walk(tree, 1)) : new String[0]; - Union grammar = Grammar.create(tree.child(tree.numChildren()-1), "s"); + Union grammar = Grammar.create(tree.child(tree.numChildren()-1), "s", new MetaGrammarBindings()); TestCase tc = new TestCase(input, output, grammar, false, false); return tc; } else if ("ts".equals(tree.head())) return walk(tree, 0); diff --git a/src/edu/berkeley/sbp/tib/TibDoc.java b/src/edu/berkeley/sbp/tib/TibDoc.java index 42daf15..ee1a861 100644 --- a/src/edu/berkeley/sbp/tib/TibDoc.java +++ b/src/edu/berkeley/sbp/tib/TibDoc.java @@ -686,7 +686,7 @@ toContex ll = prefix ++ (concatMap tl ll) ++ suffix Tree res = new CharParser(MetaGrammar.newInstance()).parse(new FileInputStream(s[0])).expand1(); - AnnotationGrammarBindingResolver resolver = new AnnotationGrammarBindingResolver(TD.class); + AnnotationGrammarBindings resolver = new AnnotationGrammarBindings(TD.class); resolver.add(MetaGrammarBindings.class, "meta"); Union tibgram = Grammar.create(res, "s", resolver); -- 1.7.10.4