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 |
|
|