From: adam Date: Wed, 14 Dec 2005 06:54:12 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~548 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=ae49c84428d77798ddeedf4c7e6329799f0633e7 checkpoint darcs-hash:20051214065412-5007d-3882cd419d7d3db0017fb4cd1ff85419fcadb29b.gz --- diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 26f8ae1..9381aa0 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -32,24 +32,39 @@ public class MetaGrammar extends ReflectiveWalker { public Element _rightparen_(Object e) { return SELF; } public PreSequence _amp_(PreSequence p, Object[] o) { return p.and(new PreSequence(o, null, true).buildSequence(null, true, false)); } - public PreSequence _amp__tilde_(PreSequence p, Object[] o) { return p.not(new PreSequence(o, null, true).buildSequence(null, true, false)); } + public PreSequence _amp__tilde_(PreSequence p, Object[] o) { return p.not(new PreSequence(o, null, true).buildSequence(null, true, false)); } public Element _bang_(Element r) { return r; } public Object care(String s) { return new MyLift(s); } public Object _caret_(String s) { return new MyLift(s); } public Object _leftparen__rightparen_() { return epsilon; } - public Union nonTerminal(String s) { return nonTerminal(s, false, false); } - public Union nonTerminal(String s, boolean synthetic, boolean dropAll) { - Union n = s.equals(startSymbol) ? g : nt.get(s); - if (n == null) nt.put(s, n = new Union(s, synthetic)); - if (dropAll) this.dropAll.add(n); - return n; - } + 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); } public Union _colon__colon__equals_(boolean q, String s, PreSequence[][] p) { return nonTerminal(s, p, false, q); } - public Object _leftparen_(PreSequence[][] p) { return nonTerminal("anon"+(anon++), p, false, false); } + public Object _leftparen_(PreSequence[][] p) { return nonTerminal("anon"+(anon++), p, 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)); + if (dropAll) this.dropAll.add(n); + if (s==null) return n; + HashSet seqs = new HashSet(); + for(int i=0; i temp = new HashSet(); + for(PreSequence pre : s[i]) { + pre.not.addAll(seqs); + Sequence seq = pre.buildSequence(n, false, dropAll); + temp.add(seq); + n.add(seq); + } + seqs.addAll(temp); + } + return n; + } + + 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); } @@ -110,24 +125,6 @@ public class MetaGrammar extends ReflectiveWalker { return ret; } - public Union nonTerminal(String str, PreSequence[][] s, boolean synthetic, boolean dropAll) { - Union n = nonTerminal(str, synthetic, dropAll); - if (s == null || s.length==0) { n.add(Sequence.empty); return n; } - HashSet seqs = new HashSet(); - for(int i=0; i temp = new HashSet(); - for(PreSequence pre : s[i]) { - pre.not.addAll(seqs); - Sequence seq = pre.buildSequence(n, false, dropAll); - temp.add(seq); - n.add(seq); - } - seqs.addAll(temp); - } - return n; - } - public String stringify(String s) { return StringUtil.unescapify(s); } public char unescape(char x, char c) { return unescape(c); } public char unescape(char c) { return StringUtil.unescapify("\\"+c).charAt(0); } @@ -182,8 +179,8 @@ public class MetaGrammar extends ReflectiveWalker { for(int i=0; i