| 1148 |
do ecode += GET(ecode,1); while (*ecode == OP_ALT); |
do ecode += GET(ecode,1); while (*ecode == OP_ALT); |
| 1149 |
break; |
break; |
| 1150 |
|
|
| 1151 |
/* BRAZERO and BRAMINZERO occur just before a bracket group, indicating |
/* BRAZERO, BRAMINZERO and SKIPZERO occur just before a bracket group, |
| 1152 |
that it may occur zero times. It may repeat infinitely, or not at all - |
indicating that it may occur zero times. It may repeat infinitely, or not |
| 1153 |
i.e. it could be ()* or ()? in the pattern. Brackets with fixed upper |
at all - i.e. it could be ()* or ()? or even (){0} in the pattern. Brackets |
| 1154 |
repeat limits are compiled as a number of copies, with the optional ones |
with fixed upper repeat limits are compiled as a number of copies, with the |
| 1155 |
preceded by BRAZERO or BRAMINZERO. */ |
optional ones preceded by BRAZERO or BRAMINZERO. */ |
| 1156 |
|
|
| 1157 |
case OP_BRAZERO: |
case OP_BRAZERO: |
| 1158 |
{ |
{ |
| 1174 |
} |
} |
| 1175 |
break; |
break; |
| 1176 |
|
|
| 1177 |
|
case OP_SKIPZERO: |
| 1178 |
|
{ |
| 1179 |
|
next = ecode+1; |
| 1180 |
|
do next += GET(next,1); while (*next == OP_ALT); |
| 1181 |
|
ecode = next + 1 + LINK_SIZE; |
| 1182 |
|
} |
| 1183 |
|
break; |
| 1184 |
|
|
| 1185 |
/* End of a group, repeated or non-repeating. */ |
/* End of a group, repeated or non-repeating. */ |
| 1186 |
|
|
| 1187 |
case OP_KET: |
case OP_KET: |