• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java AnchorNode类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode的典型用法代码示例。如果您正苦于以下问题:Java AnchorNode类的具体用法?Java AnchorNode怎么用?Java AnchorNode使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



AnchorNode类属于jdk.nashorn.internal.runtime.regexp.joni.ast包,在下文中一共展示了AnchorNode类的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: setupLookBehind

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private Node setupLookBehind(final Node node) {
    final AnchorNode an = (AnchorNode)node;
    final int len = getCharLengthTree(an.target);
    switch (returnCode) {
    case 0:
        an.charLength = len;
        break;
    case GET_CHAR_LEN_VARLEN:
        throw new SyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
    case GET_CHAR_LEN_TOP_ALT_VARLEN:
        if (syntax.differentLengthAltLookBehind()) {
            return divideLookBehindAlternatives(node);
        }
        throw new SyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
    default:
        break;
    }
    return node;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:20,代码来源:Analyser.java


示例2: setupLookBehind

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private Node setupLookBehind(Node node) {
    AnchorNode an = (AnchorNode)node;
    int len = getCharLengthTree(an.target);
    switch(returnCode) {
    case 0:
        an.charLength = len;
        break;
    case GET_CHAR_LEN_VARLEN:
        throw new SyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
    case GET_CHAR_LEN_TOP_ALT_VARLEN:
        if (syntax.differentLengthAltLookBehind()) {
            return divideLookBehindAlternatives(node);
        } else {
            throw new SyntaxException(ERR_INVALID_LOOK_BEHIND_PATTERN);
        }
    }
    return node;
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:19,代码来源:Analyser.java


示例3: compileLengthAnchorNode

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private int compileLengthAnchorNode(final AnchorNode node) {
    int tlen;
    if (node.target != null) {
        tlen = compileLengthTree(node.target);
    } else {
        tlen = 0;
    }

    int len;
    switch (node.type) {
    case AnchorType.PREC_READ:
        len = OPSize.PUSH_POS + tlen + OPSize.POP_POS;
        break;

    case AnchorType.PREC_READ_NOT:
        len = OPSize.PUSH_POS_NOT + tlen + OPSize.FAIL_POS;
        break;

    case AnchorType.LOOK_BEHIND:
        len = OPSize.LOOK_BEHIND + tlen;
        break;

    case AnchorType.LOOK_BEHIND_NOT:
        len = OPSize.PUSH_LOOK_BEHIND_NOT + tlen + OPSize.FAIL_LOOK_BEHIND_NOT;
        break;

    default:
        len = OPSize.OPCODE;
        break;
    } // switch
    return len;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:33,代码来源:ArrayCompiler.java


示例4: divideLookBehindAlternatives

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private Node divideLookBehindAlternatives(final Node nodep) {
    Node node = nodep;
    final AnchorNode an = (AnchorNode)node;
    final int anchorType = an.type;
    Node head = an.target;
    Node np = ((ConsAltNode)head).car;

    swap(node, head);

    final Node tmp = node;
    node = head;
    head = tmp;

    ((ConsAltNode)node).setCar(head);
    ((AnchorNode)head).setTarget(np);
    np = node;

    while ((np = ((ConsAltNode)np).cdr) != null) {
        final AnchorNode insert = new AnchorNode(anchorType);
        insert.setTarget(((ConsAltNode)np).car);
        ((ConsAltNode)np).setCar(insert);
    }

    if (anchorType == AnchorType.LOOK_BEHIND_NOT) {
        np = node;
        do {
            ((ConsAltNode)np).toListNode(); /* alt -> list */
        } while ((np = ((ConsAltNode)np).cdr) != null);
    }

    return node;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:33,代码来源:Analyser.java


示例5: compileLengthAnchorNode

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private int compileLengthAnchorNode(AnchorNode node) {
    int tlen;
    if (node.target != null) {
        tlen = compileLengthTree(node.target);
    } else {
        tlen = 0;
    }

    int len;
    switch (node.type) {
    case AnchorType.PREC_READ:
        len = OPSize.PUSH_POS + tlen + OPSize.POP_POS;
        break;

    case AnchorType.PREC_READ_NOT:
        len = OPSize.PUSH_POS_NOT + tlen + OPSize.FAIL_POS;
        break;

    case AnchorType.LOOK_BEHIND:
        len = OPSize.LOOK_BEHIND + tlen;
        break;

    case AnchorType.LOOK_BEHIND_NOT:
        len = OPSize.PUSH_LOOK_BEHIND_NOT + tlen + OPSize.FAIL_LOOK_BEHIND_NOT;
        break;

    default:
        len = OPSize.OPCODE;
        break;
    } // switch
    return len;
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:33,代码来源:ArrayCompiler.java


示例6: checkTypeTree

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private boolean checkTypeTree(Node node, int typeMask, int encloseMask, int anchorMask) {
    if ((node.getType2Bit() & typeMask) == 0) return true;

    boolean invalid = false;

    switch(node.getType()) {
    case NodeType.LIST:
    case NodeType.ALT:
        ConsAltNode can = (ConsAltNode)node;
        do {
            invalid = checkTypeTree(can.car, typeMask, encloseMask, anchorMask);
        } while (!invalid && (can = can.cdr) != null);
        break;

    case NodeType.QTFR:
        invalid = checkTypeTree(((QuantifierNode)node).target, typeMask, encloseMask, anchorMask);
        break;

    case NodeType.ENCLOSE:
        EncloseNode en = (EncloseNode)node;
        if ((en.type & encloseMask) == 0) return true;
        invalid = checkTypeTree(en.target, typeMask, encloseMask, anchorMask);
        break;

    case NodeType.ANCHOR:
        AnchorNode an = (AnchorNode)node;
        if ((an.type & anchorMask) == 0) return true;

        if (an.target != null) invalid = checkTypeTree(an.target, typeMask, encloseMask, anchorMask);
        break;

    default:
        break;

    } // switch

    return invalid;
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:39,代码来源:Analyser.java


示例7: divideLookBehindAlternatives

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private Node divideLookBehindAlternatives(Node node) {
    AnchorNode an = (AnchorNode)node;
    int anchorType = an.type;
    Node head = an.target;
    Node np = ((ConsAltNode)head).car;

    swap(node, head);

    Node tmp = node;
    node = head;
    head = tmp;

    ((ConsAltNode)node).setCar(head);
    ((AnchorNode)head).setTarget(np);
    np = node;

    while ((np = ((ConsAltNode)np).cdr) != null) {
        AnchorNode insert = new AnchorNode(anchorType);
        insert.setTarget(((ConsAltNode)np).car);
        ((ConsAltNode)np).setCar(insert);
    }

    if (anchorType == AnchorType.LOOK_BEHIND_NOT) {
        np = node;
        do {
            ((ConsAltNode)np).toListNode(); /* alt -> list */
        } while ((np = ((ConsAltNode)np).cdr) != null);
    }

    return node;
}
 
开发者ID:RedlineResearch,项目名称:OLD-OpenJDK8,代码行数:32,代码来源:Analyser.java


示例8: compileAnchorNode

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
@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,代码行数:81,代码来源:ArrayCompiler.java


示例9: compileLengthTree

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private int compileLengthTree(final Node node) {
    int len = 0;

    switch (node.getType()) {
    case NodeType.LIST:
        ConsAltNode lin = (ConsAltNode)node;
        do {
            len += compileLengthTree(lin.car);
        } while ((lin = lin.cdr) != null);
        break;

    case NodeType.ALT:
        ConsAltNode aln = (ConsAltNode)node;
        int n = 0;
        do {
            len += compileLengthTree(aln.car);
            n++;
        } while ((aln = aln.cdr) != null);
        len += (OPSize.PUSH + OPSize.JUMP) * (n - 1);
        break;

    case NodeType.STR:
        final StringNode sn = (StringNode)node;
        if (sn.isRaw()) {
            len = compileLengthStringRawNode(sn);
        } else {
            len = compileLengthStringNode(sn);
        }
        break;

    case NodeType.CCLASS:
        len = compileLengthCClassNode((CClassNode)node);
        break;

    case NodeType.CTYPE:
    case NodeType.CANY:
        len = OPSize.OPCODE;
        break;

    case NodeType.BREF:
        final BackRefNode br = (BackRefNode)node;

        len = ((!isIgnoreCase(regex.options) && br.backRef <= 2)
                ? OPSize.OPCODE : (OPSize.OPCODE + OPSize.MEMNUM));
        break;

    case NodeType.QTFR:
        len = compileNonCECLengthQuantifierNode((QuantifierNode)node);
        break;

    case NodeType.ENCLOSE:
        len = compileLengthEncloseNode((EncloseNode)node);
        break;

    case NodeType.ANCHOR:
        len = compileLengthAnchorNode((AnchorNode)node);
        break;

    default:
        newInternalException(ERR_PARSER_BUG);

    } //switch
    return len;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:65,代码来源:ArrayCompiler.java


示例10: compileTree

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
protected final void compileTree(final Node node) {
    switch (node.getType()) {
    case NodeType.LIST:
        ConsAltNode lin = (ConsAltNode)node;
        do {
            compileTree(lin.car);
        } while ((lin = lin.cdr) != null);
        break;

    case NodeType.ALT:
        compileAltNode((ConsAltNode)node);
        break;

    case NodeType.STR:
        final StringNode sn = (StringNode)node;
        if (sn.isRaw()) {
            compileStringRawNode(sn);
        } else {
            compileStringNode(sn);
        }
        break;

    case NodeType.CCLASS:
        compileCClassNode((CClassNode)node);
        break;

    case NodeType.CANY:
        compileAnyCharNode();
        break;

    case NodeType.BREF:
        compileBackrefNode((BackRefNode)node);
        break;

    case NodeType.QTFR:
        compileNonCECQuantifierNode((QuantifierNode)node);
        break;

    case NodeType.ENCLOSE:
        final EncloseNode enode = (EncloseNode)node;
        if (enode.isOption()) {
            compileOptionNode(enode);
        } else {
            compileEncloseNode(enode);
        }
        break;

    case NodeType.ANCHOR:
        compileAnchorNode((AnchorNode)node);
        break;

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


示例11: checkTypeTree

import jdk.nashorn.internal.runtime.regexp.joni.ast.AnchorNode; //导入依赖的package包/类
private boolean checkTypeTree(final Node node, final int typeMask, final int encloseMask, final int anchorMask) {
    if ((node.getType2Bit() & typeMask) == 0) {
        return true;
    }

    boolean invalid = false;

    switch(node.getType()) {
    case NodeType.LIST:
    case NodeType.ALT:
        ConsAltNode can = (ConsAltNode)node;
        do {
            invalid = checkTypeTree(can.car, typeMask, encloseMask, anchorMask);
        } while (!invalid && (can = can.cdr) != null);
        break;

    case NodeType.QTFR:
        invalid = checkTypeTree(((QuantifierNode)node).target, typeMask, encloseMask, anchorMask);
        break;

    case NodeType.ENCLOSE:
        final EncloseNode en = (EncloseNode)node;
        if ((en.type & encloseMask) == 0) {
            return true;
        }
        invalid = checkTypeTree(en.target, typeMask, encloseMask, anchorMask);
        break;

    case NodeType.ANCHOR:
        final AnchorNode an = (AnchorNode)node;
        if ((an.type & anchorMask) == 0) {
            return true;
        }

        if (an.target != null) {
            invalid = checkTypeTree(an.target, typeMask, encloseMask, anchorMask);
        }
        break;

    default:
        break;

    } // switch

    return invalid;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:47,代码来源:Analyser.java



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java GetServerDefaultsRequestProto类代码示例发布时间:2022-05-22
下一篇:
Java TByteObjectProcedure类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap