From: adam Date: Thu, 22 Dec 2005 03:13:11 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~493 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=6bee7f519f499a92a92a459fd2c903d85de0759c checkpoint darcs-hash:20051222031311-5007d-f6c3e3445e33fad94c8852988c27d0cafa9af855.gz --- diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 1f0d205..49befee 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 ////////////////////////////////////////////////////////////////////////////// diff --git a/src/edu/berkeley/sbp/tib/Tib.java b/src/edu/berkeley/sbp/tib/Tib.java index 59336df..eabc9ee 100644 --- a/src/edu/berkeley/sbp/tib/Tib.java +++ b/src/edu/berkeley/sbp/tib/Tib.java @@ -289,6 +289,10 @@ public class Tib implements Token.Stream { public static class Grammar extends MetaGrammar { private int anon = 0; + private final Element ws = Repeat.maximal(Repeat.many0(nonTerminal("w"))); + public Grammar() { + dropAll.add(ws); + } public Object walk(Tree tree) { String head = tree.head(); if (tree.numChildren()==0) return super.walk(tree); @@ -297,9 +301,9 @@ public class Tib implements Token.Stream { new PreSequence[][] { new PreSequence[] { new PreSequence(new Element[] { CharToken.leftBrace, - Repeat.maximal(Repeat.many0(nonTerminal("w"))), - ((PreSequence)walk(tree, 0)).buildUnion(), - Repeat.maximal(Repeat.many0(nonTerminal("w"))), + ws, + ((PreSequence)walk(tree, 0)).sparse(ws).buildUnion(), + ws, CharToken.rightBrace }) } diff --git a/tests/regression.tc b/tests/regression.tc index 9a7ef50..ce43a84 100644 --- a/tests/regression.tc +++ b/tests/regression.tc @@ -32,7 +32,7 @@ tibcase { s ::= { Hello } => "yep" w ::= " " | "\n" ws !::= w** - Hello ::= "hello" ws { ws "there" ws "how" ws { { "are" } ws } } + Hello ::= "hello" ws { "there" "how" { { "are" } } } } testcase {