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;
}
private Node parseExpRepeat(final Node targetp,final boolean group) {
Node target = targetp;
while (token.type == TokenType.OP_REPEAT || token.type == TokenType.INTERVAL) { // repeat:
if (target.isInvalidQuantifier()) {
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
}
final QuantifierNode qtfr = new QuantifierNode(token.getRepeatLower(),token.getRepeatUpper(),token.type == TokenType.INTERVAL);
qtfr.greedy = token.getRepeatGreedy();
final int ret = qtfr.setQuantifier(target,group,env,chars,getBegin(),getEnd());
Node qn = qtfr;
if (token.getRepeatPossessive()) {
final EncloseNode en = new EncloseNode(EncloseType.STOP_BACKTRACK); // node_new_enclose
en.setTarget(qn);
qn = en;
}
if (ret == 0) {
target = qn;
} else if (ret == 2) { /* split case: /abc+/ */
target = ConsAltNode.newListNode(target,null);
final ConsAltNode tmp = ((ConsAltNode)target).setCdr(ConsAltNode.newListNode(qn,null));
fetchToken();
return parseExpRepeatForCar(target,tmp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:openjdk-jdk10
文件:ArrayCompiler.java
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) ? 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;
}
项目:openjdk-jdk10
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:openjdk9
文件:ArrayCompiler.java
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) ? 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;
}
项目:openjdk9
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:kaziranga
文件:ArrayCompiler.java
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) ? 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;
}
项目:kaziranga
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:lookaside_java-1.8.0-openjdk
文件:ArrayCompiler.java
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) ? 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;
}
项目:lookaside_java-1.8.0-openjdk
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:jdk8u_nashorn
文件:ArrayCompiler.java
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) ? 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;
}
项目:jdk8u_nashorn
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:infobip-open-jdk-8
文件:ArrayCompiler.java
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) ? 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;
}
项目:infobip-open-jdk-8
文件:Parser.java
private Node parseExpRepeat(final Node targetp,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:OLD-OpenJDK8
文件:ArrayCompiler.java
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) ? 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;
}
项目:OLD-OpenJDK8
文件:Parser.java
private Node parseExpRepeat(Node target,boolean group) {
while (token.type == TokenType.OP_REPEAT || token.type == TokenType.INTERVAL) { // repeat:
if (target.isInvalidQuantifier()) {
throw new SyntaxException(ERR_TARGET_OF_REPEAT_OPERATOR_INVALID);
}
QuantifierNode qtfr = new QuantifierNode(token.getRepeatLower(),token.type == TokenType.INTERVAL);
qtfr.greedy = token.getRepeatGreedy();
int ret = qtfr.setQuantifier(target,getEnd());
Node qn = qtfr;
if (token.getRepeatPossessive()) {
EncloseNode en = new EncloseNode(EncloseType.STOP_BACKTRACK); // node_new_enclose
en.setTarget(qn);
qn = en;
}
if (ret == 0) {
target = qn;
} else if (ret == 2) { /* split case: /abc+/ */
target = ConsAltNode.newListNode(target,null);
ConsAltNode tmp = ((ConsAltNode)target).setCdr(ConsAltNode.newListNode(qn,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:nashorn-backport
文件:ArrayCompiler.java
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) ? 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;
}
项目:nashorn-backport
文件:Parser.java
private Node parseExpRepeat(Node target,group);
}
fetchToken(); // goto re_entry
}
return target;
}
项目:nashorn
文件:ArrayCompiler.java
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) ? 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;
}
项目:nashorn
文件:Parser.java
private Node parseExpRepeat(Node target,group);
}
fetchToken(); // goto re_entry
}
return target;
}
@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
}
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:openjdk-jdk10
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:openjdk-jdk10
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:openjdk9
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:openjdk9
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:kaziranga
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:kaziranga
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:lookaside_java-1.8.0-openjdk
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:lookaside_java-1.8.0-openjdk
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:jdk8u_nashorn
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:jdk8u_nashorn
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:infobip-open-jdk-8
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(final EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:infobip-open-jdk-8
文件:Analyser.java
private int quantifiersMemoryInfo(final Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
final int v = quantifiersMemoryInfo(can.car);
if (v > info) {
info = v;
}
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
final QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
final EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:OLD-OpenJDK8
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,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,-(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
}
项目:OLD-OpenJDK8
文件:Analyser.java
private int quantifiersMemoryInfo(Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
int v = quantifiersMemoryInfo(can.car);
if (v > info) info = v;
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:nashorn-backport
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:nashorn-backport
文件:Analyser.java
private int quantifiersMemoryInfo(Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
int v = quantifiersMemoryInfo(can.car);
if (v > info) info = v;
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}
项目:nashorn
文件:ArrayCompiler.java
@Override
protected void compileEncloseNode(EncloseNode node) {
int len;
switch (node.type) {
case EncloseType.MEMORY:
if (bsAt(regex.btMemStart,-(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
}
项目:nashorn
文件:Analyser.java
private int quantifiersMemoryInfo(Node node) {
int info = 0;
switch(node.getType()) {
case NodeType.LIST:
case NodeType.ALT:
ConsAltNode can = (ConsAltNode)node;
do {
int v = quantifiersMemoryInfo(can.car);
if (v > info) info = v;
} while ((can = can.cdr) != null);
break;
case NodeType.QTFR:
QuantifierNode qn = (QuantifierNode)node;
if (qn.upper != 0) {
info = quantifiersMemoryInfo(qn.target);
}
break;
case NodeType.ENCLOSE:
EncloseNode en = (EncloseNode)node;
switch (en.type) {
case EncloseType.MEMORY:
return TargetInfo.IS_EMPTY_MEM;
case EncloseType.OPTION:
case EncloseNode.STOP_BACKTRACK:
info = quantifiersMemoryInfo(en.target);
break;
default:
break;
} // inner switch
break;
case NodeType.BREF:
case NodeType.STR:
case NodeType.CTYPE:
case NodeType.cclASS:
case NodeType.CANY:
case NodeType.ANCHOR:
default:
break;
} // switch
return info;
}