X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fsbp%2Fchr%2FCharAtom.java;h=f0b7a9e0b58f452b21d61ce2e1491e2ac064e39a;hp=c0df627c090ce29edc5ebbec67289f73d645e6e4;hb=584cef55d8811e3215858fde22e708d2a3d1cf70;hpb=189d68c64f7aaec90b7cdef0fb2c358fe4f0dd21 diff --git a/src/edu/berkeley/sbp/chr/CharAtom.java b/src/edu/berkeley/sbp/chr/CharAtom.java index c0df627..f0b7a9e 100644 --- a/src/edu/berkeley/sbp/chr/CharAtom.java +++ b/src/edu/berkeley/sbp/chr/CharAtom.java @@ -1,3 +1,5 @@ +// Copyright 2006 all rights reserved; see LICENSE file for BSD-style license + package edu.berkeley.sbp.chr; import java.io.*; import java.util.*; @@ -10,27 +12,28 @@ import edu.berkeley.sbp.Input.Location; public class CharAtom extends Atom { + 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 t) { this(t instanceof CharTopology ? (CharTopology)t : new CharTopology(t)); } private CharTopology t; public Topology top() { return t; } public static final char left = (char)9998; public static final char right = (char)9999; - public static final Atom leftBrace = new CharAtom(left,left) { public String toString() { return "[{]"; } }; - public static final Atom rightBrace = new CharAtom(right,right) { public String toString() { return "[}]"; } }; - public static final Atom braces = new CharAtom(left,right) { public String toString() { return "[{}]"; } }; + public static final Atom leftBrace = new CharAtom(left,left) { public String toString() { return ">>"; } }; + public static final Atom rightBrace = new CharAtom(right,right) { public String toString() { return "<<"; } }; + //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 static Element string(String s) { return string(s, true); } public static Element string(String s, boolean share) { - if (share && s.length() == 0) return epsilon; + if (share && s.length() == 0) return emptyString; final String escapified = "\""+StringUtil.escapify(s, "\"\r\n\\")+"\""; Element ret; if (share && s.length() == 1) { @@ -42,12 +45,32 @@ public class CharAtom extends Atom { public String toString() { return escapified; } }; Element[] refs = new Element[s.length()]; for(int i=0; i> unwrap() { return this; } + public Topology> empty() { return new CharAtom(); } + public Topology getTokenTopology() { return top(); } + + public boolean contains(Atom v) { return top().containsAll(((CharAtom)v).top()); } + public boolean disjoint(Topology> t) { return top().disjoint(((CharAtom)t).top()); } + public boolean containsAll(Topology> t) { return top().containsAll(((CharAtom)t).top()); } + + public Topology> complement() { return new CharAtom(top().complement()); } + public Topology> intersect(Topology> t) { return new CharAtom(top().intersect(((CharAtom)t).top())); } + public Topology> minus(Topology> t) { return new CharAtom(top().minus(((CharAtom)t).top())); } + public Topology> union(Topology> 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()); } + }