sb.append('~');
ranges = ranges.complement();
}
- ranges = ranges.intersect(CharToken.all);
+ ranges = ranges.intersect(all);
for(Range r : ranges) {
if (r.isMinNegInf() || r.isMaxPosInf()) throw new Error("should not happen");
if (r.getMin()==r.getMax()) {
}
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<CharToken>(r)); }
+ public static Atom set(Range.Set r) { return new CharRange(new IntegerTopology<CharToken>(null, r)); }
+ private static final Range.Set all = new Range.Set(new Range(0, Character.MAX_VALUE));
/** returns an element which exactly matches the string given */
public static Element string(String s) {
Element ret;
if (s.length() == 1) {
ret =
- new CharRange(new IntegerTopology<CharToken>((int)s.charAt(0))) {
+ new CharRange(new IntegerTopology<CharToken>(null, (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<refs.length; i++) refs[i] = new CharRange(new IntegerTopology<CharToken>((int)s.charAt(i)));
+ for(int i=0; i<refs.length; i++) refs[i] = new CharRange(new IntegerTopology<CharToken>(null, (int)s.charAt(i)));
ret2.add(Sequence.constant(refs, s, null, null));
ret = ret2;
}