public class CharAtom extends Atom<Character> {
+ public CharAtom() { this(new CharTopology()); }
public CharAtom(char a) { this(a,a); }
public CharAtom(char a, char b) { this(new CharTopology(a, b)); }
public CharAtom(CharTopology t) { this.t = t; }
+ public CharAtom(Topology<Character> t) { this(t instanceof CharTopology ? (CharTopology)t : new CharTopology(t)); }
private CharTopology t;
public Topology<Character> top() { return t; }
public static final Atom braces = new CharAtom(left,right) { public String toString() { return "[{}]"; } };
public static Atom set(Range.Set r) { return new CharAtom(new CharTopology(r)); }
-
public String toString() { return t.toString(); }
/** returns an element which exactly matches the string given */
public String toString() { return escapified; } };
Element[] refs = new Element[s.length()];
for(int i=0; i<refs.length; i++) refs[i] = new CharAtom(s.charAt(i));
- ret2.add(Sequence.constant(refs, s));
+ ret2.add(Sequence.create(refs, s));
ret = ret2;
}
return ret;
}
private static Union epsilon = new Union("()");
- static { epsilon.add(Sequence.empty); }
+ static { epsilon.add(Sequence.create()); }
+
+ public Topology<Atom<Character>> unwrap() { return this; }
+ public Topology<Atom<Character>> empty() { return new CharAtom(); }
+ public Topology<Character> getTokenTopology() { return top(); }
+
+ public boolean contains(Atom<Character> v) { return top().containsAll(((CharAtom)v).top()); }
+ public boolean disjoint(Topology<Atom<Character>> t) { return top().disjoint(((CharAtom)t).top()); }
+ public boolean containsAll(Topology<Atom<Character>> t) { return top().containsAll(((CharAtom)t).top()); }
+
+ public Topology<Atom<Character>> complement() { return new CharAtom(top().complement()); }
+ public Topology<Atom<Character>> intersect(Topology<Atom<Character>> t) { return new CharAtom(top().intersect(((CharAtom)t).top())); }
+ public Topology<Atom<Character>> minus(Topology<Atom<Character>> t) { return new CharAtom(top().minus(((CharAtom)t).top())); }
+ public Topology<Atom<Character>> union(Topology<Atom<Character>> t) { return new CharAtom(top().union(((CharAtom)t).top())); }
+
+ public int hashCode() { return top().hashCode(); }
+ public boolean equals(Object o) { return o != null && (o instanceof CharAtom) && ((CharAtom)o).top().equals(top()); }
+
}