From 0dd3f65037405b4a9dd03d1825b30a6557433892 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 13 Jul 2006 18:12:41 -0400 Subject: [PATCH] checkpoint darcs-hash:20060713221241-5007d-280d07d02103c981c77deb6230beb640120c1a35.gz --- .../sbp/meta/AnnotationGrammarBindingResolver.java | 1 - src/edu/berkeley/sbp/meta/MetaGrammarBindings.java | 12 ++++++++---- src/edu/berkeley/sbp/misc/RegressionTests.java | 4 ++-- tests/meta.g | 3 +-- tests/testcase.g | 15 ++++++++------- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java index 761b460..8601ee7 100644 --- a/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java +++ b/src/edu/berkeley/sbp/meta/AnnotationGrammarBindingResolver.java @@ -50,7 +50,6 @@ public class AnnotationGrammarBindingResolver extends GrammarBindingResolver { String prefix = key.indexOf('.')==-1 ? "" : key.substring(0, key.lastIndexOf('.')); String suffix = key.indexOf('.')==-1 ? key : key.substring(key.lastIndexOf('.')+1); - //System.err.println("suffix = " + suffix); MetaGrammar.Production p = new MetaGrammar.Production(suffix, suffix, els, drops); for(Method m : _allMethods.get(prefix)) if (new MetaGrammar.Target(m).isCompatible(p)) diff --git a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java index 742918b..c7952b0 100644 --- a/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java +++ b/src/edu/berkeley/sbp/meta/MetaGrammarBindings.java @@ -87,6 +87,9 @@ public class MetaGrammarBindings { public static @bind.as("#import") GrammarNode poundimport(String fileName, String as) { if (as==null) as = ""; + else if ("".equals(as)) { } + else as = as +"."; + System.err.println("#import " + fileName + " as " + as); try { Tree t = new CharParser(MetaGrammar.make()).parse(new FileInputStream(fileName)).expand1(); @@ -214,14 +217,14 @@ public class MetaGrammarBindings { } public Seq(ElementNode e) { this(new ElementNode[] { e }); } public Seq(ElementNode[] elements) { this.elements = elements; } - public Seq tag(String tag) { this.tag = tag; return this; } + public Seq tag(String tag) { this.tag = prefix+tag; return this; } public Seq follow(ElementNode follow) { this.follow = follow; return this; } public Seq dup() { Seq ret = new Seq(elements); ret.and.addAll(and); ret.not.addAll(not); ret.follow = follow; - ret.tag = tag; + ret.tag = prefix+tag; return ret; } public Seq and(Seq s) { and.add(s); s.lame = true; return this; } @@ -246,7 +249,7 @@ public class MetaGrammarBindings { } public Sequence build0(Context cx, boolean lame, NonTerminalNode cnt) { boolean dropAll = lame; - if (tag!=null && "()".equals(tag)) dropAll = true; + if (tag!=null && tag.endsWith("()")) dropAll = true; boolean[] drops = new boolean[elements.length]; Element[] els = new Element[elements.length]; for(int i=0; i t) { diff --git a/tests/meta.g b/tests/meta.g index cc2b1d7..216d3bf 100644 --- a/tests/meta.g +++ b/tests/meta.g @@ -7,9 +7,8 @@ s = ws! Grammar ws! Grammar = Declaration +/ ws Declaration = NonTerminal - | ^"#import" ws! FileName (ws! "as" ws! Prefix)? + | ^"#import" ws! FileName (ws! "as" ws! Word)? -Prefix = ([a-zA-Z] ".")+ "*" FileName = FileNameChar+ -> [\r\n ] FileNameChar = Space:: "\\ " | ~[\r\n ] diff --git a/tests/testcase.g b/tests/testcase.g index 5212e91..01ce08b 100644 --- a/tests/testcase.g +++ b/tests/testcase.g @@ -1,8 +1,9 @@ -#import tests/meta.g +#import tests/meta.g as grammar -ts = ts:: ws! tests ws! -tests = test */ ws -test = tca:: "testcase" "{" input (o::(output +/ ws)) (grammaro::Grammar) "}" /ws - | tcb:: "testcase" "{" input (grammaro::Grammar) "}" /ws -output = "output" Quoted ";" /ws -input = "input" Quoted ";" /ws +xws = grammar.ws +ts = ts:: xws! tests xws! +tests = test */ xws +test = tca:: "testcase" "{" input (o::(output +/ xws)) (grammaro::grammar.Grammar) "}" /xws + | tcb:: "testcase" "{" input (grammaro::grammar.Grammar) "}" /xws +output = "output" grammar.Quoted ";" /xws +input = "input" grammar.Quoted ";" /xws -- 1.7.10.4