Lines Matching refs:scan
972 * joining, we scan for occurrences of the sequence 'ss' in non-UTF-8
1058 Perl_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan,
1064 regnode *n = regnext(scan);
1066 regnode *next = REGNODE_AFTER_varies(scan);
1070 regnode *stop = scan;
1081 DEBUG_PEEP("join", scan, depth, 0);
1083 assert(REGNODE_TYPE(OP(scan)) == EXACT);
1091 && NEXT_OFF(scan) + NEXT_OFF(n) < I16_MAX)
1098 NEXT_OFF(scan) += NEXT_OFF(n);
1107 const unsigned int oldl = STR_LEN(scan);
1119 if (OP(scan) == EXACT && (OP(n) == EXACT_REQ8)) {
1120 OP(scan) = EXACT_REQ8;
1122 else if (OP(scan) == EXACT_REQ8 && (OP(n) == EXACT)) {
1125 else if ((OP(scan) == EXACTFU) && (OP(n) == EXACTFU_REQ8)) {
1126 OP(scan) = EXACTFU_REQ8;
1128 else if ((OP(scan) == EXACTFU_REQ8) && (OP(n) == EXACTFU)) {
1131 else if (OP(scan) == EXACTFU && OP(n) == EXACTFU) {
1134 else if (OP(scan) == EXACTFU && OP(n) == EXACTFU_S_EDGE) {
1159 * current one in 'scan' be the more desirable EXACTFU */
1164 OP(scan) = EXACTFU_S_EDGE;
1167 becomes an interior 's' in 'scan' */
1169 else if (OP(scan) == EXACTF && OP(n) == EXACTF) {
1172 else if (OP(scan) == EXACTF && OP(n) == EXACTFU_S_EDGE) {
1186 else if (OP(scan) == EXACTFU_S_EDGE && OP(n) == EXACTFU_S_EDGE) {
1187 if ( STRING(scan)[STR_LEN(scan)-1] == 's'
1192 OP(scan) = EXACTF;
1195 else if (OP(scan) == EXACTFU_S_EDGE && OP(n) == EXACTFU) {
1201 OP(scan) = EXACTFU;
1204 else if (OP(scan) == EXACTFU_S_EDGE && OP(n) == EXACTF) {
1208 OP(scan) = EXACTF;
1210 else if (OP(scan) != OP(n)) {
1222 NEXT_OFF(scan) += NEXT_OFF(n);
1223 assert( ( STR_LEN(scan) + STR_LEN(n) ) < 256 );
1224 setSTR_LEN(scan, (U8)(STR_LEN(scan) + STR_LEN(n)));
1226 Move(STRING(n), STRING(scan) + oldl, STR_LEN(n), char);
1250 if (OP(scan) == EXACTFU_S_EDGE) {
1251 OP(scan) = EXACTFU;
1262 if (OP(scan) != EXACT && OP(scan) != EXACT_REQ8 && OP(scan) != EXACTL) {
1263 U8* s0 = (U8*) STRING(scan);
1265 U8* s_end = s0 + STR_LEN(scan);
1277 if (OP(scan) == EXACTFL) {
1296 Newx(folded, UTF8_MAX_FOLD_CHAR_EXPAND * STR_LEN(scan) + 1, U8);
1345 if (OP(scan) != EXACTFAA && OP(scan) != EXACTFAA_NO_TRIE) {
1372 if (OP(scan) == EXACTFL) {
1373 int total_chars = utf8_length((U8*) STRING(scan),
1374 (U8*) STRING(scan) + STR_LEN(scan));
1383 else if (OP(scan) == EXACTFAA) {
1396 OP(scan) = EXACTFAA_NO_TRIE;
1403 else if (OP(scan) != EXACTFAA_NO_TRIE) {
1411 const U8* upper = (OP(scan) == EXACTF || OP(scan) == EXACTFL)
1419 && (OP(scan) == EXACTF || OP(scan) == EXACTFL))
1438 if (OP(scan) != EXACTF && OP(scan) != EXACTFL) {
1439 OP(scan) = EXACTFUP;
1453 n = REGNODE_AFTER_varies(scan);
1461 DEBUG_OPTIMISE_r(if (merged){DEBUG_PEEP("finl", scan, depth, 0);});
1493 regnode *scan = *scanp; /* the current opcode we are inspecting */
1494 regnode *next = NULL; /* the next opcode beyond scan, tmp var */
1495 regnode *first_non_open = scan; /* FIXME: should this init to NULL?
1511 I32 is_par = OP(scan) == OPEN ? PARNO(scan) : 0; /* is this op an OPEN? */
1545 Perl_re_indentf( aTHX_ "study_chunk stopparen=%ld recursed_count=%lu depth=%lu recursed_depth=%lu scan=%p last=%p",
1549 scan,
1569 while ( scan && OP(scan) != END && scan < last ){
1580 DEBUG_PEEP("Peep", scan, depth, flags);
1588 if (REGNODE_TYPE(OP(scan)) == EXACT
1589 && OP(scan) != LEXACT
1590 && OP(scan) != LEXACT_REQ8
1593 join_exact(pRExC_state, scan, &min_subtract, &unfolded_multi_char,
1600 rck_elide_nothing(scan);
1604 if ( OP(scan) == DEFINEP ) {
1612 scan = regnext(scan);
1613 assert( OP(scan) == IFTHEN );
1614 DEBUG_PEEP("expect IFTHEN", scan, depth, flags);
1619 next = regnext(scan);
1620 scan = REGNODE_AFTER_type(scan,tregnode_IFTHEN);
1621 DEBUG_PEEP("scan", scan, depth, flags);
1627 (void)study_chunk(pRExC_state, &scan, &minlen,
1631 scan = next;
1634 OP(scan) == BRANCH ||
1635 OP(scan) == BRANCHJ ||
1636 OP(scan) == IFTHEN
1638 next = regnext(scan);
1639 code = OP(scan);
1652 regnode * const startbranch=scan;
1662 while (OP(scan) == code) {
1668 DEBUG_PEEP("Branch", scan, depth, flags);
1683 next = regnext(scan);
1685 scan = REGNODE_AFTER_opcode(scan, code);
1697 minnext = study_chunk(pRExC_state, &scan, minlenp,
1709 scan = next;
1775 Assuming this was/is a branch we are dealing with: 'scan'
1826 regnode *tail = scan;
1870 the same as scan (our current position in the regex
1930 for ( cur = startbranch ; cur != scan ; cur = regnext( cur ) ) {
2065 first, scan, tail, count,
2074 && scan >= tail )
2110 scan = REGNODE_AFTER_opcode(scan,code);
2112 } else if (OP(scan) == SUSPEND || OP(scan) == GOSUB) {
2118 if (OP(scan) != SUSPEND) { /* GOSUB */
2123 paren = ARG1u(scan);
2124 RExC_recurse[ARG2i(scan)] = scan;
2156 scan= regnext(scan);
2202 start = scan + 2;
2203 end = regnext(scan);
2223 newframe->next_regnode = regnext(scan);
2229 (frame && frame->in_gosub) || OP(scan) == GOSUB
2233 DEBUG_PEEP("fnew", scan, depth, flags);
2236 scan = start;
2245 else if (REGNODE_TYPE(OP(scan)) == EXACT && ! isEXACTFish(OP(scan))) {
2246 SSize_t bytelen = STR_LEN(scan), charlen;
2250 const U8 * const s = (U8*)STRING(scan);
2254 uc = *((U8*)STRING(scan));
2268 sv_catpvn(data->last_found, STRING(scan), bytelen);
2300 else if (REGNODE_TYPE(OP(scan)) == EXACT) {
2302 SSize_t bytelen = STR_LEN(scan), charlen;
2303 const U8 * s = (U8*)STRING(scan);
2311 && ( OP(scan) == EXACTFAA
2312 || ( OP(scan) == EXACTFU
2318 OP(scan) = ANYOFM;
2319 ARG1u_SET(scan, *s & mask);
2320 FLAGS(scan) = mask;
2363 SV* EXACTF_invlist = make_exactf_invlist(pRExC_state, scan);
2367 if (OP(scan) != EXACTFL)
2385 else if (REGNODE_VARIES(OP(scan))) {
2389 regnode * const oscan = scan;
2394 switch (REGNODE_TYPE(OP(scan))) {
2396 scan = REGNODE_AFTER(scan);
2400 next = REGNODE_AFTER(scan);
2407 next = regnext(scan);
2408 scan = REGNODE_AFTER(scan);
2420 next = REGNODE_AFTER(scan);
2453 next = regnext(scan);
2454 scan = REGNODE_AFTER(scan);
2463 scan = regnext(scan);
2466 if (stopparen>0 && (OP(scan)==CURLYN || OP(scan)==CURLYM)
2467 && (FLAGS(scan) == stopparen))
2472 mincount = ARG1i(scan);
2473 maxcount = ARG2i(scan);
2475 next = regnext(scan);
2476 if (OP(scan) == CURLYX) {
2478 FLAGS(scan) = ((lp <= (I32)U8_MAX) ? (U8)lp : U8_MAX);
2480 scan = REGNODE_AFTER(scan);
2481 next_is_eval = (OP(scan) == EVAL);
2514 /* This will finish on WHILEM, setting scan, or on NULL: */
2516 minnext = study_chunk(pRExC_state, &scan, minlenp, &deltanext,
2554 if (!scan) /* It was not CURLYX, but CURLY. */
2555 scan = next;
2861 OP(scan));
2871 if (OP(scan) == CLUMP) {
2884 else if (OP(scan) == LNBREAK) {
2919 else if (REGNODE_SIMPLE(OP(scan))) {
2936 switch (OP(scan)) {
2941 OP(scan));
2981 (regnode_charclass *) scan);
2984 (regnode_charclass *) scan);
2989 SV* cp_list = get_ANYOFHbbm_contents(scan);
3008 SV* cp_list = get_ANYOFM_contents(scan);
3027 ANYOFRbase(scan),
3028 ANYOFRbase(scan) + ANYOFRdelta(scan));
3046 namedclass = classnum_to_namedclass(FLAGS(scan)) + invert;
3086 my_invlist = invlist_clone(PL_Posix_ptrs[FLAGS(scan)], NULL);
3095 my_invlist = invlist_clone(PL_XPosix_ptrs[FLAGS(scan)], NULL);
3102 if (OP(scan) == NPOSIXD) {
3124 else if (REGNODE_TYPE(OP(scan)) == EOL && flags & SCF_DO_SUBSTR) {
3125 data->flags |= (OP(scan) == MEOL
3131 else if ( REGNODE_TYPE(OP(scan)) == BRANCHJ
3133 && (FLAGS(scan) || data || (flags & SCF_DO_STCLASS))
3134 && (OP(scan) == IFMATCH || OP(scan) == UNLESSM))
3137 || OP(scan) == UNLESSM )
3143 bool is_positive = OP(scan) == IFMATCH ? 1 : 0;
3170 if ( flags & SCF_DO_STCLASS && !FLAGS(scan)
3171 && OP(scan) == IFMATCH ) { /* Lookahead */
3178 next = regnext(scan);
3179 nscan = REGNODE_AFTER(scan);
3187 if (FLAGS(scan)) {
3203 NEXT_OFF(scan) = deltanext;
3218 FLAGS(scan) = (U8)minnext + deltanext;
3275 if (FLAGS(scan))
3290 if ( flags & SCF_DO_STCLASS && !FLAGS(scan)
3291 && OP(scan) == IFMATCH ) { /* Lookahead */
3298 next = regnext(scan);
3299 nscan = REGNODE_AFTER(scan);
3306 if (FLAGS(scan)) {
3319 NEXT_OFF(scan) = deltanext;
3321 FLAGS(scan) = (U8)*minnextp + deltanext;
3351 data->substrs[i].lookbehind += FLAGS(scan);
3359 else if (OP(scan) == OPEN) {
3360 if (stopparen != (I32)PARNO(scan))
3363 else if (OP(scan) == CLOSE) {
3364 if (stopparen == (I32)PARNO(scan)) {
3367 if ((I32)PARNO(scan) == is_par) {
3368 next = regnext(scan);
3374 *(data->last_closep) = PARNO(scan);
3375 *(data->last_close_opp) = scan;
3378 else if (OP(scan) == EVAL) {
3379 if (data && !(FLAGS(scan) & EVAL_OPTIMISTIC_FLAG) )
3382 else if ( REGNODE_TYPE(OP(scan)) == ENDLIKE ) {
3387 if (OP(scan)==ACCEPT) {
3396 else if (OP(scan) == COMMIT) {
3406 else if (OP(scan) == LOGICAL && FLAGS(scan) == 2) /* Embedded follows */
3417 else if (OP(scan) == GPOS) {
3432 else if (REGNODE_TYPE(OP(scan)) == TRIE) {
3436 regnode *trie_node= scan;
3437 regnode *tail= regnext(scan);
3438 reg_trie_data *trie = (reg_trie_data*)RExC_rxi->data->data[ ARG1u(scan) ];
3486 scan= trie_node + trie->jump[word];
3491 minnext = study_chunk(pRExC_state, &scan, minlenp,
3561 scan= tail;
3566 else if (REGNODE_TYPE(OP(scan)) == TRIE) {
3567 reg_trie_data *trie = (reg_trie_data*)RExC_rxi->data->data[ ARG1u(scan) ];
3588 else if (OP(scan) == REGEX_SET) {
3594 scan = regnext(scan);
3603 DEBUG_PEEP("fend", scan, depth, flags);
3607 scan = frame->next_regnode;
3699 *scanp = scan;