001: /*
002: * Copyright 2002 Sun Microsystems, Inc. All Rights Reserved.
003: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
004: *
005: * This code is free software; you can redistribute it and/or modify it
006: * under the terms of the GNU General Public License version 2 only, as
007: * published by the Free Software Foundation. Sun designates this
008: * particular file as subject to the "Classpath" exception as provided
009: * by Sun in the LICENSE file that accompanied this code.
010: *
011: * This code is distributed in the hope that it will be useful, but WITHOUT
012: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
013: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
014: * version 2 for more details (a copy is included in the LICENSE file that
015: * accompanied this code).
016: *
017: * You should have received a copy of the GNU General Public License version
018: * 2 along with this work; if not, write to the Free Software Foundation,
019: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
020: *
021: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
022: * CA 95054 USA or visit www.sun.com if you need additional information or
023: * have any questions.
024: */
025:
026: package sun.tools.javap;
027:
028: /**
029: * This interface defines constant that are used
030: * throughout the compiler. It inherits from RuntimeConstants,
031: * which is an autogenerated class that contains contstants
032: * defined in the interpreter.
033: */
034:
035: public interface Constants extends RuntimeConstants {
036:
037: /**
038: * End of input
039: */
040: public static final int EOF = -1;
041:
042: /*
043: * Flags
044: */
045: public static final int F_VERBOSE = 1 << 0;
046: public static final int F_DUMP = 1 << 1;
047: public static final int F_WARNINGS = 1 << 2;
048: public static final int F_DEBUG = 1 << 3;
049: public static final int F_OPTIMIZE = 1 << 4;
050: public static final int F_DEPENDENCIES = 1 << 5;
051:
052: /*
053: * Type codes
054: */
055: public static final int TC_BOOLEAN = 0;
056: public static final int TC_BYTE = 1;
057: public static final int TC_CHAR = 2;
058: public static final int TC_SHORT = 3;
059: public static final int TC_INT = 4;
060: public static final int TC_LONG = 5;
061: public static final int TC_FLOAT = 6;
062: public static final int TC_DOUBLE = 7;
063: public static final int TC_NULL = 8;
064: public static final int TC_ARRAY = 9;
065: public static final int TC_CLASS = 10;
066: public static final int TC_VOID = 11;
067: public static final int TC_METHOD = 12;
068: public static final int TC_ERROR = 13;
069:
070: /*
071: * Type Masks
072: */
073: public static final int TM_NULL = 1 << TC_NULL;
074: public static final int TM_VOID = 1 << TC_VOID;
075: public static final int TM_BOOLEAN = 1 << TC_BOOLEAN;
076: public static final int TM_BYTE = 1 << TC_BYTE;
077: public static final int TM_CHAR = 1 << TC_CHAR;
078: public static final int TM_SHORT = 1 << TC_SHORT;
079: public static final int TM_INT = 1 << TC_INT;
080: public static final int TM_LONG = 1 << TC_LONG;
081: public static final int TM_FLOAT = 1 << TC_FLOAT;
082: public static final int TM_DOUBLE = 1 << TC_DOUBLE;
083: public static final int TM_ARRAY = 1 << TC_ARRAY;
084: public static final int TM_CLASS = 1 << TC_CLASS;
085: public static final int TM_METHOD = 1 << TC_METHOD;
086: public static final int TM_ERROR = 1 << TC_ERROR;
087:
088: public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR
089: | TM_INT;
090: public static final int TM_NUM32 = TM_INT32 | TM_FLOAT;
091: public static final int TM_NUM64 = TM_LONG | TM_DOUBLE;
092: public static final int TM_INTEGER = TM_INT32 | TM_LONG;
093: public static final int TM_REAL = TM_FLOAT | TM_DOUBLE;
094: public static final int TM_NUMBER = TM_INTEGER | TM_REAL;
095: public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS
096: | TM_NULL;
097:
098: /*
099: * Class status
100: */
101: public static final int CS_UNDEFINED = 0;
102: public static final int CS_UNDECIDED = 1;
103: public static final int CS_BINARY = 2;
104: public static final int CS_SOURCE = 3;
105: public static final int CS_PARSED = 4;
106: public static final int CS_COMPILED = 5;
107: public static final int CS_NOTFOUND = 6;
108:
109: /*
110: * Attributes
111: */
112: public static final int ATT_ALL = -1;
113: public static final int ATT_CODE = 1;
114:
115: /*
116: * Number of bits used in file offsets
117: */
118: public static final int OFFSETBITS = 19;
119: public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1;
120: public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1;
121:
122: /*
123: * Operators
124: */
125: public final int COMMA = 0;
126: public final int ASSIGN = 1;
127:
128: public final int ASGMUL = 2;
129: public final int ASGDIV = 3;
130: public final int ASGREM = 4;
131: public final int ASGADD = 5;
132: public final int ASGSUB = 6;
133: public final int ASGLSHIFT = 7;
134: public final int ASGRSHIFT = 8;
135: public final int ASGURSHIFT = 9;
136: public final int ASGBITAND = 10;
137: public final int ASGBITOR = 11;
138: public final int ASGBITXOR = 12;
139:
140: public final int COND = 13;
141: public final int OR = 14;
142: public final int AND = 15;
143: public final int BITOR = 16;
144: public final int BITXOR = 17;
145: public final int BITAND = 18;
146: public final int NE = 19;
147: public final int EQ = 20;
148: public final int GE = 21;
149: public final int GT = 22;
150: public final int LE = 23;
151: public final int LT = 24;
152: public final int INSTANCEOF = 25;
153: public final int LSHIFT = 26;
154: public final int RSHIFT = 27;
155: public final int URSHIFT = 28;
156: public final int ADD = 29;
157: public final int SUB = 30;
158: public final int DIV = 31;
159: public final int REM = 32;
160: public final int MUL = 33;
161: public final int CAST = 34; // (x)y
162: public final int POS = 35; // +x
163: public final int NEG = 36; // -x
164: public final int NOT = 37;
165: public final int BITNOT = 38;
166: public final int PREINC = 39; // ++x
167: public final int PREDEC = 40; // --x
168: public final int NEWARRAY = 41;
169: public final int NEWINSTANCE = 42;
170: public final int NEWFROMNAME = 43;
171: public final int POSTINC = 44; // x++
172: public final int POSTDEC = 45; // x--
173: public final int FIELD = 46;
174: public final int METHOD = 47; // x(y)
175: public final int ARRAYACCESS = 48; // x[y]
176: public final int NEW = 49;
177: public final int INC = 50;
178: public final int DEC = 51;
179:
180: public final int CONVERT = 55; // implicit conversion
181: public final int EXPR = 56; // (x)
182: public final int ARRAY = 57; // {x, y, ...}
183: public final int GOTO = 58;
184:
185: /*
186: * Value tokens
187: */
188: public final int IDENT = 60;
189: public final int BOOLEANVAL = 61;
190: public final int BYTEVAL = 62;
191: public final int CHARVAL = 63;
192: public final int SHORTVAL = 64;
193: public final int INTVAL = 65;
194: public final int LONGVAL = 66;
195: public final int FLOATVAL = 67;
196: public final int DOUBLEVAL = 68;
197: public final int STRINGVAL = 69;
198:
199: /*
200: * Type keywords
201: */
202: public final int BYTE = 70;
203: public final int CHAR = 71;
204: public final int SHORT = 72;
205: public final int INT = 73;
206: public final int LONG = 74;
207: public final int FLOAT = 75;
208: public final int DOUBLE = 76;
209: public final int VOID = 77;
210: public final int BOOLEAN = 78;
211:
212: /*
213: * Expression keywords
214: */
215: public final int TRUE = 80;
216: public final int FALSE = 81;
217: public final int THIS = 82;
218: public final int SUPER = 83;
219: public final int NULL = 84;
220:
221: /*
222: * Statement keywords
223: */
224: public final int IF = 90;
225: public final int ELSE = 91;
226: public final int FOR = 92;
227: public final int WHILE = 93;
228: public final int DO = 94;
229: public final int SWITCH = 95;
230: public final int CASE = 96;
231: public final int DEFAULT = 97;
232: public final int BREAK = 98;
233: public final int CONTINUE = 99;
234: public final int RETURN = 100;
235: public final int TRY = 101;
236: public final int CATCH = 102;
237: public final int FINALLY = 103;
238: public final int THROW = 104;
239: public final int STAT = 105;
240: public final int EXPRESSION = 106;
241: public final int DECLARATION = 107;
242: public final int VARDECLARATION = 108;
243:
244: /*
245: * Declaration keywords
246: */
247: public final int IMPORT = 110;
248: public final int CLASS = 111;
249: public final int EXTENDS = 112;
250: public final int IMPLEMENTS = 113;
251: public final int INTERFACE = 114;
252: public final int PACKAGE = 115;
253:
254: /*
255: * Modifier keywords
256: */
257: public final int PRIVATE = 120;
258: public final int PUBLIC = 121;
259: public final int PROTECTED = 122;
260: public final int CONST = 123;
261: public final int STATIC = 124;
262: public final int TRANSIENT = 125;
263: public final int SYNCHRONIZED = 126;
264: public final int NATIVE = 127;
265: public final int FINAL = 128;
266: public final int VOLATILE = 129;
267: public final int ABSTRACT = 130;
268: public final int STRICT = 165;
269:
270: /*
271: * Punctuation
272: */
273: public final int SEMICOLON = 135;
274: public final int COLON = 136;
275: public final int QUESTIONMARK = 137;
276: public final int LBRACE = 138;
277: public final int RBRACE = 139;
278: public final int LPAREN = 140;
279: public final int RPAREN = 141;
280: public final int LSQBRACKET = 142;
281: public final int RSQBRACKET = 143;
282: public final int THROWS = 144;
283:
284: /*
285: * Special tokens
286: */
287: public final int ERROR = 145; // an error
288: public final int COMMENT = 146; // not used anymore.
289: public final int TYPE = 147;
290: public final int LENGTH = 148;
291: public final int INLINERETURN = 149;
292: public final int INLINEMETHOD = 150;
293: public final int INLINENEWINSTANCE = 151;
294:
295: /*
296: * Added for jasm
297: */
298: public final int METHODREF = 152;
299: public final int FIELDREF = 153;
300: public final int STACK = 154;
301: public final int LOCAL = 155;
302: public final int CPINDEX = 156;
303: public final int CPNAME = 157;
304: public final int SIGN = 158;
305: public final int BITS = 159;
306: public final int INF = 160;
307: public final int NAN = 161;
308: public final int INNERCLASS = 162;
309: public final int OF = 163;
310: public final int SYNTHETIC = 164;
311: // last used=165;
312:
313: /*
314: * Operator precedence
315: */
316: public static final int opPrecedence[] = { 10, 11, 11, 11, 11, 11,
317: 11, 11, 11, 11, 11, 11, 11, 12, 13, 14, 15, 16, 17, 18, 18,
318: 19, 19, 19, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 24,
319: 24, 24, 24, 24, 24, 25, 25, 26, 26, 26, 26, 26, 26 };
320:
321: /*
322: * Operator names
323: */
324: public static final String opNames[] = { ",", "=", "*=", "/=",
325: "%=", "+=", "-=", "<<=", ">>=", "<<<=", "&=", "|=", "^=",
326: "?:", "||", "&&", "|", "^", "&", "!=", "==", ">=", ">",
327: "<=", "<", "instanceof", "<<", ">>", "<<<", "+", "-", "/",
328: "%", "*", "cast", "+", "-", "!", "~", "++", "--", "new",
329: "new", "new", "++", "--", "field", "method", "[]", "new",
330: "++", "--", null, null, null,
331:
332: "convert", "expr", "array", "goto", null,
333:
334: "Identifier", "Boolean", "Byte", "Char", "Short",
335: "Integer", "Long", "Float", "Double", "String",
336:
337: "byte", "char", "short", "int", "long", "float", "double",
338: "void", "boolean", null,
339:
340: "true", "false", "this", "super", "null", null, null, null,
341: null, null,
342:
343: "if", "else", "for", "while", "do", "switch", "case",
344: "default", "break", "continue", "return", "try", "catch",
345: "finally", "throw", "stat", "expression", "declaration",
346: "declaration", null,
347:
348: "import", "class", "extends", "implements", "interface",
349: "package", null, null, null, null,
350:
351: "private", "public", "protected", "const", "static",
352: "transient", "synchronized", "native", "final", "volatile",
353: "abstract", null, null, null, null,
354:
355: ";", ":", "?", "{", "}", "(", ")", "[", "]", "throws",
356: "error", "comment", "type", "length", "inline-return",
357: "inline-method", "inline-new", "method", "field", "stack",
358: "locals", "CPINDEX", "CPName", "SIGN", "bits", "INF",
359: "NaN", "InnerClass", "of", "synthetic" };
360:
361: }
|