X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fmisc%2FMetaGrammar.java;h=b2db78ec1ac03563b2b0622953c96af5aa689fcd;hp=3501ee60fcbd375a4055af6cbe87ec54594740ac;hb=e4b4b7b0da38d93fc9160b0058a81c1fc7f6773b;hpb=e2a835683bc6f2f873b17710ba85806720f88127 diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 3501ee6..b2db78e 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -15,7 +15,7 @@ public class MetaGrammar extends StringWalker { return ret.toString(); } - private static HashSet dropAll = new HashSet(); + public /*private*/ static HashSet dropAll = new HashSet(); // Statics ////////////////////////////////////////////////////////////////////////////// @@ -44,6 +44,8 @@ public class MetaGrammar extends StringWalker { startSymbol = str; nt = new HashMap(); dropAll = new HashSet(); + dropAll.add(leftBrace); + dropAll.add(rightBrace); nt.put(str, g); return ret; } @@ -51,6 +53,7 @@ public class MetaGrammar extends StringWalker { // MetaGrammar ////////////////////////////////////////////////////////////////////////////// + public Union nonTerminal(String str) { return nonTerminal(str, null, false, false); } public Union nonTerminal(String str, PreSequence[][] s, boolean synthetic, boolean dropAll) { Union n = str.equals(startSymbol) ? g : nt.get(str); if (n == null) nt.put(str, n = new Union(str, synthetic)); @@ -127,19 +130,7 @@ public class MetaGrammar extends StringWalker { PreSequence ret = new PreSequence(o3, s); ret.drops[o1.length] = o3.length>1; return ret; - } else if ("{".equals(head)) - return nonTerminal("braced"+(anon++), - new PreSequence[][] { - new PreSequence[] { - new PreSequence(new Element[] { leftBrace(), - ((PreSequence)walk(tree, 0)).buildUnion(), - rightBrace() - }) - } - }, - false, - false); - else if ("[".equals(head) || "[~".equals(head)) { + } else if ("[".equals(head) || "[~".equals(head)) { boolean positive = "[".equals(head); Range[] rr = (Range[])walk(tree, 0); Range.Set ret = positive ? new Range.Set() : new Range.Set(new Range(true, true)); @@ -238,11 +229,12 @@ public class MetaGrammar extends StringWalker { else if (tag!=null) ret = Sequence.rewritingSequence(tag, expansion, drops, and, not); else { int idx = -1; - for(int i=0; i