5 public abstract class Expr {
7 TypeDescriptor td = null;
11 public abstract boolean equals(Map remap, Expr e);
13 public abstract Set getRequiredDescriptors();
15 public abstract void generate(CodeWriter writer, VarDescriptor dest);
17 public TypeDescriptor getType() {
18 assert td != null : toString();
22 public abstract TypeDescriptor typecheck(SemanticAnalyzer sa);
24 public abstract void prettyPrint(PrettyPrinter pp);
26 public Set getInversedRelations() {
27 throw new IRException("unsupported");
30 public DNFRule constructDNF() {
31 return new DNFRule(this);
34 public Descriptor getDescriptor() {
38 public int[] getRepairs(boolean negated) {
42 public boolean inverted() {
46 public boolean usesDescriptor(RelationDescriptor rd) {