-package IR.Tree;
-import IR.Operation;
-import IR.TypeDescriptor;
-
-public class OpNode extends ExpressionNode {
- ExpressionNode left;
- ExpressionNode right;
- Operation op;
- TypeDescriptor td;
- TypeDescriptor lefttype;
- TypeDescriptor righttype;
-
- public OpNode(ExpressionNode l, ExpressionNode r, Operation o) {
- left=l;
- right=r;
- op=o;
- }
-
- public OpNode(ExpressionNode l, Operation o) {
- left=l;
- right=null;
- 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)+")";
- else
- return left.printNode(indent)+" "+op.toString()+" "+right.printNode(indent);
- }
-
- public void setLeftType(TypeDescriptor argtype) {
- this.lefttype=argtype;
- }
-
- public TypeDescriptor getLeftType() {
- return lefttype;
- }
-
- public void setRightType(TypeDescriptor argtype) {
- this.righttype=argtype;
- }
-
- public TypeDescriptor getRightType() {
- return righttype;
- }
-
- public TypeDescriptor getType() {
- return td;
- }
-
- public void setType(TypeDescriptor td) {
- this.td=td;
- }
-
- public int kind() {
- return Kind.OpNode;
- }
-}