in rhino/src/main/java/org/mozilla/javascript/TokenStream.java [356:578]
private static int stringToKeywordForES(String name, boolean isStrict) {
// The following assumes that Token.EOF == 0
final int
// 11.6.2.1 Keywords (ECMAScript2015)
Id_break = Token.BREAK,
Id_case = Token.CASE,
Id_catch = Token.CATCH,
Id_class = Token.RESERVED,
Id_const = Token.CONST,
Id_continue = Token.CONTINUE,
Id_debugger = Token.DEBUGGER,
Id_default = Token.DEFAULT,
Id_delete = Token.DELPROP,
Id_do = Token.DO,
Id_else = Token.ELSE,
Id_export = Token.RESERVED,
Id_extends = Token.RESERVED,
Id_finally = Token.FINALLY,
Id_for = Token.FOR,
Id_function = Token.FUNCTION,
Id_if = Token.IF,
Id_import = Token.RESERVED,
Id_in = Token.IN,
Id_instanceof = Token.INSTANCEOF,
Id_new = Token.NEW,
Id_return = Token.RETURN,
Id_super = Token.SUPER,
Id_switch = Token.SWITCH,
Id_this = Token.THIS,
Id_throw = Token.THROW,
Id_try = Token.TRY,
Id_typeof = Token.TYPEOF,
Id_var = Token.VAR,
Id_void = Token.VOID,
Id_while = Token.WHILE,
Id_with = Token.WITH,
Id_yield = Token.YIELD,
// 11.6.2.2 Future Reserved Words
Id_await = Token.RESERVED,
Id_enum = Token.RESERVED,
// 11.6.2.2 NOTE Strict Future Reserved Words
Id_implements = Token.RESERVED,
Id_interface = Token.RESERVED,
Id_package = Token.RESERVED,
Id_private = Token.RESERVED,
Id_protected = Token.RESERVED,
Id_public = Token.RESERVED,
// 11.8 Literals
Id_false = Token.FALSE,
Id_null = Token.NULL,
Id_true = Token.TRUE,
// Non ReservedWord, but Non IdentifierName in strict mode code.
// 12.1.1 Static Semantics: Early Errors
Id_let = Token.LET, // TODO : Valid IdentifierName in non-strict mode.
Id_static = Token.RESERVED;
int id = 0;
switch (name) {
case "break":
id = Id_break;
break;
case "case":
id = Id_case;
break;
case "catch":
id = Id_catch;
break;
case "class":
id = Id_class;
break;
case "const":
id = Id_const;
break;
case "continue":
id = Id_continue;
break;
case "debugger":
id = Id_debugger;
break;
case "default":
id = Id_default;
break;
case "delete":
id = Id_delete;
break;
case "do":
id = Id_do;
break;
case "else":
id = Id_else;
break;
case "export":
id = Id_export;
break;
case "extends":
id = Id_extends;
break;
case "finally":
id = Id_finally;
break;
case "for":
id = Id_for;
break;
case "function":
id = Id_function;
break;
case "if":
id = Id_if;
break;
case "import":
id = Id_import;
break;
case "in":
id = Id_in;
break;
case "instanceof":
id = Id_instanceof;
break;
case "new":
id = Id_new;
break;
case "return":
id = Id_return;
break;
case "super":
id = Id_super;
break;
case "switch":
id = Id_switch;
break;
case "this":
id = Id_this;
break;
case "throw":
id = Id_throw;
break;
case "try":
id = Id_try;
break;
case "typeof":
id = Id_typeof;
break;
case "var":
id = Id_var;
break;
case "void":
id = Id_void;
break;
case "while":
id = Id_while;
break;
case "with":
id = Id_with;
break;
case "yield":
id = Id_yield;
break;
case "await":
id = Id_await;
break;
case "enum":
id = Id_enum;
break;
case "implements":
if (isStrict) {
id = Id_implements;
}
break;
case "interface":
if (isStrict) {
id = Id_interface;
}
break;
case "package":
if (isStrict) {
id = Id_package;
}
break;
case "private":
if (isStrict) {
id = Id_private;
}
break;
case "protected":
if (isStrict) {
id = Id_protected;
}
break;
case "public":
if (isStrict) {
id = Id_public;
}
break;
case "false":
id = Id_false;
break;
case "null":
id = Id_null;
break;
case "true":
id = Id_true;
break;
case "let":
id = Id_let;
break;
case "static":
if (isStrict) {
id = Id_static;
}
break;
default:
id = 0;
break;
}
if (id == 0) {
return Token.EOF;
}
return id & 0xff;
}