当前位置: 首页>>代码示例>>Java>>正文


Java AnchorType.BEGIN_POSITION属性代码示例

本文整理汇总了Java中jdk.nashorn.internal.runtime.regexp.joni.constants.AnchorType.BEGIN_POSITION属性的典型用法代码示例。如果您正苦于以下问题:Java AnchorType.BEGIN_POSITION属性的具体用法?Java AnchorType.BEGIN_POSITION怎么用?Java AnchorType.BEGIN_POSITION使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在jdk.nashorn.internal.runtime.regexp.joni.constants.AnchorType的用法示例。


在下文中一共展示了AnchorType.BEGIN_POSITION属性的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: anchorToString

static String anchorToString(final int anchor) {
    final StringBuffer s = new StringBuffer("[");

    if ((anchor & AnchorType.BEGIN_BUF) !=0 ) {
        s.append("begin-buf ");
    }
    if ((anchor & AnchorType.BEGIN_LINE) !=0 ) {
        s.append("begin-line ");
    }
    if ((anchor & AnchorType.BEGIN_POSITION) !=0 ) {
        s.append("begin-pos ");
    }
    if ((anchor & AnchorType.END_BUF) !=0 ) {
        s.append("end-buf ");
    }
    if ((anchor & AnchorType.SEMI_END_BUF) !=0 ) {
        s.append("semi-end-buf ");
    }
    if ((anchor & AnchorType.END_LINE) !=0 ) {
        s.append("end-line ");
    }
    if ((anchor & AnchorType.ANYCHAR_STAR) !=0 ) {
        s.append("anychar-star ");
    }
    if ((anchor & AnchorType.ANYCHAR_STAR_ML) !=0 ) {
        s.append("anychar-star-pl ");
    }
    s.append("]");

    return s.toString();
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:31,代码来源:OptAnchorInfo.java

示例2: anchorToString

static String anchorToString(int anchor) {
    StringBuffer s = new StringBuffer("[");

    if ((anchor & AnchorType.BEGIN_BUF) !=0 ) s.append("begin-buf ");
    if ((anchor & AnchorType.BEGIN_LINE) !=0 ) s.append("begin-line ");
    if ((anchor & AnchorType.BEGIN_POSITION) !=0 ) s.append("begin-pos ");
    if ((anchor & AnchorType.END_BUF) !=0 ) s.append("end-buf ");
    if ((anchor & AnchorType.SEMI_END_BUF) !=0 ) s.append("semi-end-buf ");
    if ((anchor & AnchorType.END_LINE) !=0 ) s.append("end-line ");
    if ((anchor & AnchorType.ANYCHAR_STAR) !=0 ) s.append("anychar-star ");
    if ((anchor & AnchorType.ANYCHAR_STAR_ML) !=0 ) s.append("anychar-star-pl ");
    s.append("]");

    return s.toString();
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:15,代码来源:OptAnchorInfo.java

示例3: compileAnchorNode

@Override
protected void compileAnchorNode(final AnchorNode node) {
    int len;
    int n;

    switch (node.type) {
    case AnchorType.BEGIN_BUF:          addOpcode(OPCode.BEGIN_BUF);            break;
    case AnchorType.END_BUF:            addOpcode(OPCode.END_BUF);              break;
    case AnchorType.BEGIN_LINE:         addOpcode(OPCode.BEGIN_LINE);           break;
    case AnchorType.END_LINE:           addOpcode(OPCode.END_LINE);             break;
    case AnchorType.SEMI_END_BUF:       addOpcode(OPCode.SEMI_END_BUF);         break;
    case AnchorType.BEGIN_POSITION:     addOpcode(OPCode.BEGIN_POSITION);       break;

    case AnchorType.WORD_BOUND:
        addOpcode(OPCode.WORD_BOUND);
        break;

    case AnchorType.NOT_WORD_BOUND:
        addOpcode(OPCode.NOT_WORD_BOUND);
        break;

    case AnchorType.WORD_BEGIN:
        if (Config.USE_WORD_BEGIN_END) {
            addOpcode(OPCode.WORD_BEGIN);
        }
        break;

    case AnchorType.WORD_END:
        if (Config.USE_WORD_BEGIN_END) {
            addOpcode(OPCode.WORD_END);
        }
        break;

    case AnchorType.PREC_READ:
        addOpcode(OPCode.PUSH_POS);
        compileTree(node.target);
        addOpcode(OPCode.POP_POS);
        break;

    case AnchorType.PREC_READ_NOT:
        len = compileLengthTree(node.target);
        addOpcodeRelAddr(OPCode.PUSH_POS_NOT, len + OPSize.FAIL_POS);
        compileTree(node.target);
        addOpcode(OPCode.FAIL_POS);
        break;

    case AnchorType.LOOK_BEHIND:
        addOpcode(OPCode.LOOK_BEHIND);
        if (node.charLength < 0) {
            n = analyser.getCharLengthTree(node.target);
            if (analyser.returnCode != 0) {
                newSyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
            }
        } else {
            n = node.charLength;
        }
        addLength(n);
        compileTree(node.target);
        break;

    case AnchorType.LOOK_BEHIND_NOT:
        len = compileLengthTree(node.target);
        addOpcodeRelAddr(OPCode.PUSH_LOOK_BEHIND_NOT, len + OPSize.FAIL_LOOK_BEHIND_NOT);
        if (node.charLength < 0) {
            n = analyser.getCharLengthTree(node.target);
            if (analyser.returnCode != 0) {
                newSyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
            }
        } else {
            n = node.charLength;
        }
        addLength(n);
        compileTree(node.target);
        addOpcode(OPCode.FAIL_LOOK_BEHIND_NOT);
        break;

    default:
        newInternalException(ERR_PARSER_BUG);
    } // switch
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:80,代码来源:ArrayCompiler.java

示例4: setOptimizedInfoFromTree

@SuppressWarnings("unused")
protected final void setOptimizedInfoFromTree(final Node node) {
    final NodeOptInfo opt = new NodeOptInfo();
    final OptEnvironment oenv = new OptEnvironment();

    oenv.options = regex.options;
    oenv.caseFoldFlag = regex.caseFoldFlag;
    oenv.scanEnv = env;
    oenv.mmd.clear(); // ??

    optimizeNodeLeft(node, opt, oenv);

    regex.anchor = opt.anchor.leftAnchor & (AnchorType.BEGIN_BUF |
                                            AnchorType.BEGIN_POSITION |
                                            AnchorType.ANYCHAR_STAR |
                                            AnchorType.ANYCHAR_STAR_ML);

    regex.anchor |= opt.anchor.rightAnchor & (AnchorType.END_BUF |
                                              AnchorType.SEMI_END_BUF);

    if ((regex.anchor & (AnchorType.END_BUF | AnchorType.SEMI_END_BUF)) != 0) {
        regex.anchorDmin = opt.length.min;
        regex.anchorDmax = opt.length.max;
    }

    if (opt.exb.length > 0 || opt.exm.length > 0) {
        opt.exb.select(opt.exm);
        if (opt.map.value > 0 && opt.exb.compare(opt.map) > 0) {
            // !goto set_map;!
            regex.setOptimizeMapInfo(opt.map);
            regex.setSubAnchor(opt.map.anchor);
        } else {
            regex.setExactInfo(opt.exb);
            regex.setSubAnchor(opt.exb.anchor);
        }
    } else if (opt.map.value > 0) {
        // !set_map:!
        regex.setOptimizeMapInfo(opt.map);
        regex.setSubAnchor(opt.map.anchor);
    } else {
        regex.subAnchor |= opt.anchor.leftAnchor & AnchorType.BEGIN_LINE;
        if (opt.length.max == 0) {
            regex.subAnchor |= opt.anchor.rightAnchor & AnchorType.END_LINE;
        }
    }

    if (Config.DEBUG_COMPILE || Config.DEBUG_MATCH) {
        Config.log.println(regex.optimizeInfoToString());
    }
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:50,代码来源:Analyser.java

示例5: compileAnchorNode

@Override
protected void compileAnchorNode(AnchorNode node) {
    int len;
    int n;

    switch (node.type) {
    case AnchorType.BEGIN_BUF:          addOpcode(OPCode.BEGIN_BUF);            break;
    case AnchorType.END_BUF:            addOpcode(OPCode.END_BUF);              break;
    case AnchorType.BEGIN_LINE:         addOpcode(OPCode.BEGIN_LINE);           break;
    case AnchorType.END_LINE:           addOpcode(OPCode.END_LINE);             break;
    case AnchorType.SEMI_END_BUF:       addOpcode(OPCode.SEMI_END_BUF);         break;
    case AnchorType.BEGIN_POSITION:     addOpcode(OPCode.BEGIN_POSITION);       break;

    case AnchorType.WORD_BOUND:
        addOpcode(OPCode.WORD_BOUND);
        break;

    case AnchorType.NOT_WORD_BOUND:
        addOpcode(OPCode.NOT_WORD_BOUND);
        break;

    case AnchorType.WORD_BEGIN:
        if (Config.USE_WORD_BEGIN_END)
            addOpcode(OPCode.WORD_BEGIN);
        break;

    case AnchorType.WORD_END:
        if (Config.USE_WORD_BEGIN_END)
            addOpcode(OPCode.WORD_END);
        break;

    case AnchorType.PREC_READ:
        addOpcode(OPCode.PUSH_POS);
        compileTree(node.target);
        addOpcode(OPCode.POP_POS);
        break;

    case AnchorType.PREC_READ_NOT:
        len = compileLengthTree(node.target);
        addOpcodeRelAddr(OPCode.PUSH_POS_NOT, len + OPSize.FAIL_POS);
        compileTree(node.target);
        addOpcode(OPCode.FAIL_POS);
        break;

    case AnchorType.LOOK_BEHIND:
        addOpcode(OPCode.LOOK_BEHIND);
        if (node.charLength < 0) {
            n = analyser.getCharLengthTree(node.target);
            if (analyser.returnCode != 0) newSyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
        } else {
            n = node.charLength;
        }
        addLength(n);
        compileTree(node.target);
        break;

    case AnchorType.LOOK_BEHIND_NOT:
        len = compileLengthTree(node.target);
        addOpcodeRelAddr(OPCode.PUSH_LOOK_BEHIND_NOT, len + OPSize.FAIL_LOOK_BEHIND_NOT);
        if (node.charLength < 0) {
            n = analyser.getCharLengthTree(node.target);
            if (analyser.returnCode != 0) newSyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
        } else {
            n = node.charLength;
        }
        addLength(n);
        compileTree(node.target);
        addOpcode(OPCode.FAIL_LOOK_BEHIND_NOT);
        break;

    default:
        newInternalException(ERR_PARSER_BUG);
    } // switch
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:74,代码来源:ArrayCompiler.java

示例6: setOptimizedInfoFromTree

protected final void setOptimizedInfoFromTree(Node node) {
    NodeOptInfo opt = new NodeOptInfo();
    OptEnvironment oenv = new OptEnvironment();

    oenv.options = regex.options;
    oenv.caseFoldFlag = regex.caseFoldFlag;
    oenv.scanEnv = env;
    oenv.mmd.clear(); // ??

    optimizeNodeLeft(node, opt, oenv);

    regex.anchor = opt.anchor.leftAnchor & (AnchorType.BEGIN_BUF |
                                            AnchorType.BEGIN_POSITION |
                                            AnchorType.ANYCHAR_STAR |
                                            AnchorType.ANYCHAR_STAR_ML);

    regex.anchor |= opt.anchor.rightAnchor & (AnchorType.END_BUF |
                                              AnchorType.SEMI_END_BUF);

    if ((regex.anchor & (AnchorType.END_BUF | AnchorType.SEMI_END_BUF)) != 0) {
        regex.anchorDmin = opt.length.min;
        regex.anchorDmax = opt.length.max;
    }

    if (opt.exb.length > 0 || opt.exm.length > 0) {
        opt.exb.select(opt.exm);
        if (opt.map.value > 0 && opt.exb.compare(opt.map) > 0) {
            // !goto set_map;!
            regex.setOptimizeMapInfo(opt.map);
            regex.setSubAnchor(opt.map.anchor);
        } else {
            regex.setExactInfo(opt.exb);
            regex.setSubAnchor(opt.exb.anchor);
        }
    } else if (opt.map.value > 0) {
        // !set_map:!
        regex.setOptimizeMapInfo(opt.map);
        regex.setSubAnchor(opt.map.anchor);
    } else {
        regex.subAnchor |= opt.anchor.leftAnchor & AnchorType.BEGIN_LINE;
        if (opt.length.max == 0) regex.subAnchor |= opt.anchor.rightAnchor & AnchorType.END_LINE;
    }

    if (Config.DEBUG_COMPILE || Config.DEBUG_MATCH) {
        Config.log.println(regex.optimizeInfoToString());
    }
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:47,代码来源:Analyser.java


注:本文中的jdk.nashorn.internal.runtime.regexp.joni.constants.AnchorType.BEGIN_POSITION属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。