// Subclasses //////////////////////////////////////////////////////////////////////////////
- /** an atom which tracks the possible tokenset of some element, provided that element can only match single-token sequences */
- public static class Infer<T extends Input> extends Atom<T> {
- private final Element e;
- public Infer(Element e) { this.e = e; }
- public Topology<T> top() { return (Topology<T>)toAtom(e); }
- public String toString() { return e.toString(); }
- }
- /** an atom which tracks the inverse of some other atom */
- public static class Invert<T extends Input> extends Atom<T> {
- private final Atom<T> a;
- public Invert(Atom<T> a) { this.a = a; }
- public Topology<T> top() { return ((Topology<T>)a.top()).complement(); }
- public String toString() { return "~"+a; }
- }
-
- static Topology toAtom(Element e) {
+ public static Topology toAtom(Element e) {
if (e instanceof Atom) return (Atom)e;
if (e instanceof Sequence) return ((Sequence)e).toAtom();
Topology ret = null;