
org.mozilla.javascript.Token1 Maven / Gradle / Ivy
/* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Rhino code, released
* May 6, 1999.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1997-1999
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Roger Lawrence
* Mike McCabe
* Igor Bukanov
* Bob Jervis
* Milen Nankov
*
* Alternatively, the contents of this file may be used under the terms of
* the GNU General Public License Version 2 or later (the "GPL"), in which
* case the provisions of the GPL are applicable instead of those above. If
* you wish to allow use of your version of this file only under the terms of
* the GPL and not to allow others to use your version of this file under the
* MPL, indicate your decision by deleting the provisions above and replacing
* them with the notice and other provisions required by the GPL. If you do
* not delete the provisions above, a recipient may use your version of this
* file under either the MPL or the GPL.
*
* ***** END LICENSE BLOCK ***** */
package org.mozilla.javascript;
/**
* This class implements the JavaScript scanner.
*
* It is based on the C source files jsscan.c and jsscan.h in the jsref package.
*
* @see org.mozilla.javascript.Parser1
*
* @author Mike McCabe
* @author Brendan Eich
*/
@Deprecated
public class Token1
{
// debug flags
public static final boolean printTrees = false;
static final boolean printICode = false;
static final boolean printNames = printTrees || printICode;
/**
* Token types. These values correspond to JSTokenType values in jsscan.c.
*/
public final static int
// start enum
ERROR = -1, // well-known as the only code < EOF
EOF = 0, // end of file token - (not EOF_CHAR)
EOL = 1, // end of line
// Interpreter reuses the following as bytecodes
FIRST_BYTECODE_TOKEN = 2,
ENTERWITH = 2, LEAVEWITH = 3, RETURN = 4, GOTO = 5, IFEQ = 6,
IFNE = 7,
SETNAME = 8,
BITOR = 9, BITXOR = 10, BITAND = 11, EQ = 12, NE = 13, LT = 14,
LE = 15,
GT = 16,
GE = 17, LSH = 18, RSH = 19, URSH = 20, ADD = 21, SUB = 22,
MUL = 23,
DIV = 24,
MOD = 25, NOT = 26, BITNOT = 27, POS = 28, NEG = 29,
NEW = 30,
DELPROP = 31,
TYPEOF = 32, GETPROP = 33, GETPROPNOWARN = 34,
SETPROP = 35,
GETELEM = 36,
SETELEM = 37, CALL = 38, NAME = 39, NUMBER = 40,
STRING = 41,
NULL = 42,
THIS = 43,
FALSE = 44,
TRUE = 45,
SHEQ = 46, // shallow equality (===)
SHNE = 47, // shallow inequality (!==)
REGEXP = 48, BINDNAME = 49,
THROW = 50,
RETHROW = 51, // rethrow caught exception: catch (e if ) use it
IN = 52, INSTANCEOF = 53, LOCAL_LOAD = 54, GETVAR = 55,
SETVAR = 56,
CATCH_SCOPE = 57,
ENUM_INIT_KEYS = 58, ENUM_INIT_VALUES = 59,
ENUM_INIT_ARRAY = 60,
ENUM_NEXT = 61,
ENUM_ID = 62, THISFN = 63, RETURN_RESULT = 64, // to return previously stored
// return result
ARRAYLIT = 65, // array literal
OBJECTLIT = 66, // object literal
GET_REF = 67, // *reference
SET_REF = 68, // *reference = something
DEL_REF = 69, // delete reference
REF_CALL = 70, // f(args) = something or f(args)++
REF_SPECIAL = 71, // reference for special properties like __proto
YIELD = 72, // JS 1.7 yield pseudo keyword
// For XML support:
DEFAULTNAMESPACE = 73, // default xml namespace =
ESCXMLATTR = 74, ESCXMLTEXT = 75, REF_MEMBER = 76, // Reference for x.@y, x..y
// etc.
REF_NS_MEMBER = 77, // Reference for x.ns::y, x..ns::y etc.
REF_NAME = 78, // Reference for @y, @[y] etc.
REF_NS_NAME = 79; // Reference for ns::y, @ns::y@[y] etc.
// End of interpreter bytecodes
public final static int LAST_BYTECODE_TOKEN = REF_NS_NAME,
TRY = 80, SEMI = 81, // semicolon
LB = 82, // left and right brackets
RB = 83, LC = 84, // left and right curlies (braces)
RC = 85, LP = 86, // left and right parentheses
RP = 87, COMMA = 88, // comma operator
ASSIGN = 89, // simple assignment (=)
ASSIGN_BITOR = 90, // |=
ASSIGN_BITXOR = 91, // ^=
ASSIGN_BITAND = 92, // |=
ASSIGN_LSH = 93, // <<=
ASSIGN_RSH = 94, // >>=
ASSIGN_URSH = 95, // >>>=
ASSIGN_ADD = 96, // +=
ASSIGN_SUB = 97, // -=
ASSIGN_MUL = 98, // *=
ASSIGN_DIV = 99, // /=
ASSIGN_MOD = 100; // %=
public final static int FIRST_ASSIGN = ASSIGN, LAST_ASSIGN = ASSIGN_MOD,
HOOK = 101, // conditional (?:)
COLON = 102, OR = 103, // logical or (||)
AND = 104, // logical and (&&)
INC = 105, // increment/decrement (++ --)
DEC = 106, DOT = 107, // member operator (.)
FUNCTION = 108, // function keyword
EXPORT = 109, // export keyword
IMPORT = 110, // import keyword
IF = 111, // if keyword
ELSE = 112, // else keyword
SWITCH = 113, // switch keyword
CASE = 114, // case keyword
DEFAULT = 115, // default keyword
WHILE = 116, // while keyword
DO = 117, // do keyword
FOR = 118, // for keyword
BREAK = 119, // break keyword
CONTINUE = 120, // continue keyword
VAR = 121, // var keyword
WITH = 122, // with keyword
CATCH = 123, // catch keyword
FINALLY = 124, // finally keyword
VOID = 125, // void keyword
RESERVED = 126, // reserved keywords
EMPTY = 127,
/*
* types used for the parse tree - these never get returned by the scanner.
*/
BLOCK = 128, // statement block
LABEL = 129, // label
TARGET = 130, LOOP = 131, EXPR_VOID = 132, // expression statement in
// functions
EXPR_RESULT = 133, // expression statement in scripts
JSR = 134, SCRIPT = 135, // top-level node for entire script
TYPEOFNAME = 136, // for typeof(simple-name)
USE_STACK = 137, SETPROP_OP = 138, // x.y op= something
SETELEM_OP = 139, // x[y] op= something
LOCAL_BLOCK = 140, SET_REF_OP = 141, // *reference op= something
// For XML support:
DOTDOT = 142, // member operator (..)
COLONCOLON = 143, // namespace::name
XML = 144, // XML type
DOTQUERY = 145, // .() -- e.g., x.emps.emp.(name == "terry")
XMLATTR = 146, // @
XMLEND = 147,
// Optimizer-only-tokens
TO_OBJECT = 148, TO_DOUBLE = 149,
GET = 150, // JS 1.5 get pseudo keyword
SET = 151, // JS 1.5 set pseudo keyword
LET = 152, // JS 1.7 let pseudo keyword
CONST = 153, SETCONST = 154, SETCONSTVAR = 155, ARRAYCOMP = 156, // array
// comprehension
LETEXPR = 157, WITHEXPR = 158, DEBUGGER = 159, LAST_TOKEN = 159;
public static String name(final int token)
{
// if (!printNames) {
// return String.valueOf(token);
// }
switch (token)
{
case ERROR:
return "ERROR";
case EOF:
return "EOF";
case EOL:
return "EOL";
case ENTERWITH:
return "ENTERWITH";
case LEAVEWITH:
return "LEAVEWITH";
case RETURN:
return "RETURN";
case GOTO:
return "GOTO";
case IFEQ:
return "IFEQ";
case IFNE:
return "IFNE";
case SETNAME:
return "SETNAME";
case BITOR:
return "BITOR";
case BITXOR:
return "BITXOR";
case BITAND:
return "BITAND";
case EQ:
return "EQ";
case NE:
return "NE";
case LT:
return "LT";
case LE:
return "LE";
case GT:
return "GT";
case GE:
return "GE";
case LSH:
return "LSH";
case RSH:
return "RSH";
case URSH:
return "URSH";
case ADD:
return "ADD";
case SUB:
return "SUB";
case MUL:
return "MUL";
case DIV:
return "DIV";
case MOD:
return "MOD";
case NOT:
return "NOT";
case BITNOT:
return "BITNOT";
case POS:
return "POS";
case NEG:
return "NEG";
case NEW:
return "NEW";
case DELPROP:
return "DELPROP";
case TYPEOF:
return "TYPEOF";
case GETPROP:
return "GETPROP";
case GETPROPNOWARN:
return "GETPROPNOWARN";
case SETPROP:
return "SETPROP";
case GETELEM:
return "GETELEM";
case SETELEM:
return "SETELEM";
case CALL:
return "CALL";
case NAME:
return "NAME";
case NUMBER:
return "NUMBER";
case STRING:
return "STRING";
case NULL:
return "NULL";
case THIS:
return "THIS";
case FALSE:
return "FALSE";
case TRUE:
return "TRUE";
case SHEQ:
return "SHEQ";
case SHNE:
return "SHNE";
case REGEXP:
return "OBJECT";
case BINDNAME:
return "BINDNAME";
case THROW:
return "THROW";
case RETHROW:
return "RETHROW";
case IN:
return "IN";
case INSTANCEOF:
return "INSTANCEOF";
case LOCAL_LOAD:
return "LOCAL_LOAD";
case GETVAR:
return "GETVAR";
case SETVAR:
return "SETVAR";
case CATCH_SCOPE:
return "CATCH_SCOPE";
case ENUM_INIT_KEYS:
return "ENUM_INIT_KEYS";
case ENUM_INIT_VALUES:
return "ENUM_INIT_VALUES";
case ENUM_INIT_ARRAY:
return "ENUM_INIT_ARRAY";
case ENUM_NEXT:
return "ENUM_NEXT";
case ENUM_ID:
return "ENUM_ID";
case THISFN:
return "THISFN";
case RETURN_RESULT:
return "RETURN_RESULT";
case ARRAYLIT:
return "ARRAYLIT";
case OBJECTLIT:
return "OBJECTLIT";
case GET_REF:
return "GET_REF";
case SET_REF:
return "SET_REF";
case DEL_REF:
return "DEL_REF";
case REF_CALL:
return "REF_CALL";
case REF_SPECIAL:
return "REF_SPECIAL";
case DEFAULTNAMESPACE:
return "DEFAULTNAMESPACE";
case ESCXMLTEXT:
return "ESCXMLTEXT";
case ESCXMLATTR:
return "ESCXMLATTR";
case REF_MEMBER:
return "REF_MEMBER";
case REF_NS_MEMBER:
return "REF_NS_MEMBER";
case REF_NAME:
return "REF_NAME";
case REF_NS_NAME:
return "REF_NS_NAME";
case TRY:
return "TRY";
case SEMI:
return "SEMI";
case LB:
return "LB";
case RB:
return "RB";
case LC:
return "LC";
case RC:
return "RC";
case LP:
return "LP";
case RP:
return "RP";
case COMMA:
return "COMMA";
case ASSIGN:
return "ASSIGN";
case ASSIGN_BITOR:
return "ASSIGN_BITOR";
case ASSIGN_BITXOR:
return "ASSIGN_BITXOR";
case ASSIGN_BITAND:
return "ASSIGN_BITAND";
case ASSIGN_LSH:
return "ASSIGN_LSH";
case ASSIGN_RSH:
return "ASSIGN_RSH";
case ASSIGN_URSH:
return "ASSIGN_URSH";
case ASSIGN_ADD:
return "ASSIGN_ADD";
case ASSIGN_SUB:
return "ASSIGN_SUB";
case ASSIGN_MUL:
return "ASSIGN_MUL";
case ASSIGN_DIV:
return "ASSIGN_DIV";
case ASSIGN_MOD:
return "ASSIGN_MOD";
case HOOK:
return "HOOK";
case COLON:
return "COLON";
case OR:
return "OR";
case AND:
return "AND";
case INC:
return "INC";
case DEC:
return "DEC";
case DOT:
return "DOT";
case FUNCTION:
return "FUNCTION";
case EXPORT:
return "EXPORT";
case IMPORT:
return "IMPORT";
case IF:
return "IF";
case ELSE:
return "ELSE";
case SWITCH:
return "SWITCH";
case CASE:
return "CASE";
case DEFAULT:
return "DEFAULT";
case WHILE:
return "WHILE";
case DO:
return "DO";
case FOR:
return "FOR";
case BREAK:
return "BREAK";
case CONTINUE:
return "CONTINUE";
case VAR:
return "VAR";
case WITH:
return "WITH";
case CATCH:
return "CATCH";
case FINALLY:
return "FINALLY";
case VOID:
return "VOID";
case RESERVED:
return "RESERVED";
case EMPTY:
return "EMPTY";
case BLOCK:
return "BLOCK";
case LABEL:
return "LABEL";
case TARGET:
return "TARGET";
case LOOP:
return "LOOP";
case EXPR_VOID:
return "EXPR_VOID";
case EXPR_RESULT:
return "EXPR_RESULT";
case JSR:
return "JSR";
case SCRIPT:
return "SCRIPT";
case TYPEOFNAME:
return "TYPEOFNAME";
case USE_STACK:
return "USE_STACK";
case SETPROP_OP:
return "SETPROP_OP";
case SETELEM_OP:
return "SETELEM_OP";
case LOCAL_BLOCK:
return "LOCAL_BLOCK";
case SET_REF_OP:
return "SET_REF_OP";
case DOTDOT:
return "DOTDOT";
case COLONCOLON:
return "COLONCOLON";
case XML:
return "XML";
case DOTQUERY:
return "DOTQUERY";
case XMLATTR:
return "XMLATTR";
case XMLEND:
return "XMLEND";
case TO_OBJECT:
return "TO_OBJECT";
case TO_DOUBLE:
return "TO_DOUBLE";
case GET:
return "GET";
case SET:
return "SET";
case LET:
return "LET";
case YIELD:
return "YIELD";
case CONST:
return "CONST";
case SETCONST:
return "SETCONST";
case ARRAYCOMP:
return "ARRAYCOMP";
case WITHEXPR:
return "WITHEXPR";
case LETEXPR:
return "LETEXPR";
case DEBUGGER:
return "DEBUGGER";
}
// Token without name
throw new IllegalStateException(String.valueOf(token));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy