import IR.Operation;
public class FlagOpNode extends FlagExpressionNode {
- FlagExpressionNode left;
- FlagExpressionNode right;
- Operation op;
-
- public FlagOpNode(FlagExpressionNode l, FlagExpressionNode r, Operation o) {
- left=l;
- right=r;
- op=o;
- }
-
- public FlagOpNode(FlagExpressionNode l, Operation o) {
- left=l;
- right=null;
- op=o;
- }
-
- public FlagExpressionNode getLeft() {
- return left;
- }
-
- public FlagExpressionNode 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 int kind() {
- return Kind.FlagOpNode;
- }
-
- public DNFFlag getDNF() {
- DNFFlag leftflag=left.getDNF();
- DNFFlag rightflag=right!=null?right.getDNF():null;
-
- if (op.getOp()==Operation.LOGIC_NOT) {
- return leftflag.not();
- } else if (op.getOp()==Operation.LOGIC_OR) {
- return leftflag.or(rightflag);
- } else if (op.getOp()==Operation.LOGIC_AND) {
- return leftflag.and(rightflag);
- } else throw new Error();
- }
+ FlagExpressionNode left;
+ FlagExpressionNode right;
+ Operation op;
+
+ public FlagOpNode(FlagExpressionNode l, FlagExpressionNode r, Operation o) {
+ left=l;
+ right=r;
+ op=o;
+ }
+
+ public FlagOpNode(FlagExpressionNode l, Operation o) {
+ left=l;
+ right=null;
+ op=o;
+ }
+
+ public FlagExpressionNode getLeft() {
+ return left;
+ }
+
+ public FlagExpressionNode 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 int kind() {
+ return Kind.FlagOpNode;
+ }
+
+ public DNFFlag getDNF() {
+ DNFFlag leftflag=left.getDNF();
+ DNFFlag rightflag=right!=null ? right.getDNF() : null;
+
+ if (op.getOp()==Operation.LOGIC_NOT) {
+ return leftflag.not();
+ } else if (op.getOp()==Operation.LOGIC_OR) {
+ return leftflag.or(rightflag);
+ } else if (op.getOp()==Operation.LOGIC_AND) {
+ return leftflag.and(rightflag);
+ } else throw new Error();
+ }
}