Java 类jdk.nashorn.internal.runtime.regexp.joni.encoding.CharacterType 实例源码

项目:OpenJSharp    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:OpenJSharp    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:openjdk-jdk10    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:openjdk-jdk10    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 *
 * @param code code
 * @param ctype ctype
 *
 * @return isCodeCType
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM or U+180E (see JDK-8138758)
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0
                            || code == 0xfeff || code == 0x180e;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:openjdk9    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:openjdk9    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 *
 * @param code code
 * @param ctype ctype
 *
 * @return isCodeCType
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM or U+180E (see JDK-8138758)
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0
                            || code == 0xfeff || code == 0x180e;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:kaziranga    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:kaziranga    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 *
 * @param code code
 * @param ctype ctype
 *
 * @return isCodeCType
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:lookaside_java-1.8.0-openjdk    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:lookaside_java-1.8.0-openjdk    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 *
 * @param code code
 * @param ctype ctype
 *
 * @return isCodeCType
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:jdk8u_nashorn    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:jdk8u_nashorn    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 *
 * @param code code
 * @param ctype ctype
 *
 * @return isCodeCType
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:infobip-open-jdk-8    文件:EncodingHelper.java   
public static boolean isWord(final int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:infobip-open-jdk-8    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 */
public static boolean isCodeCType(final int code, final int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:OLD-OpenJDK8    文件:EncodingHelper.java   
public static boolean isWord(int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:OLD-OpenJDK8    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 */
public static boolean isCodeCType(int code, int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:OLD-OpenJDK8    文件:Lexer.java   
protected final TokenType fetchTokenInCC() {
    if (!left()) {
        token.type = TokenType.EOT;
        return token.type;
    }

    fetch();
    token.type = TokenType.CHAR;
    token.setC(c);
    token.escaped = false;

    if (c == ']') {
        token.type = TokenType.CC_CLOSE;
    } else if (c == '-') {
        token.type = TokenType.CC_RANGE;
    } else if (c == syntax.metaCharTable.esc) {
        if (!syntax.backSlashEscapeInCC()) return token.type;
        if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_ESCAPE);
        }
        fetch();
        token.escaped = true;
        token.setC(c);

        switch (c) {
        case 'w':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'W':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'd':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 'D':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 's':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'S':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'h':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(false, CharacterType.XDIGIT);
            break;
        case 'H':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(true, CharacterType.XDIGIT);
            break;
        case 'x':
            fetchTokenInCCFor_x();
            break;
        case 'u':
            fetchTokenInCCFor_u();
            break;
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
            fetchTokenInCCFor_digit();
            break;

        default:
            unfetch();
            int num = fetchEscapedValue();
            if (token.getC() != num) {
                token.setCode(num);
                token.type = TokenType.CODE_POINT;
            }
            break;
        } // switch

    } else if (c == '&') {
        fetchTokenInCCFor_and();
    }
    return token.type;
}
项目:nashorn-backport    文件:EncodingHelper.java   
public static boolean isWord(int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:nashorn-backport    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 */
public static boolean isCodeCType(int code, int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:nashorn-backport    文件:Lexer.java   
protected final TokenType fetchTokenInCC() {
    if (!left()) {
        token.type = TokenType.EOT;
        return token.type;
    }

    fetch();
    token.type = TokenType.CHAR;
    token.setC(c);
    token.escaped = false;

    if (c == ']') {
        token.type = TokenType.CC_CLOSE;
    } else if (c == '-') {
        token.type = TokenType.CC_RANGE;
    } else if (c == syntax.metaCharTable.esc) {
        if (!syntax.backSlashEscapeInCC()) return token.type;
        if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_ESCAPE);
        }
        fetch();
        token.escaped = true;
        token.setC(c);

        switch (c) {
        case 'w':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'W':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'd':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 'D':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 's':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'S':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'h':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(false, CharacterType.XDIGIT);
            break;
        case 'H':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(true, CharacterType.XDIGIT);
            break;
        case 'x':
            fetchTokenInCCFor_x();
            break;
        case 'u':
            fetchTokenInCCFor_u();
            break;
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
            fetchTokenInCCFor_digit();
            break;

        default:
            unfetch();
            int num = fetchEscapedValue();
            if (token.getC() != num) {
                token.setCode(num);
                token.type = TokenType.CODE_POINT;
            }
            break;
        } // switch

    } else if (c == '&') {
        fetchTokenInCCFor_and();
    }
    return token.type;
}
项目:nashorn    文件:EncodingHelper.java   
public static boolean isWord(int code) {
    // letter, digit, or '_'
    return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
}
项目:nashorn    文件:EncodingHelper.java   
/**
 * @see <a href="http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt">http://www.geocities.jp/kosako3/oniguruma/doc/RE.txt</a>
 */
public static boolean isCodeCType(int code, int ctype) {
    int type;
    switch (ctype) {
        case CharacterType.NEWLINE:
            return isNewLine(code);
        case CharacterType.ALPHA:
            return (1 << Character.getType(code) & CharacterType.ALPHA_MASK) != 0;
        case CharacterType.BLANK:
            return code == 0x09 || Character.getType(code) == Character.SPACE_SEPARATOR;
        case CharacterType.CNTRL:
            type = Character.getType(code);
            return (1 << type & CharacterType.CNTRL_MASK) != 0 || type == Character.UNASSIGNED;
        case CharacterType.DIGIT:
            return EncodingHelper.isDigit(code);
        case CharacterType.GRAPH:
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return false;
                default:
                    type = Character.getType(code);
                    return (1 << type & CharacterType.GRAPH_MASK) == 0 && type != Character.UNASSIGNED;
            }
        case CharacterType.LOWER:
            return Character.isLowerCase(code);
        case CharacterType.PRINT:
            type = Character.getType(code);
            return (1 << type & CharacterType.PRINT_MASK) == 0 && type != Character.UNASSIGNED;
        case CharacterType.PUNCT:
            return (1 << Character.getType(code) & CharacterType.PUNCT_MASK) != 0;
        case CharacterType.SPACE:
            // ECMA 7.2 and 7.3
            switch (code) {
                case 0x09:
                case 0x0a:
                case 0x0b:
                case 0x0c:
                case 0x0d:
                    return true;
                default:
                    // true if Unicode separator or BOM
                    return (1 << Character.getType(code) & CharacterType.SPACE_MASK) != 0 || code == 0xfeff;
            }
        case CharacterType.UPPER:
            return Character.isUpperCase(code);
        case CharacterType.XDIGIT:
            return EncodingHelper.isXDigit(code);
        case CharacterType.WORD:
            return (1 << Character.getType(code) & CharacterType.WORD_MASK) != 0;
        case CharacterType.ALNUM:
            return (1 << Character.getType(code) & CharacterType.ALNUM_MASK) != 0;
        case CharacterType.ASCII:
            return code < 0x80;
        default:
            throw new RuntimeException("illegal character type: " + ctype);
    }
}
项目:nashorn    文件:Lexer.java   
protected final TokenType fetchTokenInCC() {
    if (!left()) {
        token.type = TokenType.EOT;
        return token.type;
    }

    fetch();
    token.type = TokenType.CHAR;
    token.setC(c);
    token.escaped = false;

    if (c == ']') {
        token.type = TokenType.CC_CLOSE;
    } else if (c == '-') {
        token.type = TokenType.CC_RANGE;
    } else if (c == syntax.metaCharTable.esc) {
        if (!syntax.backSlashEscapeInCC()) return token.type;
        if (!left()) {
            throw new SyntaxException(ERR_END_PATTERN_AT_ESCAPE);
        }
        fetch();
        token.escaped = true;
        token.setC(c);

        switch (c) {
        case 'w':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'W':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.W : CharacterType.WORD);
            break;
        case 'd':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 'D':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.D : CharacterType.DIGIT);
            break;
        case 's':
            fetchTokenInCCFor_charType(false, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'S':
            fetchTokenInCCFor_charType(true, Config.NON_UNICODE_SDW ? CharacterType.S : CharacterType.SPACE);
            break;
        case 'h':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(false, CharacterType.XDIGIT);
            break;
        case 'H':
            if (syntax.op2EscHXDigit()) fetchTokenInCCFor_charType(true, CharacterType.XDIGIT);
            break;
        case 'x':
            fetchTokenInCCFor_x();
            break;
        case 'u':
            fetchTokenInCCFor_u();
            break;
        case '0':
        case '1':
        case '2':
        case '3':
        case '4':
        case '5':
        case '6':
        case '7':
            fetchTokenInCCFor_digit();
            break;

        default:
            unfetch();
            int num = fetchEscapedValue();
            if (token.getC() != num) {
                token.setCode(num);
                token.type = TokenType.CODE_POINT;
            }
            break;
        } // switch

    } else if (c == '&') {
        fetchTokenInCCFor_and();
    }
    return token.type;
}