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() {
23 System.out.println(this.getClass().getName());
27 public abstract TypeDescriptor typecheck(SemanticAnalyzer sa);
29 public abstract void prettyPrint(PrettyPrinter pp);
31 public Set getInversedRelations() {
32 throw new IRException("unsupported");
35 public DNFRule constructDNF() {
36 return new DNFRule(this);
39 public Descriptor getDescriptor() {
43 public boolean isValue() {
47 public int[] getRepairs(boolean negated, Termination t) {
48 System.out.println(this.getClass().getName());
49 throw new Error("Unrecognized EXPR");
52 public boolean inverted() {
56 public boolean usesDescriptor(Descriptor rd) {
57 System.out.println(this.getClass().getName());
58 throw new Error("UNIMPLEMENTED");
60 public boolean isNull() {
63 public boolean isNonNull() {
66 public Set freeVars() {
70 public void findmatch(Descriptor d, Set s) {
73 public Set getfunctions() {
77 public SetDescriptor getSet() {
78 throw new Error("No Set for this Expr");
81 public boolean isSafe() {