5 public abstract class Expr {
7 TypeDescriptor td = null;
10 /* Remap this's variables using the remap mapping */
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 String name() {
26 public abstract TypeDescriptor typecheck(SemanticAnalyzer sa);
28 public abstract void prettyPrint(PrettyPrinter pp);
30 public Set getInversedRelations() {
31 throw new IRException("unsupported");
34 public DNFRule constructDNF() {
35 return new DNFRule(this);
38 public Descriptor getDescriptor() {
42 public int[] getRepairs(boolean negated) {
43 System.out.println(this.getClass().getName());
44 throw new Error("Unrecognized EXPR");
47 public boolean inverted() {
51 public boolean usesDescriptor(Descriptor rd) {
52 System.out.println(this.getClass().getName());
53 throw new Error("UNIMPLEMENTED");