private static int stringToKeywordForES()

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;
    }