From: adam Date: Mon, 19 Dec 2005 07:16:23 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~512 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=c1519a9645e80f123c485a15931b193a22140184;ds=sidebyside checkpoint darcs-hash:20051219071623-5007d-b94cfbbf33d5c71bf6d0a0bf8259dde1de8e1d92.gz --- diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 1a79a1d..f1ae308 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -57,8 +57,6 @@ public class MetaGrammar extends ReflectiveWalker { public Element epsilon(Object o, Object b) { return Union.epsilon; } public Object _leftparen__rightparen_(Object o) { return Union.epsilon; } public Element _rightparen_(Object e) { return SELF; } - public Element _bang_(Element r) { return r; } - public Object _caret_(String s) { return new MyLift(s); } public Union nonTerminal(String s) { return nonTerminal(s, null, false, false); } public Union _colon__colon__equals_(String s, PreSequence[][] p) { return nonTerminal(s, p, false, false); } public Union _bang__colon__colon__equals_(String s, PreSequence[][] p) { return nonTerminal(s, p, false, true); } @@ -107,6 +105,15 @@ public class MetaGrammar extends ReflectiveWalker { } public PreSequence ps(Object[] o) { return new PreSequence(o); } + public PreSequence ps2(Object[] o1, String s, Object[] o2) { + if (o1==null) o1 = new Object[0]; + if (o2==null) o2 = new Object[0]; + Object[] o3 = new Object[o1.length + o2.length + 1]; + System.arraycopy(o1, 0, o3, 0, o1.length); + o3[o1.length] = new MyLift(s); + System.arraycopy(o2, 0, o3, o1.length+1, o2.length); + return new PreSequence(o3); + } public PreSequence _slash_(PreSequence p, Object sep) { return p.sparse(sep); } public Object _star_(Element r) { return Repeat.many0(r); } @@ -275,6 +282,8 @@ public class MetaGrammar extends ReflectiveWalker { + + // DO NOT EDIT STUFF BELOW: IT IS AUTOMATICALLY GENERATED new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "grammar", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { })}), @@ -314,14 +323,14 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "a", new Tree[] { }), new Tree(null, "r", new Tree[] { })})})})})}), new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { })}), - new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "o", new Tree[] { }), new Tree(null, "r", new Tree[] { }), - new Tree(null, "d", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ":", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, ":", new Tree[] { }), new Tree(null, ":", new Tree[] { }), - new Tree(null, "=", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "=", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), new Tree(null, "l", new Tree[] { }), new Tree(null, "t", new Tree[] { }), new Tree(null, "e", new Tree[] { }), @@ -335,15 +344,15 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "s", 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[] { })})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "o", new Tree[] { }), new Tree(null, "r", new Tree[] { }), - new Tree(null, "d", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "!", new Tree[] { }), new Tree(null, ":", new Tree[] { }), new Tree(null, ":", new Tree[] { }), - new Tree(null, "=", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, "=", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), new Tree(null, "l", new Tree[] { }), new Tree(null, "t", new Tree[] { }), new Tree(null, "e", new Tree[] { }), @@ -405,31 +414,31 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "c", new Tree[] { }), new Tree(null, "e", new Tree[] { })})})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", 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, "u", new Tree[] { }), new Tree(null, "e", new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "c", new Tree[] { }), - new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { })})}), - new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})})})}), new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "s", new Tree[] { })})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", 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, "u", new Tree[] { }), new Tree(null, "e", new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "c", new Tree[] { }), - new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }), - new Tree(null, "~", new Tree[] { })})}), - new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), + new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "&", new Tree[] { }), + new Tree(null, "~", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "*/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})})})}), new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), @@ -440,16 +449,36 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, 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[] { })})})})})}), new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), - new Tree(null, "s", new Tree[] { })})})})})}), + new Tree(null, "s", new Tree[] { })})}), + new Tree(null, "=>", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "?", new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})}), + new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})})})})})})}), + new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "^", new Tree[] { })})}), + new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), + new Tree(null, "u", new Tree[] { }), + new Tree(null, "o", new Tree[] { }), + new Tree(null, "t", new Tree[] { }), + new Tree(null, "e", new Tree[] { }), + new Tree(null, "d", new Tree[] { })})}), + new Tree(null, "?", new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, 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[] { })})}), + new Tree(null, "+/", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})})})})})})})})})}), + new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), + new Tree(null, "s", new Tree[] { }), + new Tree(null, "2", new Tree[] { })})})})})}), new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), new Tree(null, "s", new Tree[] { }), new Tree(null, "x", new Tree[] { })}), new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), new Tree(null, "s", new Tree[] { })})})})})}), - new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), - new Tree(null, "s", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})})}), + new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})})})})}), new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), @@ -463,12 +492,12 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), new Tree(null, "s", new Tree[] { }), new Tree(null, "x", new Tree[] { })})})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "p", new Tree[] { }), new Tree(null, "s", new Tree[] { }), - new Tree(null, "x", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }), - new Tree(null, ">", new Tree[] { })})}), - new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), + new Tree(null, "x", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "=", new Tree[] { }), + new Tree(null, ">", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "o", new Tree[] { }), new Tree(null, "r", new Tree[] { }), new Tree(null, "d", new Tree[] { })})})})}), @@ -505,10 +534,10 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "g", new Tree[] { }), new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), - new Tree(null, "c", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "-", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), + new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", 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, "-", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { }), new Tree(null, "c", new Tree[] { })})})})})})})}), new Tree(null, "::=", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })}), new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "=>", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), @@ -539,10 +568,13 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "r", new Tree[] { }), new Tree(null, "a", new Tree[] { }), new Tree(null, "l", 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, "(", new Tree[] { }), - new Tree(null, ")", new Tree[] { })})})})}), - new Tree(null, "/", 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, "{", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "s", new Tree[] { }), + new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { }), + new Tree(null, ")", new Tree[] { })}), + new Tree(null, null, new Tree[] { })}), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "{", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", 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, "u", new Tree[] { }), @@ -553,74 +585,74 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "}", 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[] { })})})}), - 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, "[", new Tree[] { })})}), - new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), new Tree(null, "a", new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "g", new Tree[] { }), - new Tree(null, "e", new Tree[] { })})})})})})})})}), + new Tree(null, "e", new Tree[] { })})})}), new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", 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, "[", new Tree[] { }), - new Tree(null, "~", new Tree[] { })})}), - new Tree(null, "(", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), + new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "[", new Tree[] { }), + new Tree(null, "~", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "r", new Tree[] { }), new Tree(null, "a", new Tree[] { }), new Tree(null, "n", new Tree[] { }), new Tree(null, "g", new Tree[] { }), - new Tree(null, "e", new Tree[] { })})})})})})})})}), + new Tree(null, "e", new Tree[] { })})})}), new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "]", new Tree[] { })})})})}), - new Tree(null, "/", 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, "^", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "q", new Tree[] { }), - new Tree(null, "u", new Tree[] { }), - new Tree(null, "o", new Tree[] { }), - new Tree(null, "t", new Tree[] { }), - new Tree(null, "e", new Tree[] { }), - new Tree(null, "d", 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, null, new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})}), - 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, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), - new Tree(null, "*", new Tree[] { })})})})})}), - new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), + new Tree(null, "*", new Tree[] { })}), + new Tree(null, null, new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { })})})})})})})})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), - new Tree(null, "/", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})})}), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { })}), + new Tree(null, null, new Tree[] { })})})})})})}), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "*", new Tree[] { }), + new Tree(null, "/", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})}), - 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, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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, null, new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), - new Tree(null, "+", new Tree[] { })})})})})}), - new Tree(null, null, new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), + new Tree(null, "+", new Tree[] { })}), + new Tree(null, null, new Tree[] { })})}), + new Tree(null, null, new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { })})})})})})})})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), - new Tree(null, "/", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})})}), + new Tree(null, "s", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { })}), + new Tree(null, null, new Tree[] { })})})})})})}), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "+", new Tree[] { }), + new Tree(null, "/", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", 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[] { })})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "?", new Tree[] { })})})})}), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "e", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, "?", new Tree[] { })}), + new Tree(null, null, 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[] { })})})}), - new Tree(null, "/", new Tree[] { new Tree(null, "ps", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})}), + new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "literal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })})}), new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "w", new Tree[] { }), new Tree(null, "o", new Tree[] { }), new Tree(null, "r", new Tree[] { }), - new Tree(null, "d", new Tree[] { })})}), - new Tree(null, "^", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })})})})}), + new Tree(null, "d", new Tree[] { })})})}), + new Tree(null, null, new Tree[] { new Tree(null, ")", new Tree[] { })}), + new Tree(null, null, 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[] { })})})})}), - new Tree(null, null, new Tree[] { new Tree(null, "/", 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, "(", new Tree[] { })})}), - new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "/", new Tree[] { new Tree(null, "ps2", new Tree[] { new Tree(null, null, new Tree[] { }), + new Tree(null, null, new Tree[] { new Tree(null, "(", new Tree[] { })}), + new Tree(null, null, new Tree[] { new Tree(null, "nonTerminal", new Tree[] { new Tree(null, null, new Tree[] { new Tree(null, "a", new Tree[] { }), new Tree(null, "l", new Tree[] { }), new Tree(null, "t", new Tree[] { }), new Tree(null, "e", new Tree[] { }), @@ -732,3 +764,5 @@ new Tree(null, "gram", new Tree[] { new Tree(null, null, new Tree[] { }), + + diff --git a/tests/meta.g b/tests/meta.g index 2f062c4..0ba0548 100644 --- a/tests/meta.g +++ b/tests/meta.g @@ -10,7 +10,8 @@ conjuncts ::= sequence | sequence ^"&" e*/ws /ws | sequence ^"&~" e*/ws /ws -ps ::= e*/ws => "ps" +ps ::= e*/ws => "ps" + | (e+/ws ws)? "^" quoted (ws e+/ws)? => "ps2" psx ::= ps > ps ^"/" e /ws sequence ::= psx @@ -28,8 +29,6 @@ e ::= word => "nonTerminal" | ^"{" sequence "}" /ws | ^"[" range* "]" | ^"[~" range* "]" - | ^"^" quoted /ws -// | ^"!" e /ws | (e ws ^"**" > e ws ^"*") | e ^"*/" e /ws