Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/sun/tools/java/Constants.java

/*
 * @(#)Constants.java	1.50 95/11/17 Arthur van Hoff
 *
 * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
 *
 * Permission to use, copy, modify, and distribute this software
 * and its documentation for NON-COMMERCIAL purposes and without
 * fee is hereby granted provided that this copyright notice
 * appears in all copies. Please refer to the file "copyright.html"
 * for further important copyright and licensing information.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
 * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
 * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
 * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
 * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
 */


package sun.tools.java;

/**
 * This interface defines constant that are used
 * throughout the compiler. It inherits from RuntimeConstants,
 * which is an autogenerated class that contains contstants
 * defined in the interpreter.
 *
 * @author 	Arthur van Hoff
 * @version 	1.50, 17 Nov 1995
 */

public
interface Constants extends RuntimeConstants {
    /*
     * Frequently used identifiers
     */
    public static final Identifier idAppend = Identifier.lookup("append");
    public static final Identifier idClassInit = Identifier.lookup("<clinit>");
    public static final Identifier idCode = Identifier.lookup("Code");
    public static final Identifier idInit = Identifier.lookup("<init>");
    public static final Identifier idLength = Identifier.lookup("length");
    public static final Identifier idNull = Identifier.lookup("");
    public static final Identifier idPrint = Identifier.lookup("print");
    public static final Identifier idPrintln = Identifier.lookup("println");
    public static final Identifier idStar = Identifier.lookup("*");
    public static final Identifier idSuper = Identifier.lookup("super");
    public static final Identifier idThis = Identifier.lookup("this");
    public static final Identifier idToString = Identifier.lookup("toString");
    public static final Identifier idValueOf = Identifier.lookup("valueOf");

    public static final Identifier idJavaLang = Identifier.lookup("java.lang");

    public static final Identifier idJavaLangCloneable = 
	  Identifier.lookup("java.lang.Cloneable");

    public static final Identifier idJavaLangError = 
	  Identifier.lookup("java.lang.Error");
    public static final Identifier idJavaLangException = 
	  Identifier.lookup("java.lang.Exception");
    public static final Identifier idJavaLangObject = 
	  Identifier.lookup("java.lang.Object");
    public static final Identifier idJavaLangRuntimeException = 
	  Identifier.lookup("java.lang.RuntimeException");
    public static final Identifier idJavaLangString = 
	  Identifier.lookup("java.lang.String");
    public static final Identifier idJavaLangStringBuffer = 
	  Identifier.lookup("java.lang.StringBuffer");
    public static final Identifier idJavaLangThrowable = 
	  Identifier.lookup("java.lang.Throwable");



    public static final Identifier idConstantValue = 
	  Identifier.lookup("ConstantValue");
    public static final Identifier idLocalVariables = 
	  Identifier.lookup("LocalVariables");
    public static final Identifier idLineNumberTable = 
	  Identifier.lookup("LineNumberTable");
    public static final Identifier idSourceFile = 
	  Identifier.lookup("SourceFile");
    public static final Identifier idDocumentation = 
	   Identifier.lookup("Documentation");
    public static final Identifier idExceptions = 
	   Identifier.lookup("Exceptions");



    /*
     * Flags
     */
    public static final int F_VERBOSE		= 1 << 0;
    public static final int F_DUMP		= 1 << 1;
    public static final int F_WARNINGS		= 1 << 2;
    public static final int F_DEBUG		= 1 << 3;
    public static final int F_OPTIMIZE		= 1 << 4;
    public static final int F_DEPENDENCIES	= 1 << 5;

    /*
     * Modifiers bit fields
     */
    public final int M_PUBLIC	 	= ACC_PUBLIC;
    public final int M_PRIVATE	 	= ACC_PRIVATE;
    public final int M_PROTECTED 	= ACC_PROTECTED;
    public final int M_STATIC	 	= ACC_STATIC;
    public final int M_TRANSIENT	= ACC_TRANSIENT;
    public final int M_SYNCHRONIZED	= ACC_SYNCHRONIZED;
    public final int M_ABSTRACT	 	= ACC_ABSTRACT;
    public final int M_NATIVE	 	= ACC_NATIVE;
    public final int M_FINAL	 	= ACC_FINAL;
    public final int M_VOLATILE		= ACC_VOLATILE;
    public final int M_INTERFACE	= ACC_INTERFACE;

    /*
     * Modifier masks
     */
    public final int MM_CLASS		= M_PUBLIC | M_INTERFACE | M_FINAL | M_ABSTRACT;
    public final int MM_FIELD		= M_PUBLIC | M_PRIVATE | M_PROTECTED |
					  M_FINAL | M_STATIC | M_TRANSIENT | M_VOLATILE;
    public final int MM_METHOD		= M_PUBLIC | M_PRIVATE | M_PROTECTED |
					  M_FINAL | M_STATIC | M_SYNCHRONIZED |
					  M_ABSTRACT | M_NATIVE;

    /*
     * Type codes
     */
    public static final int TC_BOOLEAN   = 0;
    public static final int TC_BYTE   	 = 1;
    public static final int TC_CHAR      = 2;
    public static final int TC_SHORT     = 3;
    public static final int TC_INT       = 4;
    public static final int TC_LONG      = 5;
    public static final int TC_FLOAT     = 6;
    public static final int TC_DOUBLE    = 7;
    public static final int TC_NULL      = 8;
    public static final int TC_ARRAY     = 9;
    public static final int TC_CLASS     = 10;
    public static final int TC_VOID      = 11;
    public static final int TC_METHOD    = 12;
    public static final int TC_ERROR     = 13;

    /*
     * Type Masks
     */
    public static final int TM_NULL      = 1 << TC_NULL;
    public static final int TM_VOID      = 1 << TC_VOID;
    public static final int TM_BOOLEAN   = 1 << TC_BOOLEAN;
    public static final int TM_BYTE      = 1 << TC_BYTE;
    public static final int TM_CHAR      = 1 << TC_CHAR;
    public static final int TM_SHORT     = 1 << TC_SHORT;
    public static final int TM_INT       = 1 << TC_INT;
    public static final int TM_LONG      = 1 << TC_LONG;
    public static final int TM_FLOAT     = 1 << TC_FLOAT;
    public static final int TM_DOUBLE    = 1 << TC_DOUBLE;
    public static final int TM_ARRAY     = 1 << TC_ARRAY;
    public static final int TM_CLASS     = 1 << TC_CLASS;
    public static final int TM_METHOD    = 1 << TC_METHOD;
    public static final int TM_ERROR     = 1 << TC_ERROR;

    public static final int TM_INT32     = TM_BYTE | TM_SHORT | TM_CHAR | TM_INT;
    public static final int TM_NUM32     = TM_INT32 | TM_FLOAT;
    public static final int TM_NUM64     = TM_LONG | TM_DOUBLE;
    public static final int TM_INTEGER   = TM_INT32 | TM_LONG;
    public static final int TM_REAL      = TM_FLOAT | TM_DOUBLE;
    public static final int TM_NUMBER    = TM_INTEGER | TM_REAL;
    public static final int TM_REFERENCE = TM_ARRAY | TM_CLASS | TM_NULL;

    /*
     * Class status
     */
    public static final int CS_UNDEFINED	= 0;
    public static final int CS_UNDECIDED	= 1;
    public static final int CS_BINARY		= 2;
    public static final int CS_SOURCE		= 3;
    public static final int CS_PARSED		= 4;
    public static final int CS_COMPILED		= 5;
    public static final int CS_NOTFOUND		= 6;

    /*
     * Attributes
     */
    public static final int ATT_ALL		= -1;
    public static final int ATT_CODE		= 1;

    /*
     * Number of bits used in file offsets
     */
    public static final int OFFSETBITS 		= 18;
    public static final int MAXFILESIZE		= (1 << OFFSETBITS) - 1;
    public static final int MAXLINENUMBER	= (1 << (32 - OFFSETBITS)) - 1;

    /*
     * Operators
     */
    public final int COMMA		= 0;
    public final int ASSIGN		= 1;

    public final int ASGMUL		= 2;
    public final int ASGDIV		= 3;
    public final int ASGREM		= 4;
    public final int ASGADD		= 5;
    public final int ASGSUB		= 6;
    public final int ASGLSHIFT		= 7;
    public final int ASGRSHIFT		= 8;
    public final int ASGURSHIFT		= 9;
    public final int ASGBITAND		= 10;
    public final int ASGBITOR	       	= 11;
    public final int ASGBITXOR		= 12;

    public final int COND		= 13;
    public final int OR			= 14;
    public final int AND		= 15;
    public final int BITOR		= 16;
    public final int BITXOR		= 17;
    public final int BITAND		= 18;
    public final int NE			= 19;
    public final int EQ			= 20;
    public final int GE			= 21;
    public final int GT			= 22;
    public final int LE			= 23;
    public final int LT			= 24;
    public final int INSTANCEOF		= 25;
    public final int LSHIFT		= 26;
    public final int RSHIFT		= 27;
    public final int URSHIFT		= 28;
    public final int ADD		= 29;
    public final int SUB		= 30;
    public final int DIV		= 31;
    public final int REM		= 32;
    public final int MUL		= 33;
    public final int CAST		= 34;		// (x)y
    public final int POS		= 35;		// +x
    public final int NEG		= 36;		// -x
    public final int NOT		= 37;
    public final int BITNOT		= 38;
    public final int PREINC		= 39;		// ++x
    public final int PREDEC		= 40; 		// --x
    public final int NEWARRAY		= 41;
    public final int NEWINSTANCE	= 42;
    public final int NEWFROMNAME	= 43;
    public final int POSTINC		= 44;		// x++
    public final int POSTDEC		= 45;		// x--
    public final int FIELD		= 46;
    public final int METHOD		= 47;		// x(y)
    public final int ARRAYACCESS	= 48;		// x[y]
    public final int NEW		= 49;
    public final int INC		= 50;
    public final int DEC		= 51;

    public final int CONVERT		= 55;		// implicit conversion
    public final int EXPR		= 56;		// (x)
    public final int ARRAY		= 57;		// {x, y, ...}
    public final int GOTO		= 58;

    /*
     * Value tokens
     */
    public final int IDENT		= 60;
    public final int BOOLEANVAL		= 61;
    public final int BYTEVAL		= 62;
    public final int CHARVAL		= 63;
    public final int SHORTVAL		= 64;
    public final int INTVAL		= 65;
    public final int LONGVAL		= 66;
    public final int FLOATVAL		= 67;
    public final int DOUBLEVAL		= 68;
    public final int STRINGVAL		= 69;

    /*
     * Type keywords
     */
    public final int BYTE		= 70;
    public final int CHAR		= 71;
    public final int SHORT		= 72;
    public final int INT		= 73;
    public final int LONG		= 74;
    public final int FLOAT		= 75;
    public final int DOUBLE		= 76;
    public final int VOID		= 77;
    public final int BOOLEAN		= 78;

    /*
     * Expression keywords
     */
    public final int TRUE		= 80;
    public final int FALSE		= 81;
    public final int THIS		= 82;
    public final int SUPER		= 83;
    public final int NULL		= 84;

    /*
     * Statement keywords
     */
    public final int IF			= 90;
    public final int ELSE		= 91;
    public final int FOR		= 92;
    public final int WHILE		= 93;
    public final int DO			= 94;
    public final int SWITCH		= 95;
    public final int CASE		= 96;
    public final int DEFAULT		= 97;
    public final int BREAK		= 98;
    public final int CONTINUE		= 99;
    public final int RETURN		= 100;
    public final int TRY		= 101;
    public final int CATCH		= 102;
    public final int FINALLY		= 103;
    public final int THROW		= 104;
    public final int STAT		= 105;
    public final int EXPRESSION		= 106;
    public final int DECLARATION	= 107;
    public final int VARDECLARATION	= 108;

    /*
     * Declaration keywords
     */
    public final int IMPORT		= 110;
    public final int CLASS		= 111;
    public final int EXTENDS		= 112;
    public final int IMPLEMENTS		= 113;
    public final int INTERFACE		= 114;
    public final int PACKAGE		= 115;

    /*
     * Modifier keywords
     */
    public final int PRIVATE		= 120;
    public final int PUBLIC		= 121;
    public final int PROTECTED		= 122;
    public final int CONST 		= 123;
    public final int STATIC		= 124;
    public final int TRANSIENT		= 125;
    public final int SYNCHRONIZED	= 126;
    public final int NATIVE		= 127;
    public final int FINAL		= 128;
    public final int VOLATILE		= 129;
    public final int ABSTRACT		= 130;

    /*
     * Punctuation
     */
    public final int SEMICOLON		= 135;
    public final int COLON		= 136;
    public final int QUESTIONMARK  	= 137;
    public final int LBRACE		= 138;
    public final int RBRACE		= 139;
    public final int LPAREN		= 140;
    public final int RPAREN		= 141;
    public final int LSQBRACKET		= 142;
    public final int RSQBRACKET		= 143;
    public final int THROWS             = 144;

    /*
     * Special tokens
     */
    public final int ERROR		= 145;		// an error 
    public final int COMMENT		= 146;          // not used anymore.
    public final int TYPE		= 147;
    public final int LENGTH		= 148;
    public final int INLINERETURN	= 149;
    public final int INLINEMETHOD	= 150;
    public final int INLINENEWINSTANCE	= 151;

    /*
     * Operator precedence
     */
    public static final int opPrecedence[] = {
	10,	11,	11,	11,	11,	11,	11,	11,	11,	11,
	11,	11,	11,	12,	13,	14,	15,	16,	17,	18,
	18,	19,	19,	19,	19,	19,	20,	20,	20,	21,
	21,	22,	22,	22,	23,	24,	24,	24,	24,	24,
	24,	25,	25, 	26,	26,	26,	26,	26,	26
    };

    /*
     * Operator names
     */
    public static final String opNames[] = {
	",",		"=",		"*=",		"/=",		"%=",
	"+=",		"-=",		"<<=",		">>=",		"<<<=",
	"&=",		"|=",		"^=",		"?:",		"||",
	"&&",		"|",		"^",		"&",		"!=",
	"==", 		">=",		">",		"<=",		"<",
	"instanceof",	"<<",		">>",		"<<<",		"+",
	"-",		"/",		"%",		"*",		"cast",
	"+",		"-",		"!",		"~",		"++",
	"--",		"new",		"new",		"new",		"++",
	"--",		"field",	"method",	"[]",		"new",
	"++",		"--",		null,		null,		null,

	"convert",	"expr",		"array",	"goto",		null,		

	"Identifier",	"boolean",	"byte",		"char",		"short",
	"int",		"long",		"float",	"double",	"string",

	"byte",		"char",		"short",	"int",		"long",
	"float",	"double",	"void",		"boolean",	null,

	"true",		"false",	"this",		"super",	"null",
	null,		null,		null,		null,		null,

	"if",		"else",		"for",		"while",	"do",
	"switch",	"case",		"default",	"break",	"continue",
	"return",	"try",		"catch",	"finally",	"throw",
	"stat",		"expression",	"declaration",	"declaration",  null,

	"import",	"class",	"extends",	"implements",	"interface",
	"package",	null,		null,		null,		null,

	"private",	"public",	"protected",	"const",	"static",
	"transient",	"synchronized",	"native",	"final",	"volatile",
	"abstract",	null,		null,		null,		null,

	";",		":",		"?",		"{",		"}",
	"(",		")",		"[",		"]",		"throws",
	"error",	"comment",	"type",		"length",	"inline-return",
	"inline-method","inline-new"
    };
}