From 2a43edc3783a51c0ada2269835d833fa4ce8ab33 Mon Sep 17 00:00:00 2001 From: adam Date: Tue, 13 Dec 2005 01:29:13 -0500 Subject: [PATCH] checkpoint darcs-hash:20051213062913-5007d-4c2ccc4dca9a776503811c6424b6d6e6b21469a0.gz --- src/edu/berkeley/sbp/misc/MetaGrammar.java | 29 +++++++++++++++++++++------- tests/meta.g | 4 +++- tests/testcase.g | 4 ++-- 3 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index bfddf72..1b4f1d9 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -72,6 +72,15 @@ public class MetaGrammar extends ReflectiveWalker { public Object _backslash__leftbrace_(String s) { return SELF; } public Object _leftbrace_(String s) { return SELF; } public Object _plus_(final Element r) { return new Rep(r, null, false, false); } + 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" EquiAlt ::= Conjuncts +/ "|" => "alternatives" -Sequence ::= E+ +Sequence ::= E+ ^"/" E + > E+ + Conjuncts ::= Rewrite | Rewrite ^"&" Sequence | Rewrite ^"&~" Sequence diff --git a/tests/testcase.g b/tests/testcase.g index 9993dce..7245db8 100644 --- a/tests/testcase.g +++ b/tests/testcase.g @@ -1,7 +1,7 @@ ts ::= ws Ts ws => ts Ts ::= Test* ws !::= w* -Test ::= ^"testcase" "{" Input Output+ Grammar "}" +Test ::= ^"testcase" "{" Input output+ Grammar "}" | ^"testcase" "{" Input Grammar "}" -Output ::= "output" quoted ";" +output ::= "output" quoted ";" / w* Input ::= "input" quoted ";" -- 1.7.10.4