From 62389166209e4f7e9c7f27e176e51d843123fbda Mon Sep 17 00:00:00 2001 From: bdemsky Date: Thu, 16 Feb 2006 23:09:05 +0000 Subject: [PATCH] changes --- Robust/src/IR/Flat/BuildFlat.java | 54 ++++++++++++++++++- .../{ReturnNode.java => FlatReturnNode.java} | 4 +- Robust/src/IR/Tree/BuildIR.java | 2 +- Robust/src/IR/Tree/DeclarationNode.java | 8 ++- Robust/src/IR/VarDescriptor.java | 7 +-- 5 files changed, 62 insertions(+), 13 deletions(-) rename Robust/src/IR/Flat/{ReturnNode.java => FlatReturnNode.java} (60%) diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index e00b6092..b2aa3fdb 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -53,7 +53,57 @@ public class BuildFlat { 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(); } @@ -131,10 +181,10 @@ public class BuildFlat { } 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); } diff --git a/Robust/src/IR/Flat/ReturnNode.java b/Robust/src/IR/Flat/FlatReturnNode.java similarity index 60% rename from Robust/src/IR/Flat/ReturnNode.java rename to Robust/src/IR/Flat/FlatReturnNode.java index ba11f761..d407a38d 100644 --- a/Robust/src/IR/Flat/ReturnNode.java +++ b/Robust/src/IR/Flat/FlatReturnNode.java @@ -1,9 +1,9 @@ package IR.Flat; -public class ReturnNode extends FlatNode { +public class FlatReturnNode extends FlatNode { TempDescriptor tempdesc; - public ReturnNode(TempDescriptor td) { + public FlatReturnNode(TempDescriptor td) { this.tempdesc=td; } diff --git a/Robust/src/IR/Tree/BuildIR.java b/Robust/src/IR/Tree/BuildIR.java index cba62390..0dafcc9d 100644 --- a/Robust/src/IR/Tree/BuildIR.java +++ b/Robust/src/IR/Tree/BuildIR.java @@ -279,7 +279,7 @@ public class BuildIR { if (epn!=null) en=parseExpression(epn.getFirstChild()); - blockstatements.add(new DeclarationNode(new VarDescriptor(t,identifier, en))); + blockstatements.add(new DeclarationNode(new VarDescriptor(t,identifier),en)); } } else if (isNode(pn,"nop")) { /* Do Nothing */ diff --git a/Robust/src/IR/Tree/DeclarationNode.java b/Robust/src/IR/Tree/DeclarationNode.java index d8825f3a..b354be9c 100644 --- a/Robust/src/IR/Tree/DeclarationNode.java +++ b/Robust/src/IR/Tree/DeclarationNode.java @@ -3,12 +3,16 @@ import IR.VarDescriptor; public class DeclarationNode extends BlockStatementNode { VarDescriptor vd; - public DeclarationNode(VarDescriptor var) { + ExpressionNode init_en; + public DeclarationNode(VarDescriptor var, ExpressionNode en) { vd=var; + init_en=en; } public String printNode(int indent) { - return vd.toString(); + if (init_en==null) + return vd.toString(); + else return vd.toString()+"="+init_en.printNode(0); } public int kind() { diff --git a/Robust/src/IR/VarDescriptor.java b/Robust/src/IR/VarDescriptor.java index fd007a55..610e7a66 100644 --- a/Robust/src/IR/VarDescriptor.java +++ b/Robust/src/IR/VarDescriptor.java @@ -12,21 +12,16 @@ public class VarDescriptor extends Descriptor { 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); } } -- 2.34.1