From: root Date: Fri, 17 Feb 2006 01:11:59 +0000 (+0000) Subject: OpNodes X-Git-Tag: preEdgeChange~968 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9bab27cb7ef0b5036296b4226c71dadbdd187865;p=IRC.git OpNodes --- diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index 0c44e833..d14bc6a3 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -85,7 +85,21 @@ public class BuildFlat { } private NodePair flattenOpNode(OpNode on,TempDescriptor out_temp) { - throw new Error(); + TempDescriptor temp_left=TempDescriptor.tempFactory("leftop"); + TempDescriptor temp_right=TempDescriptor.tempFactory("rightop"); + NodePair left=flattenExpressionNode(on.getLeft(),temp_left); + NodePair right; + if (on.getRight()!=null) + right=flattenExpressionNode(on.getRight(),temp_right); + else { + FlatNop nop=new FlatNop(); + right=new NodePair(nop,nop); + } + Operation op=on.getOp(); + FlatOpNode fon=new FlatOpNode(out_temp,temp_left,temp_right,op); + left.getEnd().addNext(right.getBegin()); + right.getEnd().addNext(fon); + return new NodePair(left.getBegin(),fon); } private NodePair flattenExpressionNode(ExpressionNode en, TempDescriptor out_temp) { diff --git a/Robust/src/IR/Tree/OpNode.java b/Robust/src/IR/Tree/OpNode.java index c85b951b..3b80faba 100644 --- a/Robust/src/IR/Tree/OpNode.java +++ b/Robust/src/IR/Tree/OpNode.java @@ -18,6 +18,18 @@ public class OpNode extends ExpressionNode { op=o; } + public ExpressionNode getLeft() { + return left; + } + + public ExpressionNode getRight() { + return right; + } + + public Operation getOp() { + return op; + } + public String printNode(int indent) { if (right==null) return op.toString()+"("+left.printNode(indent)+")";