本文整理汇总了Java中jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode.isStopBtSimpleRepeat方法的典型用法代码示例。如果您正苦于以下问题:Java EncloseNode.isStopBtSimpleRepeat方法的具体用法?Java EncloseNode.isStopBtSimpleRepeat怎么用?Java EncloseNode.isStopBtSimpleRepeat使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode
的用法示例。
在下文中一共展示了EncloseNode.isStopBtSimpleRepeat方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: compileLengthEncloseNode
import jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode; //导入方法依赖的package包/类
private int compileLengthEncloseNode(final EncloseNode node) {
if (node.isOption()) {
return compileLengthOptionNode(node);
}
int tlen;
if (node.target != null) {
tlen = compileLengthTree(node.target);
} else {
tlen = 0;
}
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart, node.regNum)) {
len = OPSize.MEMORY_START_PUSH;
} else {
len = OPSize.MEMORY_START;
}
len += tlen + (bsAt(regex.btMemEnd, node.regNum) ? OPSize.MEMORY_END_PUSH : OPSize.MEMORY_END);
break;
case EncloseType.STOP_BACKTRACK:
if (node.isStopBtSimpleRepeat()) {
final QuantifierNode qn = (QuantifierNode)node.target;
tlen = compileLengthTree(qn.target);
len = tlen * qn.lower + OPSize.PUSH + tlen + OPSize.POP + OPSize.JUMP;
} else {
len = OPSize.PUSH_STOP_BT + tlen + OPSize.POP_STOP_BT;
}
break;
default:
newInternalException(ERR_PARSER_BUG);
return 0; // not reached
} // switch
return len;
}
示例2: compileLengthEncloseNode
import jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode; //导入方法依赖的package包/类
private int compileLengthEncloseNode(EncloseNode node) {
if (node.isOption()) {
return compileLengthOptionNode(node);
}
int tlen;
if (node.target != null) {
tlen = compileLengthTree(node.target);
} else {
tlen = 0;
}
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart, node.regNum)) {
len = OPSize.MEMORY_START_PUSH;
} else {
len = OPSize.MEMORY_START;
}
len += tlen + (bsAt(regex.btMemEnd, node.regNum) ? OPSize.MEMORY_END_PUSH : OPSize.MEMORY_END);
break;
case EncloseType.STOP_BACKTRACK:
if (node.isStopBtSimpleRepeat()) {
QuantifierNode qn = (QuantifierNode)node.target;
tlen = compileLengthTree(qn.target);
len = tlen * qn.lower + OPSize.PUSH + tlen + OPSize.POP + OPSize.JUMP;
} else {
len = OPSize.PUSH_STOP_BT + tlen + OPSize.POP_STOP_BT;
}
break;
default:
newInternalException(ERR_PARSER_BUG);
return 0; // not reached
} // switch
return len;
}
示例3: compileEncloseNode
import jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode; //导入方法依赖的package包/类
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart, node.regNum)) {
addOpcode(OPCode.MEMORY_START_PUSH);
} else {
addOpcode(OPCode.MEMORY_START);
}
addMemNum(node.regNum);
compileTree(node.target);
if (bsAt(regex.btMemEnd, node.regNum)) {
addOpcode(OPCode.MEMORY_END_PUSH);
} else {
addOpcode(OPCode.MEMORY_END);
}
addMemNum(node.regNum);
break;
case EncloseType.STOP_BACKTRACK:
if (node.isStopBtSimpleRepeat()) {
final QuantifierNode qn = (QuantifierNode)node.target;
compileTreeNTimes(qn.target, qn.lower);
len = compileLengthTree(qn.target);
addOpcodeRelAddr(OPCode.PUSH, len + OPSize.POP + OPSize.JUMP);
compileTree(qn.target);
addOpcode(OPCode.POP);
addOpcodeRelAddr(OPCode.JUMP, -(OPSize.PUSH + len + OPSize.POP + OPSize.JUMP));
} else {
addOpcode(OPCode.PUSH_STOP_BT);
compileTree(node.target);
addOpcode(OPCode.POP_STOP_BT);
}
break;
default:
newInternalException(ERR_PARSER_BUG);
break;
} // switch
}
示例4: compileEncloseNode
import jdk.nashorn.internal.runtime.regexp.joni.ast.EncloseNode; //导入方法依赖的package包/类
@Override
protected void compileEncloseNode(EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart, node.regNum)) {
addOpcode(OPCode.MEMORY_START_PUSH);
} else {
addOpcode(OPCode.MEMORY_START);
}
addMemNum(node.regNum);
compileTree(node.target);
if (bsAt(regex.btMemEnd, node.regNum)) {
addOpcode(OPCode.MEMORY_END_PUSH);
} else {
addOpcode(OPCode.MEMORY_END);
}
addMemNum(node.regNum);
break;
case EncloseType.STOP_BACKTRACK:
if (node.isStopBtSimpleRepeat()) {
QuantifierNode qn = (QuantifierNode)node.target;
compileTreeNTimes(qn.target, qn.lower);
len = compileLengthTree(qn.target);
addOpcodeRelAddr(OPCode.PUSH, len + OPSize.POP + OPSize.JUMP);
compileTree(qn.target);
addOpcode(OPCode.POP);
addOpcodeRelAddr(OPCode.JUMP, -(OPSize.PUSH + len + OPSize.POP + OPSize.JUMP));
} else {
addOpcode(OPCode.PUSH_STOP_BT);
compileTree(node.target);
addOpcode(OPCode.POP_STOP_BT);
}
break;
default:
newInternalException(ERR_PARSER_BUG);
break;
} // switch
}