jtulach@144: /* jtulach@144: * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved. jtulach@144: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. jtulach@144: * jtulach@144: * This code is free software; you can redistribute it and/or modify it jtulach@144: * under the terms of the GNU General Public License version 2 only, as jtulach@144: * published by the Free Software Foundation. Oracle designates this jtulach@144: * particular file as subject to the "Classpath" exception as provided jtulach@144: * by Oracle in the LICENSE file that accompanied this code. jtulach@144: * jtulach@144: * This code is distributed in the hope that it will be useful, but WITHOUT jtulach@144: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or jtulach@144: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License jtulach@144: * version 2 for more details (a copy is included in the LICENSE file that jtulach@144: * accompanied this code). jtulach@144: * jtulach@144: * You should have received a copy of the GNU General Public License version jtulach@144: * 2 along with this work; if not, write to the Free Software Foundation, jtulach@144: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. jtulach@144: * jtulach@144: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA jtulach@144: * or visit www.oracle.com if you need additional information or have any jtulach@144: * questions. jtulach@144: */ jtulach@144: jtulach@144: jtulach@144: jtulach@167: package org.apidesign.javap; jtulach@144: jtulach@144: /** jtulach@144: * This interface defines constant that are used jtulach@144: * throughout the compiler. It inherits from RuntimeConstants, jtulach@144: * which is an autogenerated class that contains contstants jtulach@144: * defined in the interpreter. jtulach@144: */ jtulach@144: jtulach@144: public jtulach@144: interface Constants extends RuntimeConstants { jtulach@144: jtulach@144: /** jtulach@144: * End of input jtulach@144: */ jtulach@144: public static final int EOF = -1; jtulach@144: jtulach@144: /* jtulach@144: * Flags jtulach@144: */ jtulach@144: public static final int F_VERBOSE = 1 << 0; jtulach@144: public static final int F_DUMP = 1 << 1; jtulach@144: public static final int F_WARNINGS = 1 << 2; jtulach@144: public static final int F_DEBUG = 1 << 3; jtulach@144: public static final int F_OPTIMIZE = 1 << 4; jtulach@144: public static final int F_DEPENDENCIES = 1 << 5; jtulach@144: jtulach@144: /* jtulach@144: * Type codes jtulach@144: */ jtulach@144: public static final int TC_BOOLEAN = 0; jtulach@144: public static final int TC_BYTE = 1; jtulach@144: public static final int TC_CHAR = 2; jtulach@144: public static final int TC_SHORT = 3; jtulach@144: public static final int TC_INT = 4; jtulach@144: public static final int TC_LONG = 5; jtulach@144: public static final int TC_FLOAT = 6; jtulach@144: public static final int TC_DOUBLE = 7; jtulach@144: public static final int TC_NULL = 8; jtulach@144: public static final int TC_ARRAY = 9; jtulach@144: public static final int TC_CLASS = 10; jtulach@144: public static final int TC_VOID = 11; jtulach@144: public static final int TC_METHOD = 12; jtulach@144: public static final int TC_ERROR = 13; jtulach@144: jtulach@144: /* jtulach@144: * Type Masks jtulach@144: */ jtulach@144: public static final int TM_NULL = 1 << TC_NULL; jtulach@144: public static final int TM_VOID = 1 << TC_VOID; jtulach@144: public static final int TM_BOOLEAN = 1 << TC_BOOLEAN; jtulach@144: public static final int TM_BYTE = 1 << TC_BYTE; jtulach@144: public static final int TM_CHAR = 1 << TC_CHAR; jtulach@144: public static final int TM_SHORT = 1 << TC_SHORT; jtulach@144: public static final int TM_INT = 1 << TC_INT; jtulach@144: public static final int TM_LONG = 1 << TC_LONG; jtulach@144: public static final int TM_FLOAT = 1 << TC_FLOAT; jtulach@144: public static final int TM_DOUBLE = 1 << TC_DOUBLE; jtulach@144: public static final int TM_ARRAY = 1 << TC_ARRAY; jtulach@144: public static final int TM_CLASS = 1 << TC_CLASS; jtulach@144: public static final int TM_METHOD = 1 << TC_METHOD; jtulach@144: public static final int TM_ERROR = 1 << TC_ERROR; jtulach@144: jtulach@144: public static final int TM_INT32 = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT; jtulach@144: public static final int TM_NUM32 = TM_INT32 | TM_FLOAT; jtulach@144: public static final int TM_NUM64 = TM_LONG | TM_DOUBLE; jtulach@144: public static final int TM_INTEGER = TM_INT32 | TM_LONG; jtulach@144: public static final int TM_REAL = TM_FLOAT | TM_DOUBLE; jtulach@144: public static final int TM_NUMBER = TM_INTEGER | TM_REAL; jtulach@144: public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL; jtulach@144: jtulach@144: /* jtulach@144: * Class status jtulach@144: */ jtulach@144: public static final int CS_UNDEFINED = 0; jtulach@144: public static final int CS_UNDECIDED = 1; jtulach@144: public static final int CS_BINARY = 2; jtulach@144: public static final int CS_SOURCE = 3; jtulach@144: public static final int CS_PARSED = 4; jtulach@144: public static final int CS_COMPILED = 5; jtulach@144: public static final int CS_NOTFOUND = 6; jtulach@144: jtulach@144: /* jtulach@144: * Attributes jtulach@144: */ jtulach@144: public static final int ATT_ALL = -1; jtulach@144: public static final int ATT_CODE = 1; jtulach@144: jtulach@144: /* jtulach@144: * Number of bits used in file offsets jtulach@144: */ jtulach@144: public static final int OFFSETBITS = 19; jtulach@144: public static final int MAXFILESIZE = (1 << OFFSETBITS) - 1; jtulach@144: public static final int MAXLINENUMBER = (1 << (32 - OFFSETBITS)) - 1; jtulach@144: jtulach@144: /* jtulach@144: * Operators jtulach@144: */ jtulach@144: public final int COMMA = 0; jtulach@144: public final int ASSIGN = 1; jtulach@144: jtulach@144: public final int ASGMUL = 2; jtulach@144: public final int ASGDIV = 3; jtulach@144: public final int ASGREM = 4; jtulach@144: public final int ASGADD = 5; jtulach@144: public final int ASGSUB = 6; jtulach@144: public final int ASGLSHIFT = 7; jtulach@144: public final int ASGRSHIFT = 8; jtulach@144: public final int ASGURSHIFT = 9; jtulach@144: public final int ASGBITAND = 10; jtulach@144: public final int ASGBITOR = 11; jtulach@144: public final int ASGBITXOR = 12; jtulach@144: jtulach@144: public final int COND = 13; jtulach@144: public final int OR = 14; jtulach@144: public final int AND = 15; jtulach@144: public final int BITOR = 16; jtulach@144: public final int BITXOR = 17; jtulach@144: public final int BITAND = 18; jtulach@144: public final int NE = 19; jtulach@144: public final int EQ = 20; jtulach@144: public final int GE = 21; jtulach@144: public final int GT = 22; jtulach@144: public final int LE = 23; jtulach@144: public final int LT = 24; jtulach@144: public final int INSTANCEOF = 25; jtulach@144: public final int LSHIFT = 26; jtulach@144: public final int RSHIFT = 27; jtulach@144: public final int URSHIFT = 28; jtulach@144: public final int ADD = 29; jtulach@144: public final int SUB = 30; jtulach@144: public final int DIV = 31; jtulach@144: public final int REM = 32; jtulach@144: public final int MUL = 33; jtulach@144: public final int CAST = 34; // (x)y jtulach@144: public final int POS = 35; // +x jtulach@144: public final int NEG = 36; // -x jtulach@144: public final int NOT = 37; jtulach@144: public final int BITNOT = 38; jtulach@144: public final int PREINC = 39; // ++x jtulach@144: public final int PREDEC = 40; // --x jtulach@144: public final int NEWARRAY = 41; jtulach@144: public final int NEWINSTANCE = 42; jtulach@144: public final int NEWFROMNAME = 43; jtulach@144: public final int POSTINC = 44; // x++ jtulach@144: public final int POSTDEC = 45; // x-- jtulach@144: public final int FIELD = 46; jtulach@144: public final int METHOD = 47; // x(y) jtulach@144: public final int ARRAYACCESS = 48; // x[y] jtulach@144: public final int NEW = 49; jtulach@144: public final int INC = 50; jtulach@144: public final int DEC = 51; jtulach@144: jtulach@144: public final int CONVERT = 55; // implicit conversion jtulach@144: public final int EXPR = 56; // (x) jtulach@144: public final int ARRAY = 57; // {x, y, ...} jtulach@144: public final int GOTO = 58; jtulach@144: jtulach@144: /* jtulach@144: * Value tokens jtulach@144: */ jtulach@144: public final int IDENT = 60; jtulach@144: public final int BOOLEANVAL = 61; jtulach@144: public final int BYTEVAL = 62; jtulach@144: public final int CHARVAL = 63; jtulach@144: public final int SHORTVAL = 64; jtulach@144: public final int INTVAL = 65; jtulach@144: public final int LONGVAL = 66; jtulach@144: public final int FLOATVAL = 67; jtulach@144: public final int DOUBLEVAL = 68; jtulach@144: public final int STRINGVAL = 69; jtulach@144: jtulach@144: /* jtulach@144: * Type keywords jtulach@144: */ jtulach@144: public final int BYTE = 70; jtulach@144: public final int CHAR = 71; jtulach@144: public final int SHORT = 72; jtulach@144: public final int INT = 73; jtulach@144: public final int LONG = 74; jtulach@144: public final int FLOAT = 75; jtulach@144: public final int DOUBLE = 76; jtulach@144: public final int VOID = 77; jtulach@144: public final int BOOLEAN = 78; jtulach@144: jtulach@144: /* jtulach@144: * Expression keywords jtulach@144: */ jtulach@144: public final int TRUE = 80; jtulach@144: public final int FALSE = 81; jtulach@144: public final int THIS = 82; jtulach@144: public final int SUPER = 83; jtulach@144: public final int NULL = 84; jtulach@144: jtulach@144: /* jtulach@144: * Statement keywords jtulach@144: */ jtulach@144: public final int IF = 90; jtulach@144: public final int ELSE = 91; jtulach@144: public final int FOR = 92; jtulach@144: public final int WHILE = 93; jtulach@144: public final int DO = 94; jtulach@144: public final int SWITCH = 95; jtulach@144: public final int CASE = 96; jtulach@144: public final int DEFAULT = 97; jtulach@144: public final int BREAK = 98; jtulach@144: public final int CONTINUE = 99; jtulach@144: public final int RETURN = 100; jtulach@144: public final int TRY = 101; jtulach@144: public final int CATCH = 102; jtulach@144: public final int FINALLY = 103; jtulach@144: public final int THROW = 104; jtulach@144: public final int STAT = 105; jtulach@144: public final int EXPRESSION = 106; jtulach@144: public final int DECLARATION = 107; jtulach@144: public final int VARDECLARATION = 108; jtulach@144: jtulach@144: /* jtulach@144: * Declaration keywords jtulach@144: */ jtulach@144: public final int IMPORT = 110; jtulach@144: public final int CLASS = 111; jtulach@144: public final int EXTENDS = 112; jtulach@144: public final int IMPLEMENTS = 113; jtulach@144: public final int INTERFACE = 114; jtulach@144: public final int PACKAGE = 115; jtulach@144: jtulach@144: /* jtulach@144: * Modifier keywords jtulach@144: */ jtulach@144: public final int PRIVATE = 120; jtulach@144: public final int PUBLIC = 121; jtulach@144: public final int PROTECTED = 122; jtulach@144: public final int CONST = 123; jtulach@144: public final int STATIC = 124; jtulach@144: public final int TRANSIENT = 125; jtulach@144: public final int SYNCHRONIZED = 126; jtulach@144: public final int NATIVE = 127; jtulach@144: public final int FINAL = 128; jtulach@144: public final int VOLATILE = 129; jtulach@144: public final int ABSTRACT = 130; jtulach@144: public final int STRICT = 165; jtulach@144: jtulach@144: /* jtulach@144: * Punctuation jtulach@144: */ jtulach@144: public final int SEMICOLON = 135; jtulach@144: public final int COLON = 136; jtulach@144: public final int QUESTIONMARK = 137; jtulach@144: public final int LBRACE = 138; jtulach@144: public final int RBRACE = 139; jtulach@144: public final int LPAREN = 140; jtulach@144: public final int RPAREN = 141; jtulach@144: public final int LSQBRACKET = 142; jtulach@144: public final int RSQBRACKET = 143; jtulach@144: public final int THROWS = 144; jtulach@144: jtulach@144: /* jtulach@144: * Special tokens jtulach@144: */ jtulach@144: public final int ERROR = 145; // an error jtulach@144: public final int COMMENT = 146; // not used anymore. jtulach@144: public final int TYPE = 147; jtulach@144: public final int LENGTH = 148; jtulach@144: public final int INLINERETURN = 149; jtulach@144: public final int INLINEMETHOD = 150; jtulach@144: public final int INLINENEWINSTANCE = 151; jtulach@144: jtulach@144: /* jtulach@144: * Added for jasm jtulach@144: */ jtulach@144: public final int METHODREF = 152; jtulach@144: public final int FIELDREF = 153; jtulach@144: public final int STACK = 154; jtulach@144: public final int LOCAL = 155; jtulach@144: public final int CPINDEX = 156; jtulach@144: public final int CPNAME = 157; jtulach@144: public final int SIGN = 158; jtulach@144: public final int BITS = 159; jtulach@144: public final int INF = 160; jtulach@144: public final int NAN = 161; jtulach@144: public final int INNERCLASS = 162; jtulach@144: public final int OF = 163; jtulach@144: public final int SYNTHETIC = 164; jtulach@144: // last used=165; jtulach@144: jtulach@144: /* jtulach@144: * Operator precedence jtulach@144: */ jtulach@144: public static final int opPrecedence[] = { jtulach@144: 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, jtulach@144: 11, 11, 11, 12, 13, 14, 15, 16, 17, 18, jtulach@144: 18, 19, 19, 19, 19, 19, 20, 20, 20, 21, jtulach@144: 21, 22, 22, 22, 23, 24, 24, 24, 24, 24, jtulach@144: 24, 25, 25, 26, 26, 26, 26, 26, 26 jtulach@144: }; jtulach@144: jtulach@144: /* jtulach@144: * Operator names jtulach@144: */ jtulach@144: public static final String opNames[] = { jtulach@144: ",", "=", "*=", "/=", "%=", jtulach@144: "+=", "-=", "<<=", ">>=", "<<<=", jtulach@144: "&=", "|=", "^=", "?:", "||", jtulach@144: "&&", "|", "^", "&", "!=", jtulach@144: "==", ">=", ">", "<=", "<", jtulach@144: "instanceof", "<<", ">>", "<<<", "+", jtulach@144: "-", "/", "%", "*", "cast", jtulach@144: "+", "-", "!", "~", "++", jtulach@144: "--", "new", "new", "new", "++", jtulach@144: "--", "field", "method", "[]", "new", jtulach@144: "++", "--", null, null, null, jtulach@144: jtulach@144: "convert", "expr", "array", "goto", null, jtulach@144: jtulach@144: "Identifier", "Boolean", "Byte", "Char", "Short", jtulach@144: "Integer", "Long", "Float", "Double", "String", jtulach@144: jtulach@144: "byte", "char", "short", "int", "long", jtulach@144: "float", "double", "void", "boolean", null, jtulach@144: jtulach@144: "true", "false", "this", "super", "null", jtulach@144: null, null, null, null, null, jtulach@144: jtulach@144: "if", "else", "for", "while", "do", jtulach@144: "switch", "case", "default", "break", "continue", jtulach@144: "return", "try", "catch", "finally", "throw", jtulach@144: "stat", "expression", "declaration", "declaration", null, jtulach@144: jtulach@144: "import", "class", "extends", "implements", "interface", jtulach@144: "package", null, null, null, null, jtulach@144: jtulach@144: "private", "public", "protected", "const", "static", jtulach@144: "transient", "synchronized", "native", "final", "volatile", jtulach@144: "abstract", null, null, null, null, jtulach@144: jtulach@144: ";", ":", "?", "{", "}", jtulach@144: "(", ")", "[", "]", "throws", jtulach@144: "error", "comment", "type", "length", "inline-return", jtulach@144: "inline-method", "inline-new", jtulach@144: "method", "field", "stack", "locals", "CPINDEX", "CPName", "SIGN", jtulach@144: "bits", "INF", "NaN", "InnerClass", "of", "synthetic" jtulach@144: }; jtulach@144: jtulach@144: }