5 public abstract class Expr {
7 TypeDescriptor td = null;
11 public abstract Set getRequiredDescriptors();
13 public abstract void generate(CodeWriter writer, VarDescriptor dest);
15 public TypeDescriptor getType() {
16 assert td != null : toString();
20 public abstract TypeDescriptor typecheck(SemanticAnalyzer sa);
22 public abstract void prettyPrint(PrettyPrinter pp);
24 public Set getInversedRelations() {
25 throw new IRException("unsupported");
28 public DNFRule constructDNF() {
29 return new DNFRule(this);