From: adam Date: Wed, 14 Dec 2005 06:29:51 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~554 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=0aaf5ea070beab0bca81d31feed763e69ad19a7a checkpoint darcs-hash:20051214062951-5007d-79c96dbd2e9fed338f34d10eb378ebac75df2b48.gz --- diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index 1c563e8..cb1510a 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -35,11 +35,11 @@ public class MetaGrammar extends ReflectiveWalker { public Element _rightparen_(Object e) { return SELF; } public PreSequence _amp_(PreSequence p, Object[] o) { - p.needs.add(new PreSequence(o, null, true).buildSequence(null, true, false)); + p.and.add(new PreSequence(o, null, true).buildSequence(null, true, false)); return p; } public PreSequence _amp__tilde_(PreSequence p, Object[] o) { - p.hates.add(new PreSequence(o, null, true).buildSequence(null, true, false)); + p.not.add(new PreSequence(o, null, true).buildSequence(null, true, false)); return p; } @@ -87,21 +87,11 @@ public class MetaGrammar extends ReflectiveWalker { public MetaGrammar grammar(Object o, Union[] u, Object x) { return this; } public char _backslash_n() { return '\n'; } public char _backslash_r() { return '\r'; } - //public String literal(String s) { return s; } - - public Object literal(String s) { - Element e = CharToken.string(s); - return new MyDrop(e); - //dropAll.add(e); - //return e; - } - - public Range range(char a) { return new Range(a, a); } + public Object literal(String s) { return new MyDrop(CharToken.string(s)); } public Range _minus_(char a, char b) { return new Range(a, b); } - public Element rangesx(Range[] rr) { return ranges("~", rr); } - public Element ranges(Range[] rr) { return ranges(null, rr); } public Element _leftbracket_ (Range[] rr) { return ranges(null, rr); } public Element _leftbracket__tilde_(Range[] rr) { return ranges("~", rr); } + public Range range(char a) { return new Range(a, a); } public Element ranges(Object o, Range[] rr) { Range.Set ret = !"~".equals(o+"") ? new Range.Set() : new Range.Set(new Range(true, true)); if (rr != null) @@ -110,21 +100,6 @@ public class MetaGrammar extends ReflectiveWalker { else ret.remove(r); return CharToken.set(ret); } - public Element rangex(Object o, Object[] r) { - Range.Set ret = o==null ? new Range.Set() : new Range.Set(new Range(true, true)); - if (r != null) - for(Object aa : r) { - Range range = - aa instanceof Range - ? (Range)aa - : aa instanceof Character - ? new Range(((Character)aa).charValue()) - : new Range(((String)aa).charAt(0)); - if (o==null) ret.add(range); - else ret.remove(range); - } - return CharToken.set(ret); - } //////////////////////////////////////////////////////////////////////////////// @@ -157,7 +132,7 @@ public class MetaGrammar extends ReflectiveWalker { if (s[i]==null) continue; HashSet temp = new HashSet(); for(PreSequence pre : s[i]) { - pre.hates.addAll(seqs); + pre.not.addAll(seqs); Sequence seq = pre.buildSequence(n, false, dropAll); temp.add(seq); n.add(seq); @@ -172,11 +147,6 @@ public class MetaGrammar extends ReflectiveWalker { public char unescape(char c) { return StringUtil.unescapify("\\"+c).charAt(0); } public PreSequence sequence(Object[] o) { return new PreSequence(o, null); } - public static class PreBrace { - public final Object[] o; - public PreBrace(Object[] o) { this.o = o; } - } - public PreSequence _equals__greater_(Object[] o, String s) { return new PreSequence(o, s); } public PreSequence wrap(Object[] o) { return new PreSequence(o, ""); } public PreSequence mwrap(Object[] o) { return new PreSequence(o, ""); } @@ -188,6 +158,11 @@ public class MetaGrammar extends ReflectiveWalker { return rewrite(o3); } + public static class PreBrace { + public final Object[] o; + public PreBrace(Object[] o) { this.o = o; } + } + public static class Rep { private final Element e; private final Element s; @@ -202,8 +177,8 @@ public class MetaGrammar extends ReflectiveWalker { } public static class PreSequence { - public final HashSet needs = new HashSet(); - public final HashSet hates = new HashSet(); + public final HashSet and = new HashSet(); + public final HashSet not = new HashSet(); public /*final*/ String tag; public final Object[] o; public final boolean keeper; @@ -239,8 +214,6 @@ public class MetaGrammar extends ReflectiveWalker { } public Sequence buildSequence(Union u) { return buildSequence(u, false, false); } public Sequence buildSequence(Union u, boolean lame, boolean dropAll) { - HashSet and = needs; - HashSet not = hates; for(Sequence s : and) u.add(s); for(Sequence s : not) u.add(s); HashSet set = new HashSet();