From: adam Date: Sun, 15 Jan 2006 09:03:07 +0000 (-0500) Subject: checkpoint X-Git-Tag: tag_for_25-Mar~375 X-Git-Url: http://git.megacz.com/?p=sbp.git;a=commitdiff_plain;h=b5156588b3abf1ecb9ea113b63ee6e5e8468b260 checkpoint darcs-hash:20060115090307-5007d-35d435f3b2126e6561192a0b904b66c806db8dbd.gz --- diff --git a/src/edu/berkeley/sbp/misc/CharRange.java b/src/edu/berkeley/sbp/misc/CharRange.java index 41aad06..932fbd6 100644 --- a/src/edu/berkeley/sbp/misc/CharRange.java +++ b/src/edu/berkeley/sbp/misc/CharRange.java @@ -34,4 +34,28 @@ public class CharRange extends Atom { sb.append(']'); return sb.toString(); } + public static final Atom leftBrace = CharToken.leftBrace; + public static final Atom rightBrace = CharToken.rightBrace; + public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology(r)); } + + /** returns an element which exactly matches the string given */ + public static Element string(String s) { + if (s.length() == 0) return Union.epsilon; + final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\""; + Element ret; + if (s.length() == 1) { + ret = + new CharRange(new IntegerTopology((int)s.charAt(0))) { + public String toString() { return escapified; } }; + } else { + Union ret2 = new Union("\""+s+"\"_str", true) { + public String toString() { return escapified; } }; + Element[] refs = new Element[s.length()]; + for(int i=0; i((int)s.charAt(i))); + ret2.add(Sequence.constant(refs, s, null, null)); + ret = ret2; + } + return ret; + } + } diff --git a/src/edu/berkeley/sbp/misc/CharToken.java b/src/edu/berkeley/sbp/misc/CharToken.java index 9067d14..f6cb40b 100644 --- a/src/edu/berkeley/sbp/misc/CharToken.java +++ b/src/edu/berkeley/sbp/misc/CharToken.java @@ -10,16 +10,6 @@ import edu.berkeley.sbp.util.*; /** an implementation of Token for streams of Java char values */ public class CharToken implements IntegerMappable { - /** returns an element matching all characters between start and end, inclusive */ - public static Atom positiveRange(char start, char end) { - return new CharRange(new IntegerTopology(new Range.Set(new Range((int)start, (int)end)))); - } - - /** returns an element matching all characters not between start and end, inclusive */ - public static Atom negativeRange(char start, char end) { - return new CharRange(new IntegerTopology(new Range.Set(new Range((int)start, (int)end)).complement().intersect(all))); - } - public static final Atom leftBrace = new CharRange(new IntegerTopology(9998)) { public String toString() { return "{"; } }; public static final Atom rightBrace = new CharRange(new IntegerTopology(9999)) { public String toString() { return "}"; } }; public static final CharToken left = new CharToken((char)9998); @@ -29,33 +19,7 @@ public class CharToken implements IntegerMappable { public static final Atom any = new CharRange(new IntegerTopology(all)); public static final Atom none = new CharRange(new IntegerTopology()); public static IntegerTopology range(Range r) { return new IntegerTopology(r); } - public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology(r)); } - - /** returns an element which exactly matches the string given */ - public static Element string(String s) { - if (s.length() == 0) return Union.epsilon; - final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\""; - Element ret; - if (s.length() == 1) { - ret = - new CharRange(new IntegerTopology((int)s.charAt(0))) { - public String toString() { return escapified; } }; - } else { - Union ret2 = new Union("\""+s+"\"_str", true) { - public String toString() { return escapified; } }; - Element[] refs = new Element[s.length()]; - for(int i=0; i((int)s.charAt(i))); - ret2.add(Sequence.constant(refs, s, null, null)); - ret = ret2; - } - return ret; - } - - /** FIXME */ - public static Topology top() { return new IntegerTopology(); } - public static Topology top(String s) throws java.text.ParseException { - return new IntegerTopology(Range.Set.parse(s)); - } + //public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology(r)); } // Private ////////////////////////////////////////////////////////////////////////////// diff --git a/src/edu/berkeley/sbp/misc/MetaGrammar.java b/src/edu/berkeley/sbp/misc/MetaGrammar.java index c8665fa..4b5f707 100644 --- a/src/edu/berkeley/sbp/misc/MetaGrammar.java +++ b/src/edu/berkeley/sbp/misc/MetaGrammar.java @@ -29,10 +29,10 @@ public class MetaGrammar extends StringWalker { private String startSymbol; private boolean strings; - private Element set(Range.Set r) { if (strings) throw new Error(); return CharToken.set(r); } - private Element string(String s) { return strings ? StringToken.string(s) : CharToken.string(s); } - private Atom leftBrace() { return strings ? StringToken.leftBrace : CharToken.leftBrace; } - private Atom rightBrace() { return strings ? StringToken.rightBrace : CharToken.rightBrace; } + private Element set(Range.Set r) { if (strings) throw new Error(); return CharRange.set(r); } + private Element string(String s) { return strings ? StringToken.string(s) : CharRange.string(s); } + private Atom leftBrace() { return strings ? StringToken.leftBrace : CharRange.leftBrace; } + private Atom rightBrace() { return strings ? StringToken.rightBrace : CharRange.rightBrace; } public MetaGrammar() { this("s", false); } public MetaGrammar(String s) { this(s, false); }