From: root Date: Fri, 17 Feb 2006 00:47:00 +0000 (+0000) Subject: bug fixes X-Git-Tag: preEdgeChange~970 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d6013220de636bdbf1de9b703f5a052b1c3773e9;p=IRC.git bug fixes --- diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index b2aa3fdb..0c44e833 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -5,8 +5,11 @@ import java.util.*; public class BuildFlat { State state; + Hashtable temptovar; + public BuildFlat(State st) { state=st; + temptovar=new Hashtable(); } public void buildFlat() { @@ -108,9 +111,21 @@ public class BuildFlat { } private NodePair flattenDeclarationNode(DeclarationNode dn) { - throw new Error(); + VarDescriptor vd=dn.getVarDescriptor(); + TempDescriptor td=getTempforVar(vd); + return flattenExpressionNode(dn.getExpression(),td); } + private TempDescriptor getTempforVar(VarDescriptor vd) { + if (temptovar.containsKey(vd)) + return (TempDescriptor)temptovar.get(vd); + else { + TempDescriptor td=TempDescriptor.tempFactory(vd.getName()); + temptovar.put(vd,td); + return td; + } + } + private NodePair flattenIfStatementNode(IfStatementNode isn) { TempDescriptor cond_temp=TempDescriptor.tempFactory("condition"); NodePair cond=flattenExpressionNode(isn.getCondition(),cond_temp); diff --git a/Robust/src/IR/Tree/DeclarationNode.java b/Robust/src/IR/Tree/DeclarationNode.java index b354be9c..aa1b4eb5 100644 --- a/Robust/src/IR/Tree/DeclarationNode.java +++ b/Robust/src/IR/Tree/DeclarationNode.java @@ -15,6 +15,14 @@ public class DeclarationNode extends BlockStatementNode { else return vd.toString()+"="+init_en.printNode(0); } + public ExpressionNode getExpression() { + return init_en; + } + + public VarDescriptor getVarDescriptor() { + return vd; + } + public int kind() { return Kind.DeclarationNode; } diff --git a/Robust/src/IR/VarDescriptor.java b/Robust/src/IR/VarDescriptor.java index 610e7a66..d8726f28 100644 --- a/Robust/src/IR/VarDescriptor.java +++ b/Robust/src/IR/VarDescriptor.java @@ -21,6 +21,10 @@ public class VarDescriptor extends Descriptor { this.uniqueid=count++; } + public String getName() { + return identifier; + } + public String toString() { return td.toString()+" "+identifier; }