changes to build script to increase java heap memory
[IRC.git] / Robust / src / IR / Tree / FlagOpNode.java
1 package IR.Tree;
2 import IR.Operation;
3
4 public class FlagOpNode extends FlagExpressionNode {
5     FlagExpressionNode left;
6     FlagExpressionNode right;
7     Operation op;
8
9     public FlagOpNode(FlagExpressionNode l, FlagExpressionNode r, Operation o) {
10         left=l;
11         right=r;
12         op=o;
13     }
14
15     public FlagOpNode(FlagExpressionNode l, Operation o) {
16         left=l;
17         right=null;
18         op=o;
19     }
20
21     public FlagExpressionNode getLeft() {
22         return left;
23     }
24
25     public FlagExpressionNode getRight() {
26         return right;
27     }
28
29     public Operation getOp() {
30         return op;
31     }
32
33     public String printNode(int indent) {
34         if (right==null)
35             return op.toString()+"("+left.printNode(indent)+")";
36         else
37             return left.printNode(indent)+" "+op.toString()+" "+right.printNode(indent);
38     }
39
40     public int kind() {
41         return Kind.FlagOpNode;
42     }
43
44     public DNFFlag getDNF() {
45         DNFFlag leftflag=left.getDNF();
46         DNFFlag rightflag=right!=null?right.getDNF():null;
47
48         if (op.getOp()==Operation.LOGIC_NOT) {
49             return leftflag.not();
50         } else if (op.getOp()==Operation.LOGIC_OR) {
51             return leftflag.or(rightflag);
52         } else if (op.getOp()==Operation.LOGIC_AND) {
53             return leftflag.and(rightflag);
54         } else throw new Error();
55     }
56 }