| 228 |
/* Test an embedded subpattern; if it could not be empty, break the |
/* Test an embedded subpattern; if it could not be empty, break the |
| 229 |
loop. Otherwise carry on in the branch. */ |
loop. Otherwise carry on in the branch. */ |
| 230 |
|
|
| 231 |
if ((int)(*cc) >= OP_BRA) |
if ((int)(*cc) >= OP_BRA || (int)(*cc) == OP_ONCE) |
| 232 |
{ |
{ |
| 233 |
if (!could_be_empty(cc)) break; |
if (!could_be_empty(cc)) break; |
| 234 |
do cc += (cc[1] << 8) + cc[2]; while (*cc == OP_ALT); |
do cc += (cc[1] << 8) + cc[2]; while (*cc == OP_ALT); |
| 272 |
case OP_MINSTAR: |
case OP_MINSTAR: |
| 273 |
case OP_QUERY: |
case OP_QUERY: |
| 274 |
case OP_MINQUERY: |
case OP_MINQUERY: |
| 275 |
|
case OP_NOTSTAR: |
| 276 |
|
case OP_NOTMINSTAR: |
| 277 |
|
case OP_NOTQUERY: |
| 278 |
|
case OP_NOTMINQUERY: |
| 279 |
case OP_TYPESTAR: |
case OP_TYPESTAR: |
| 280 |
case OP_TYPEMINSTAR: |
case OP_TYPEMINSTAR: |
| 281 |
case OP_TYPEQUERY: |
case OP_TYPEQUERY: |
| 296 |
|
|
| 297 |
case OP_CLASS: |
case OP_CLASS: |
| 298 |
case OP_REF: |
case OP_REF: |
| 299 |
cc += (*cc == OP_REF)? 2 : 4 + 2 * cc[2] + cc[3]; |
cc += (*cc == OP_REF)? 2 : 33; |
| 300 |
|
|
| 301 |
switch (*cc) |
switch (*cc) |
| 302 |
{ |
{ |
| 2364 |
|
|
| 2365 |
/* "Once" brackets are like assertion brackets except that after a match, |
/* "Once" brackets are like assertion brackets except that after a match, |
| 2366 |
the point in the subject string is not moved back. Thus there can never be |
the point in the subject string is not moved back. Thus there can never be |
| 2367 |
a back into the brackets. Check the alternative branches in turn - the |
a move back into the brackets. Check the alternative branches in turn - the |
| 2368 |
matching won't pass the KET for this kind of subpattern. If any one branch |
matching won't pass the KET for this kind of subpattern. If any one branch |
| 2369 |
matches, we carry on, leaving the subject pointer. */ |
matches, we carry on, leaving the subject pointer. */ |
| 2370 |
|
|