+++ /dev/null
-package IR;
-
-public class Operation {
- public static final int LOGIC_OR=1;
- public static final int LOGIC_AND=2;
- public static final int BIT_OR=3;
- public static final int BIT_XOR=4;
- public static final int BIT_AND=5;
- public static final int EQUAL=6;
- public static final int NOTEQUAL=7;
- public static final int LT=8;
- public static final int GT=9;
- public static final int LTE=10;
- public static final int GTE=11;
- public static final int LEFTSHIFT=12;
- public static final int RIGHTSHIFT=13;
- public static final int SUB=14;
- public static final int ADD=15;
- public static final int MULT=16;
- public static final int DIV=17;
- public static final int MOD=18;
- public static final int UNARYPLUS=19;
- public static final int UNARYMINUS=20;
- public static final int POSTINC=21;
- public static final int POSTDEC=22;
- public static final int PREINC=23;
- public static final int PREDEC=24;
- public static final int LOGIC_NOT=25;
- public static final int ISAVAILABLE=26;
- public static final int URIGHTSHIFT=27;
- public static final int COMP=28;
- /* Flat Operations */
- public static final int ASSIGN=100;
-
- private int operation;
- public Operation(int op) {
- this.operation=op;
- }
-
- public Operation(String op) {
- this.operation=parseOp(op);
- }
-
- public int getOp() {
- return operation;
- }
-
- public static int parseOp(String st) {
- if (st.equals("logical_or"))
- return LOGIC_OR;
- else if (st.equals("logical_and"))
- return LOGIC_AND;
- else if (st.equals("bitwise_or"))
- return BIT_OR;
- else if (st.equals("bitwise_xor"))
- return BIT_XOR;
- else if (st.equals("bitwise_and"))
- return BIT_AND;
- else if (st.equals("equal"))
- return EQUAL;
- else if (st.equals("not_equal"))
- return NOTEQUAL;
- else if (st.equals("comp_lt"))
- return LT;
- else if (st.equals("comp_gt"))
- return GT;
- else if (st.equals("comp_lte"))
- return LTE;
- else if (st.equals("comp_gte"))
- return GTE;
- else if (st.equals("leftshift"))
- return LEFTSHIFT;
- else if (st.equals("rightshift"))
- return RIGHTSHIFT;
- else if (st.equals("urightshift"))
- return URIGHTSHIFT;
- else if (st.equals("sub"))
- return SUB;
- else if (st.equals("add"))
- return ADD;
- else if (st.equals("mult"))
- return MULT;
- else if (st.equals("div"))
- return DIV;
- else if (st.equals("mod"))
- return MOD;
- else if (st.equals("unaryplus"))
- return UNARYPLUS;
- else if (st.equals("unaryminus"))
- return UNARYMINUS;
- else if (st.equals("postinc"))
- return POSTINC;
- else if (st.equals("postdec"))
- return POSTDEC;
- else if (st.equals("preinc"))
- return PREINC;
- else if (st.equals("predec"))
- return PREDEC;
- else if (st.equals("not"))
- return LOGIC_NOT;
- else if (st.equals("comp"))
- return COMP;
- else
- throw new Error(st);
- }
-
- public String toString() {
- if (operation==LOGIC_OR)
- return "||";
- else if (operation==LOGIC_AND)
- return "&&";
- else if (operation==LOGIC_NOT)
- return "not";
- else if (operation==COMP)
- return "~";
- else if (operation==BIT_OR)
- return "|";
- else if (operation==BIT_XOR)
- return "^";
- else if (operation==BIT_AND)
- return "&";
- else if (operation==EQUAL)
- return "==";
- else if (operation==NOTEQUAL)
- return "!=";
- else if (operation==LT)
- return "<";
- else if (operation==GT)
- return ">";
- else if (operation==LTE)
- return "<=";
- else if (operation==GTE)
- return ">=";
- else if (operation==LEFTSHIFT)
- return "<<";
- else if (operation==RIGHTSHIFT)
- return ">>";
- else if (operation==URIGHTSHIFT)
- return ">>>";
- else if (operation==SUB)
- return "-";
- else if (operation==ADD)
- return "+";
- else if (operation==MULT)
- return "*";
- else if (operation==DIV)
- return "/";
- else if (operation==MOD)
- return "%";
- else if (operation==UNARYPLUS)
- return "unaryplus";
- else if (operation==UNARYMINUS)
- return "unaryminus";
- else if (operation==POSTINC)
- return "postinc";
- else if (operation==POSTDEC)
- return "postdec";
- else if (operation==PREINC)
- return "preinc";
- else if (operation==PREDEC)
- return "predec";
- else if (operation==ASSIGN)
- return "assign";
- else if (operation==ISAVAILABLE)
- return "isavailable";
- else throw new Error("op="+operation);
- }
-
-
-}