private void opExactMB2N1() { if (s + 2 > range || code[ip] != bytes[s] || code[++ip] != bytes[++s]) { opFail(); } else { ip++; s++; sprev = sbegin; // break; } }
private void opLookBehindSb() { int tlen = code[ip++]; s -= tlen; if (s < str) {opFail(); return;} sprev = s == str ? -1 : s - 1; }
private void opExact3() { if (s + 3 > range || code[ip] != bytes[s] || code[++ip] != bytes[++s] || code[++ip] != bytes[++s]) { opFail(); } else { sprev = s; ip++; s++; } }
private void opExactN() { int tlen = code[ip++]; if (s + tlen > range) {opFail(); return;} if (Config.USE_STRING_TEMPLATES) { byte[]bs = regex.templates[code[ip++]]; int ps = code[ip++]; while (tlen-- > 0) if (bs[ps++] != bytes[s++]) {opFail(); return;} } else { while (tlen-- > 0) if (code[ip++] != bytes[s++]) {opFail(); return;} } sprev = s - 1; }
private void opAnyCharMLSb() { if (s >= range) {opFail(); return;} s++; sprev = sbegin; // break; }
private void opExact1ICSb() { if (s >= range || code[ip] != enc.toLowerCaseTable()[bytes[s++] & 0xff]) {opFail(); return;} ip++; sprev = sbegin; // break; }
private void opCClassSb() { if (s >= range || !isInBitSet()) {opFail(); return;} ip += BitSet.BITSET_SIZE; s++; sprev = sbegin; // break; }
private void opCClassMIXNotSb() { if (s >= range || isInBitSet()) {opFail(); return;} ip += BitSet.BITSET_SIZE; s++; int tlen = code[ip++]; ip += tlen; sprev = sbegin; // break; }
private void opAnyCharStarSb() { final byte[]bytes = this.bytes; while (s < range) { pushAlt(ip, s, sprev, pkeep); if (bytes[s] == Encoding.NEW_LINE) {opFail(); return;} sprev = s; s++; } }
private void opStateCheckAnyCharStarSb() { int mem = code[ip++]; final byte[]bytes = this.bytes; while (s < range) { if (stateCheckVal(s, mem)) {opFail(); return;} pushAltWithStateCheck(ip, s, sprev, mem, pkeep); if (bytes[s] == Encoding.NEW_LINE) {opFail(); return;} sprev = s; s++; } sprev = sbegin; // break; }
private void opNotWordSb() { if (s >= range || enc.isWord(bytes[s] & 0xff)) {opFail(); return;} s++; sprev = sbegin; // break; }
private void opNotAsciiWordBound() { if (s == str) { if (s < range && isMbcAsciiWord(enc, bytes, s, end)) {opFail(); return;} } else if (s == end) { if (sprev < end && isMbcAsciiWord(enc, bytes, sprev, end)) {opFail(); return;} } else { if (isMbcAsciiWord(enc, bytes, s, end) != isMbcAsciiWord(enc, bytes, sprev, end)) {opFail(); return;} } }
private void opWordBound() { if (s == str) { if (s >= range || !enc.isMbcWord(bytes, s, end)) {opFail(); return;} } else if (s == end) { if (sprev >= end || !enc.isMbcWord(bytes, sprev, end)) {opFail(); return;} } else { if (enc.isMbcWord(bytes, s, end) == enc.isMbcWord(bytes, sprev, end)) {opFail(); return;} } }
private void opWordEndSb() { if (s != str && enc.isWord(bytes[sprev] & 0xff)) { if (s == end || !enc.isWord(bytes[s] & 0xff)) return; } opFail(); }
private void opNullCheckEndMemST() { int mem = code[ip++]; /* mem: null check id */ int isNull = nullCheckMemSt(mem, s); if (isNull != 0) { if (Config.DEBUG_MATCH) { Config.log.println("NULL_CHECK_END_MEMST: skip id:" + mem + ", s:" + s); } if (isNull == -1) {opFail(); return;} nullCheckFound(); } }
private void opStateCheckPush() { int mem = code[ip++]; if (stateCheckVal(s, mem)) {opFail(); return;} int addr = code[ip++]; pushAltWithStateCheck(ip + addr, s, sprev, mem, pkeep); }
private void opAnyChar() { final int n; if (s >= range || s + (n = enc.length(bytes, s, end)) > range || enc.isNewLine(bytes, s, end)) {opFail(); return;} s += n; sprev = sbegin; // break; }
private void opWordEnd() { if (s != str && enc.isMbcWord(bytes, sprev, end)) { if (s == end || !enc.isMbcWord(bytes, s, end)) return; } opFail(); }
private void opAsciiWordEnd() { if (s != str && isMbcAsciiWord(enc, bytes, sprev, end)) { if (s == end || !isMbcAsciiWord(enc, bytes, s, end)) return; } opFail(); }