From 6fc80ede5be0eaca9c3ad20415e386b9baee3273 Mon Sep 17 00:00:00 2001 From: adam Date: Thu, 15 Dec 2005 04:21:07 -0500 Subject: [PATCH] checkpoint darcs-hash:20051215092107-5007d-304eced870958ba45d2fd7d12fb8ed8c28845f38.gz --- src/edu/berkeley/sbp/misc/MetaGrammar.java | 32 ++++++++++------------------ tests/meta.g | 2 +- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 7a98bb4..0c6d816 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -104,26 +104,14 @@ public class MetaGrammar extends ReflectiveWalker { public Object _plus_(final Element r) { return Repeat.many1(r); } public PreSequence rewrite(Object[] o) { return new PreSequence(o, null); } - public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); } - public PreSequence seqx(PreSequence p, String tag) { + public PreSequence seqx(PreSequence p, String tag) { return _equals__greater_(p, tag); } + public PreSequence _equals__greater_(PreSequence p, String tag) { p.tag = tag; return p; } - public PreSequence seq(Object[] o, Object sep, String tag) { return new PreSequence(sep==null ? o : slash(o, sep), tag); } - public Object[] seq(Object[] o) { return o; } public PreSequence ps(Object[] o) { return new PreSequence(o); } public PreSequence _slash_(PreSequence p, Object sep) { return p.sparse(sep); } - public Object[] slash(Object[] o, Object sep) { - if (o.length <= 1) return o; - Object[] ret = new Object[o.length * 2 - 1]; - for(int i=0; i", new Tree[] { })})}), new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "s", new Tree[] { })})}), @@ -496,11 +489,7 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "e", new Tree[] { }), new Tree(null, "d", new Tree[] { })})})})}), new Tree(null, null, new Tree[] { })})})})})})}), - new Tree(null, null, new Tree[] { })})})})})})})}), - new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), - new Tree(null, "e", new Tree[] { }), - new Tree(null, "q", new Tree[] { }), - new Tree(null, "x", new Tree[] { })})})})})}), + new Tree(null, null, new Tree[] { })})})})}), new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), new Tree(null, "c", new Tree[] { })}), new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "seqx", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "[~", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "range", new Tree[] { new Tree(null, "-", new Tree[] { })}), @@ -786,3 +775,4 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), + diff --git a/tests/meta.g b/tests/meta.g index a994e8d..cf6a6b3 100644 --- a/tests/meta.g +++ b/tests/meta.g @@ -14,7 +14,7 @@ ps ::= (e*/ ws) => "ps" psx ::= ps | ps ws ^"/" e sequence ::= psx - (ws "=>" ws (word|quoted))? => "seqx" + | psx ^"=>" (word|quoted) /ws ec ::= [~\-\]\\\~] | escaped -- 1.7.10.4