2 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
28 package org.apidesign.javap;
31 * This interface defines constant that are used
32 * throughout the compiler. It inherits from RuntimeConstants,
33 * which is an autogenerated class that contains contstants
34 * defined in the interpreter.
38 interface Constants extends RuntimeConstants {
43 public static final int EOF = -1;
48 public static final int F_VERBOSE = 1 << 0;
49 public static final int F_DUMP = 1 << 1;
50 public static final int F_WARNINGS = 1 << 2;
51 public static final int F_DEBUG = 1 << 3;
52 public static final int F_OPTIMIZE = 1 << 4;
53 public static final int F_DEPENDENCIES = 1 << 5;
58 public static final int TC_BOOLEAN = 0;
59 public static final int TC_BYTE = 1;
60 public static final int TC_CHAR = 2;
61 public static final int TC_SHORT = 3;
62 public static final int TC_INT = 4;
63 public static final int TC_LONG = 5;
64 public static final int TC_FLOAT = 6;
65 public static final int TC_DOUBLE = 7;
66 public static final int TC_NULL = 8;
67 public static final int TC_ARRAY = 9;
68 public static final int TC_CLASS = 10;
69 public static final int TC_VOID = 11;
70 public static final int TC_METHOD = 12;
71 public static final int TC_ERROR = 13;
76 public static final int TM_NULL = 1 << TC_NULL;
77 public static final int TM_VOID = 1 << TC_VOID;
78 public static final int TM_BOOLEAN = 1 << TC_BOOLEAN;
79 public static final int TM_BYTE = 1 << TC_BYTE;
80 public static final int TM_CHAR = 1 << TC_CHAR;
81 public static final int TM_SHORT = 1 << TC_SHORT;
82 public static final int TM_INT = 1 << TC_INT;
83 public static final int TM_LONG = 1 << TC_LONG;
84 public static final int TM_FLOAT = 1 << TC_FLOAT;
85 public static final int TM_DOUBLE = 1 << TC_DOUBLE;
86 public static final int TM_ARRAY = 1 << TC_ARRAY;
87 public static final int TM_CLASS = 1 << TC_CLASS;
88 public static final int TM_METHOD = 1 << TC_METHOD;
89 public static final int TM_ERROR = 1 << TC_ERROR;
91 public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
92 public static final int TM_NUM32 = TM_INT32 | TM_FLOAT;
93 public static final int TM_NUM64 = TM_LONG | TM_DOUBLE;
94 public static final int TM_INTEGER = TM_INT32 | TM_LONG;
95 public static final int TM_REAL = TM_FLOAT | TM_DOUBLE;
96 public static final int TM_NUMBER = TM_INTEGER | TM_REAL;
97 public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;
102 public static final int CS_UNDEFINED = 0;
103 public static final int CS_UNDECIDED = 1;
104 public static final int CS_BINARY = 2;
105 public static final int CS_SOURCE = 3;
106 public static final int CS_PARSED = 4;
107 public static final int CS_COMPILED = 5;
108 public static final int CS_NOTFOUND = 6;
113 public static final int ATT_ALL = -1;
114 public static final int ATT_CODE = 1;
117 * Number of bits used in file offsets
119 public static final int OFFSETBITS = 19;
120 public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1;
121 public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1;
126 public final int COMMA = 0;
127 public final int ASSIGN = 1;
129 public final int ASGMUL = 2;
130 public final int ASGDIV = 3;
131 public final int ASGREM = 4;
132 public final int ASGADD = 5;
133 public final int ASGSUB = 6;
134 public final int ASGLSHIFT = 7;
135 public final int ASGRSHIFT = 8;
136 public final int ASGURSHIFT = 9;
137 public final int ASGBITAND = 10;
138 public final int ASGBITOR = 11;
139 public final int ASGBITXOR = 12;
141 public final int COND = 13;
142 public final int OR = 14;
143 public final int AND = 15;
144 public final int BITOR = 16;
145 public final int BITXOR = 17;
146 public final int BITAND = 18;
147 public final int NE = 19;
148 public final int EQ = 20;
149 public final int GE = 21;
150 public final int GT = 22;
151 public final int LE = 23;
152 public final int LT = 24;
153 public final int INSTANCEOF = 25;
154 public final int LSHIFT = 26;
155 public final int RSHIFT = 27;
156 public final int URSHIFT = 28;
157 public final int ADD = 29;
158 public final int SUB = 30;
159 public final int DIV = 31;
160 public final int REM = 32;
161 public final int MUL = 33;
162 public final int CAST = 34; // (x)y
163 public final int POS = 35; // +x
164 public final int NEG = 36; // -x
165 public final int NOT = 37;
166 public final int BITNOT = 38;
167 public final int PREINC = 39; // ++x
168 public final int PREDEC = 40; // --x
169 public final int NEWARRAY = 41;
170 public final int NEWINSTANCE = 42;
171 public final int NEWFROMNAME = 43;
172 public final int POSTINC = 44; // x++
173 public final int POSTDEC = 45; // x--
174 public final int FIELD = 46;
175 public final int METHOD = 47; // x(y)
176 public final int ARRAYACCESS = 48; // x[y]
177 public final int NEW = 49;
178 public final int INC = 50;
179 public final int DEC = 51;
181 public final int CONVERT = 55; // implicit conversion
182 public final int EXPR = 56; // (x)
183 public final int ARRAY = 57; // {x, y, ...}
184 public final int GOTO = 58;
189 public final int IDENT = 60;
190 public final int BOOLEANVAL = 61;
191 public final int BYTEVAL = 62;
192 public final int CHARVAL = 63;
193 public final int SHORTVAL = 64;
194 public final int INTVAL = 65;
195 public final int LONGVAL = 66;
196 public final int FLOATVAL = 67;
197 public final int DOUBLEVAL = 68;
198 public final int STRINGVAL = 69;
203 public final int BYTE = 70;
204 public final int CHAR = 71;
205 public final int SHORT = 72;
206 public final int INT = 73;
207 public final int LONG = 74;
208 public final int FLOAT = 75;
209 public final int DOUBLE = 76;
210 public final int VOID = 77;
211 public final int BOOLEAN = 78;
214 * Expression keywords
216 public final int TRUE = 80;
217 public final int FALSE = 81;
218 public final int THIS = 82;
219 public final int SUPER = 83;
220 public final int NULL = 84;
225 public final int IF = 90;
226 public final int ELSE = 91;
227 public final int FOR = 92;
228 public final int WHILE = 93;
229 public final int DO = 94;
230 public final int SWITCH = 95;
231 public final int CASE = 96;
232 public final int DEFAULT = 97;
233 public final int BREAK = 98;
234 public final int CONTINUE = 99;
235 public final int RETURN = 100;
236 public final int TRY = 101;
237 public final int CATCH = 102;
238 public final int FINALLY = 103;
239 public final int THROW = 104;
240 public final int STAT = 105;
241 public final int EXPRESSION = 106;
242 public final int DECLARATION = 107;
243 public final int VARDECLARATION = 108;
246 * Declaration keywords
248 public final int IMPORT = 110;
249 public final int CLASS = 111;
250 public final int EXTENDS = 112;
251 public final int IMPLEMENTS = 113;
252 public final int INTERFACE = 114;
253 public final int PACKAGE = 115;
258 public final int PRIVATE = 120;
259 public final int PUBLIC = 121;
260 public final int PROTECTED = 122;
261 public final int CONST = 123;
262 public final int STATIC = 124;
263 public final int TRANSIENT = 125;
264 public final int SYNCHRONIZED = 126;
265 public final int NATIVE = 127;
266 public final int FINAL = 128;
267 public final int VOLATILE = 129;
268 public final int ABSTRACT = 130;
269 public final int STRICT = 165;
274 public final int SEMICOLON = 135;
275 public final int COLON = 136;
276 public final int QUESTIONMARK = 137;
277 public final int LBRACE = 138;
278 public final int RBRACE = 139;
279 public final int LPAREN = 140;
280 public final int RPAREN = 141;
281 public final int LSQBRACKET = 142;
282 public final int RSQBRACKET = 143;
283 public final int THROWS = 144;
288 public final int ERROR = 145; // an error
289 public final int COMMENT = 146; // not used anymore.
290 public final int TYPE = 147;
291 public final int LENGTH = 148;
292 public final int INLINERETURN = 149;
293 public final int INLINEMETHOD = 150;
294 public final int INLINENEWINSTANCE = 151;
299 public final int METHODREF = 152;
300 public final int FIELDREF = 153;
301 public final int STACK = 154;
302 public final int LOCAL = 155;
303 public final int CPINDEX = 156;
304 public final int CPNAME = 157;
305 public final int SIGN = 158;
306 public final int BITS = 159;
307 public final int INF = 160;
308 public final int NAN = 161;
309 public final int INNERCLASS = 162;
310 public final int OF = 163;
311 public final int SYNTHETIC = 164;
315 * Operator precedence
317 public static final int opPrecedence[] = {
318 10, 11, 11, 11, 11, 11, 11, 11, 11, 11,
319 11, 11, 11, 12, 13, 14, 15, 16, 17, 18,
320 18, 19, 19, 19, 19, 19, 20, 20, 20, 21,
321 21, 22, 22, 22, 23, 24, 24, 24, 24, 24,
322 24, 25, 25, 26, 26, 26, 26, 26, 26
328 public static final String opNames[] = {
329 ",", "=", "*=", "/=", "%=",
330 "+=", "-=", "<<=", ">>=", "<<<=",
331 "&=", "|=", "^=", "?:", "||",
332 "&&", "|", "^", "&", "!=",
333 "==", ">=", ">", "<=", "<",
334 "instanceof", "<<", ">>", "<<<", "+",
335 "-", "/", "%", "*", "cast",
336 "+", "-", "!", "~", "++",
337 "--", "new", "new", "new", "++",
338 "--", "field", "method", "[]", "new",
339 "++", "--", null, null, null,
341 "convert", "expr", "array", "goto", null,
343 "Identifier", "Boolean", "Byte", "Char", "Short",
344 "Integer", "Long", "Float", "Double", "String",
346 "byte", "char", "short", "int", "long",
347 "float", "double", "void", "boolean", null,
349 "true", "false", "this", "super", "null",
350 null, null, null, null, null,
352 "if", "else", "for", "while", "do",
353 "switch", "case", "default", "break", "continue",
354 "return", "try", "catch", "finally", "throw",
355 "stat", "expression", "declaration", "declaration", null,
357 "import", "class", "extends", "implements", "interface",
358 "package", null, null, null, null,
360 "private", "public", "protected", "const", "static",
361 "transient", "synchronized", "native", "final", "volatile",
362 "abstract", null, null, null, null,
364 ";", ":", "?", "{", "}",
365 "(", ")", "[", "]", "throws",
366 "error", "comment", "type", "length", "inline-return",
367 "inline-method", "inline-new",
368 "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN",
369 "bits", "INF", "NaN", "InnerClass", "of", "synthetic"