1 /* 2 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 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. 10 * 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). 16 * 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. 20 * 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 23 * questions. 24 */ 25 /* 26 * Portions Copyright (c) 2011 Jonas Maebe 27 */ 28 29 30 31 package fpc.tools.javapp; 32 33 /** 34 * This interface defines constant that are used 35 * throughout the compiler. It inherits from RuntimeConstants, 36 * which is an autogenerated class that contains contstants 37 * defined in the interpreter. 38 */ 39 40 public 41 interface Constants extends RuntimeConstants { 42 43 /** 44 * End of input 45 */ 46 public static final int EOF = -1; 47 48 /* 49 * Flags 50 */ 51 public static final int F_VERBOSE = 1 << 0; 52 public static final int F_DUMP = 1 << 1; 53 public static final int F_WARNINGS = 1 << 2; 54 public static final int F_DEBUG = 1 << 3; 55 public static final int F_OPTIMIZE = 1 << 4; 56 public static final int F_DEPENDENCIES = 1 << 5; 57 58 /* 59 * Type codes 60 */ 61 public static final int TC_BOOLEAN = 0; 62 public static final int TC_BYTE = 1; 63 public static final int TC_CHAR = 2; 64 public static final int TC_SHORT = 3; 65 public static final int TC_INT = 4; 66 public static final int TC_LONG = 5; 67 public static final int TC_FLOAT = 6; 68 public static final int TC_DOUBLE = 7; 69 public static final int TC_NULL = 8; 70 public static final int TC_ARRAY = 9; 71 public static final int TC_CLASS = 10; 72 public static final int TC_VOID = 11; 73 public static final int TC_METHOD = 12; 74 public static final int TC_ERROR = 13; 75 76 /* 77 * Type Masks 78 */ 79 public static final int TM_NULL = 1 << TC_NULL; 80 public static final int TM_VOID = 1 << TC_VOID; 81 public static final int TM_BOOLEAN = 1 << TC_BOOLEAN; 82 public static final int TM_BYTE = 1 << TC_BYTE; 83 public static final int TM_CHAR = 1 << TC_CHAR; 84 public static final int TM_SHORT = 1 << TC_SHORT; 85 public static final int TM_INT = 1 << TC_INT; 86 public static final int TM_LONG = 1 << TC_LONG; 87 public static final int TM_FLOAT = 1 << TC_FLOAT; 88 public static final int TM_DOUBLE = 1 << TC_DOUBLE; 89 public static final int TM_ARRAY = 1 << TC_ARRAY; 90 public static final int TM_CLASS = 1 << TC_CLASS; 91 public static final int TM_METHOD = 1 << TC_METHOD; 92 public static final int TM_ERROR = 1 << TC_ERROR; 93 94 public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT; 95 public static final int TM_NUM32 = TM_INT32 | TM_FLOAT; 96 public static final int TM_NUM64 = TM_LONG | TM_DOUBLE; 97 public static final int TM_INTEGER = TM_INT32 | TM_LONG; 98 public static final int TM_REAL = TM_FLOAT | TM_DOUBLE; 99 public static final int TM_NUMBER = TM_INTEGER | TM_REAL; 100 public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL; 101 102 /* 103 * Class status 104 */ 105 public static final int CS_UNDEFINED = 0; 106 public static final int CS_UNDECIDED = 1; 107 public static final int CS_BINARY = 2; 108 public static final int CS_SOURCE = 3; 109 public static final int CS_PARSED = 4; 110 public static final int CS_COMPILED = 5; 111 public static final int CS_NOTFOUND = 6; 112 113 /* 114 * Attributes 115 */ 116 public static final int ATT_ALL = -1; 117 public static final int ATT_CODE = 1; 118 119 /* 120 * Number of bits used in file offsets 121 */ 122 public static final int OFFSETBITS = 19; 123 public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1; 124 public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1; 125 126 /* 127 * Operators 128 */ 129 public final int COMMA = 0; 130 public final int ASSIGN = 1; 131 132 public final int ASGMUL = 2; 133 public final int ASGDIV = 3; 134 public final int ASGREM = 4; 135 public final int ASGADD = 5; 136 public final int ASGSUB = 6; 137 public final int ASGLSHIFT = 7; 138 public final int ASGRSHIFT = 8; 139 public final int ASGURSHIFT = 9; 140 public final int ASGBITAND = 10; 141 public final int ASGBITOR = 11; 142 public final int ASGBITXOR = 12; 143 144 public final int COND = 13; 145 public final int OR = 14; 146 public final int AND = 15; 147 public final int BITOR = 16; 148 public final int BITXOR = 17; 149 public final int BITAND = 18; 150 public final int NE = 19; 151 public final int EQ = 20; 152 public final int GE = 21; 153 public final int GT = 22; 154 public final int LE = 23; 155 public final int LT = 24; 156 public final int INSTANCEOF = 25; 157 public final int LSHIFT = 26; 158 public final int RSHIFT = 27; 159 public final int URSHIFT = 28; 160 public final int ADD = 29; 161 public final int SUB = 30; 162 public final int DIV = 31; 163 public final int REM = 32; 164 public final int MUL = 33; 165 public final int CAST = 34; // (x)y 166 public final int POS = 35; // +x 167 public final int NEG = 36; // -x 168 public final int NOT = 37; 169 public final int BITNOT = 38; 170 public final int PREINC = 39; // ++x 171 public final int PREDEC = 40; // --x 172 public final int NEWARRAY = 41; 173 public final int NEWINSTANCE = 42; 174 public final int NEWFROMNAME = 43; 175 public final int POSTINC = 44; // x++ 176 public final int POSTDEC = 45; // x-- 177 public final int FIELD = 46; 178 public final int METHOD = 47; // x(y) 179 public final int ARRAYACCESS = 48; // x[y] 180 public final int NEW = 49; 181 public final int INC = 50; 182 public final int DEC = 51; 183 184 public final int CONVERT = 55; // implicit conversion 185 public final int EXPR = 56; // (x) 186 public final int ARRAY = 57; // {x, y, ...} 187 public final int GOTO = 58; 188 189 /* 190 * Value tokens 191 */ 192 public final int IDENT = 60; 193 public final int BOOLEANVAL = 61; 194 public final int BYTEVAL = 62; 195 public final int CHARVAL = 63; 196 public final int SHORTVAL = 64; 197 public final int INTVAL = 65; 198 public final int LONGVAL = 66; 199 public final int FLOATVAL = 67; 200 public final int DOUBLEVAL = 68; 201 public final int STRINGVAL = 69; 202 203 /* 204 * Type keywords 205 */ 206 public final int BYTE = 70; 207 public final int CHAR = 71; 208 public final int SHORT = 72; 209 public final int INT = 73; 210 public final int LONG = 74; 211 public final int FLOAT = 75; 212 public final int DOUBLE = 76; 213 public final int VOID = 77; 214 public final int BOOLEAN = 78; 215 216 /* 217 * Expression keywords 218 */ 219 public final int TRUE = 80; 220 public final int FALSE = 81; 221 public final int THIS = 82; 222 public final int SUPER = 83; 223 public final int NULL = 84; 224 225 /* 226 * Statement keywords 227 */ 228 public final int IF = 90; 229 public final int ELSE = 91; 230 public final int FOR = 92; 231 public final int WHILE = 93; 232 public final int DO = 94; 233 public final int SWITCH = 95; 234 public final int CASE = 96; 235 public final int DEFAULT = 97; 236 public final int BREAK = 98; 237 public final int CONTINUE = 99; 238 public final int RETURN = 100; 239 public final int TRY = 101; 240 public final int CATCH = 102; 241 public final int FINALLY = 103; 242 public final int THROW = 104; 243 public final int STAT = 105; 244 public final int EXPRESSION = 106; 245 public final int DECLARATION = 107; 246 public final int VARDECLARATION = 108; 247 248 /* 249 * Declaration keywords 250 */ 251 public final int IMPORT = 110; 252 public final int CLASS = 111; 253 public final int EXTENDS = 112; 254 public final int IMPLEMENTS = 113; 255 public final int INTERFACE = 114; 256 public final int PACKAGE = 115; 257 258 /* 259 * Modifier keywords 260 */ 261 public final int PRIVATE = 120; 262 public final int PUBLIC = 121; 263 public final int PROTECTED = 122; 264 public final int CONST = 123; 265 public final int STATIC = 124; 266 public final int TRANSIENT = 125; 267 public final int SYNCHRONIZED = 126; 268 public final int NATIVE = 127; 269 public final int FINAL = 128; 270 public final int VOLATILE = 129; 271 public final int ABSTRACT = 130; 272 public final int STRICT = 165; 273 274 /* 275 * Punctuation 276 */ 277 public final int SEMICOLON = 135; 278 public final int COLON = 136; 279 public final int QUESTIONMARK = 137; 280 public final int LBRACE = 138; 281 public final int RBRACE = 139; 282 public final int LPAREN = 140; 283 public final int RPAREN = 141; 284 public final int LSQBRACKET = 142; 285 public final int RSQBRACKET = 143; 286 public final int THROWS = 144; 287 288 /* 289 * Special tokens 290 */ 291 public final int ERROR = 145; // an error 292 public final int COMMENT = 146; // not used anymore. 293 public final int TYPE = 147; 294 public final int LENGTH = 148; 295 public final int INLINERETURN = 149; 296 public final int INLINEMETHOD = 150; 297 public final int INLINENEWINSTANCE = 151; 298 299 /* 300 * Added for jasm 301 */ 302 public final int METHODREF = 152; 303 public final int FIELDREF = 153; 304 public final int STACK = 154; 305 public final int LOCAL = 155; 306 public final int CPINDEX = 156; 307 public final int CPNAME = 157; 308 public final int SIGN = 158; 309 public final int BITS = 159; 310 public final int INF = 160; 311 public final int NAN = 161; 312 public final int INNERCLASS = 162; 313 public final int OF = 163; 314 public final int SYNTHETIC = 164; 315 // last used=165; 316 317 /* 318 * Operator precedence 319 */ 320 public static final int opPrecedence[] = { 321 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 322 11, 11, 11, 12, 13, 14, 15, 16, 17, 18, 323 18, 19, 19, 19, 19, 19, 20, 20, 20, 21, 324 21, 22, 22, 22, 23, 24, 24, 24, 24, 24, 325 24, 25, 25, 26, 26, 26, 26, 26, 26 326 }; 327 328 /* 329 * Operator names 330 */ 331 public static final String opNames[] = { 332 ",", "=", "*=", "/=", "%=", 333 "+=", "-=", "<<=", ">>=", "<<<=", 334 "&=", "|=", "^=", "?:", "||", 335 "&&", "|", "^", "&", "!=", 336 "==", ">=", ">", "<=", "<", 337 "instanceof", "<<", ">>", "<<<", "+", 338 "-", "/", "%", "*", "cast", 339 "+", "-", "!", "~", "++", 340 "--", "new", "new", "new", "++", 341 "--", "field", "method", "[]", "new", 342 "++", "--", null, null, null, 343 344 "convert", "expr", "array", "goto", null, 345 346 "Identifier", "Boolean", "Byte", "Char", "Short", 347 "Integer", "Long", "Float", "Double", "String", 348 349 "byte", "char", "short", "int", "long", 350 "float", "double", "void", "boolean", null, 351 352 "true", "false", "this", "super", "null", 353 null, null, null, null, null, 354 355 "if", "else", "for", "while", "do", 356 "switch", "case", "default", "break", "continue", 357 "return", "try", "catch", "finally", "throw", 358 "stat", "expression", "declaration", "declaration", null, 359 360 "import", "class", "extends", "implements", "interface", 361 "package", null, null, null, null, 362 363 "private", "public", "protected", "const", "static", 364 "transient", "synchronized", "native", "final", "volatile", 365 "abstract", null, null, null, null, 366 367 ";", ":", "?", "{", "}", 368 "(", ")", "[", "]", "throws", 369 "error", "comment", "type", "length", "inline-return", 370 "inline-method", "inline-new", 371 "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN", 372 "bits", "INF", "NaN", "InnerClass", "of", "synthetic" 373 }; 374 375 } 376