Esempio n. 1
0
 public void visitConstructor(Constructor aConstructor) {
   out.print("Constructor(");
   ++indentLevel;
   out.println();
   printIndent();
   out.print("opnames=");
   if (aConstructor.getOpnames() != null) {
     out.println("[");
     ++indentLevel;
     for (OpName e : aConstructor.getOpnames()) {
       printIndent();
       e.visit(this);
     }
     --indentLevel;
     printIndent();
     out.println("]");
   } else {
     out.println("null");
   }
   printIndent();
   out.print("operands=");
   if (aConstructor.getOperands() != null) {
     out.println("[");
     ++indentLevel;
     for (Operand e : aConstructor.getOperands()) {
       printIndent();
       e.visit(this);
     }
     --indentLevel;
     printIndent();
     out.println("]");
   } else {
     out.println("null");
   }
   printIndent();
   out.print("type=");
   if (aConstructor.getType() != null) {
     aConstructor.getType().visit(this);
   } else {
     out.println("null");
   }
   printIndent();
   out.print("branches=");
   if (aConstructor.getBranches() != null) {
     out.println("[");
     ++indentLevel;
     for (Branch e : aConstructor.getBranches()) {
       printIndent();
       e.visit(this);
     }
     --indentLevel;
     printIndent();
     out.println("]");
   } else {
     out.println("null");
   }
   --indentLevel;
   printIndent();
   out.println(")");
 }
Esempio n. 2
0
 /** @see jaskell.compiler.JaskellVisitor#visit(Constructor) */
 public Object visit(Constructor a) {
   Type ret = a.getType();
   if (ret != null) return ret;
   String vname = a.getName();
   ConstructorDefinition def = (ConstructorDefinition) a.lookup(vname);
   if (def == null) // unknown symbol
   throw new CompilerException("Unknown constructor " + vname);
   ret = new TypeInstantiator(def.getType()).instance();
   a.setType(ret);
   return ret;
 }