return flattenExpressionNode(en.getExpression(),tmp);
}
+ private NodePair flattenAssignmentNode(AssignmentNode an,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenCastNode(CastNode cn,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenCreateObjectNode(CreateObjectNode con,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenFieldAccessNode(FieldAccessNode fan,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenLiteralNode(LiteralNode ln,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenMethodInvokeNode(MethodInvokeNode min,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenNameNode(NameNode nn,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
+ private NodePair flattenOpNode(OpNode on,TempDescriptor out_temp) {
+ throw new Error();
+ }
+
private NodePair flattenExpressionNode(ExpressionNode en, TempDescriptor out_temp) {
+ switch(en.kind()) {
+ case Kind.AssignmentNode:
+ return flattenAssignmentNode((AssignmentNode)en,out_temp);
+ case Kind.CastNode:
+ return flattenCastNode((CastNode)en,out_temp);
+ case Kind.CreateObjectNode:
+ return flattenCreateObjectNode((CreateObjectNode)en,out_temp);
+ case Kind.FieldAccessNode:
+ return flattenFieldAccessNode((FieldAccessNode)en,out_temp);
+ case Kind.LiteralNode:
+ return flattenLiteralNode((LiteralNode)en,out_temp);
+ case Kind.MethodInvokeNode:
+ return flattenMethodInvokeNode((MethodInvokeNode)en,out_temp);
+ case Kind.NameNode:
+ return flattenNameNode((NameNode)en,out_temp);
+ case Kind.OpNode:
+ return flattenOpNode((OpNode)en,out_temp);
+ }
throw new Error();
}
} else throw new Error();
}
- private NodePair flattenReturnNode(IR.Tree.ReturnNode rntree) {
+ private NodePair flattenReturnNode(ReturnNode rntree) {
TempDescriptor retval=TempDescriptor.tempFactory("ret_value");
NodePair cond=flattenExpressionNode(rntree.getReturnExpression(),retval);
- ReturnNode rnflat=new IR.Flat.ReturnNode(retval);
+ FlatReturnNode rnflat=new FlatReturnNode(retval);
cond.getEnd().addNext(rnflat);
return new NodePair(cond.getBegin(),rnflat);
}
protected TypeDescriptor td;
protected String identifier;
- protected ExpressionNode en;
- public VarDescriptor(TypeDescriptor t, String identifier, ExpressionNode e) {
+ public VarDescriptor(TypeDescriptor t, String identifier) {
super(identifier);
this.td=t;
this.identifier=identifier;
- this.en=e;
this.safename = "__" + name + "__";
this.uniqueid=count++;
}
public String toString() {
- if (en==null)
return td.toString()+" "+identifier;
- else
- return td.toString()+" "+identifier+"="+en.printNode(0);
}
}