01: package gnu.ecmascript;
02:
03: import gnu.mapping.*;
04:
05: public class Reserved {
06: String name;
07: int prio;
08: Procedure proc;
09:
10: public static final int VAR_TOKEN = 30;
11: public static final int IF_TOKEN = 31;
12: public static final int WHILE_TOKEN = 32;
13: public static final int FOR_TOKEN = 33;
14: public static final int CONTINUE_TOKEN = 34;
15: public static final int BREAK_TOKEN = 35;
16: public static final int RETURN_TOKEN = 36;
17: public static final int WITH_TOKEN = 37;
18: public static final int ELSE_TOKEN = 38;
19: public static final int NEW_TOKEN = 39;
20: public static final int THIS_TOKEN = 40;
21: public static final int FUNCTION_TOKEN = 41;
22:
23: public static final int PLUS_OP = 1;
24: public static final int MINUS_OP = 2;
25: public static final int TIMES_OP = 3;
26: public static final int LSHIFT_OP = 4;
27: public static final int LESS_OP = 5;
28:
29: public Reserved(String name, int prio, Procedure proc) {
30: this .name = name;
31: this .prio = prio;
32: this .proc = proc;
33: }
34:
35: public Reserved(String name, int prio) {
36: this .name = name;
37: this .prio = prio;
38: }
39:
40: public Reserved(String name, int prio, int op) {
41: this .name = name;
42: this .prio = prio;
43: this .proc = new BinaryOp(name, op);
44: }
45:
46: final static Reserved opBoolOr = new Reserved("||", 1, 0);
47: final static Reserved opBoolAnd = new Reserved("&&", 2, 0);
48: final static Reserved opBitOr = new Reserved("|", 3, 0);
49: final static Reserved opBitXor = new Reserved("^", 4, 0);
50: final static Reserved opBitAnd = new Reserved("&", 5, 0);
51: final static Reserved opEqual = new Reserved("=", 6, 0);
52: final static Reserved opNotEqual = new Reserved("!=", 6, 0);
53: final static Reserved opLess = new Reserved("<", 7, LESS_OP);
54: final static Reserved opGreater = new Reserved(">", 7, 0);
55: final static Reserved opLessEqual = new Reserved("<=", 7, 0);
56: final static Reserved opGreaterEqual = new Reserved(">=", 7, 0);
57: final static Reserved opLshift = new Reserved("<<", 8, LSHIFT_OP);
58: final static Reserved opRshiftSigned = new Reserved(">>", 8, 0);
59: final static Reserved opRshiftUnsigned = new Reserved(">>>", 8, 0);
60: final static Reserved opPlus = new Reserved("+", 9, PLUS_OP);
61: final static Reserved opMinus = new Reserved("-", 9, MINUS_OP);
62: final static Reserved opTimes = new Reserved("*", 10, TIMES_OP);
63: final static Reserved opDivide = new Reserved("/", 10, 0);
64: final static Reserved opRemainder = new Reserved("%", 10, 0);
65:
66: static Reserved opPlusPlus, opMinusMinus; // FIXME
67:
68: public String toString() {
69: return "[Reserved \"" + name + "\" prio:" + prio + "]";
70: }
71:
72: public boolean isAssignmentOp() {
73: return false;
74: }
75: }
|