| 67 |
functions to work this way. This got rid of about 600 lines of source. It |
functions to work this way. This got rid of about 600 lines of source. It |
| 68 |
should make future maintenance and development easier. As this was such a major |
should make future maintenance and development easier. As this was such a major |
| 69 |
change, I never released 6.8, instead upping the number to 7.0 (other quite |
change, I never released 6.8, instead upping the number to 7.0 (other quite |
| 70 |
major changes are also present in the 7.0 release). |
major changes were also present in the 7.0 release). |
| 71 |
|
|
| 72 |
A side effect of this work is that the previous limit of 200 on the nesting |
A side effect of this work was that the previous limit of 200 on the nesting |
| 73 |
depth of parentheses was removed. However, there is a downside: pcre_compile() |
depth of parentheses was removed. However, there is a downside: pcre_compile() |
| 74 |
runs more slowly than before (30% or more, depending on the pattern) because it |
runs more slowly than before (30% or more, depending on the pattern) because it |
| 75 |
is doing a full analysis of the pattern. My hope is that this is not a big |
is doing a full analysis of the pattern. My hope was that this would not be a |
| 76 |
issue. |
big issue, and in the event, nobody has commented on it. |
| 77 |
|
|
| 78 |
Traditional matching function |
Traditional matching function |
| 79 |
----------------------------- |
----------------------------- |
| 80 |
|
|
| 81 |
The "traditional", and original, matching function is called pcre_exec(), and |
The "traditional", and original, matching function is called pcre_exec(), and |
| 82 |
it implements an NFA algorithm, similar to the original Henry Spencer algorithm |
it implements an NFA algorithm, similar to the original Henry Spencer algorithm |
| 83 |
and the way that Perl works. Not surprising, since it is intended to be as |
and the way that Perl works. This is not surprising, since it is intended to be |
| 84 |
compatible with Perl as possible. This is the function most users of PCRE will |
as compatible with Perl as possible. This is the function most users of PCRE |
| 85 |
use most of the time. |
will use most of the time. |
| 86 |
|
|
| 87 |
Supplementary matching function |
Supplementary matching function |
| 88 |
------------------------------- |
------------------------------- |
| 119 |
|
|
| 120 |
A list of the opcodes follows: |
A list of the opcodes follows: |
| 121 |
|
|
| 122 |
|
|
| 123 |
Opcodes with no following data |
Opcodes with no following data |
| 124 |
------------------------------ |
------------------------------ |
| 125 |
|
|
| 151 |
OP_EXTUNI match an extended Unicode character |
OP_EXTUNI match an extended Unicode character |
| 152 |
OP_ANYNL match any Unicode newline sequence |
OP_ANYNL match any Unicode newline sequence |
| 153 |
|
|
| 154 |
OP_ACCEPT ) |
OP_ACCEPT ) These are Perl 5.10's "backtracking |
| 155 |
OP_COMMIT ) |
OP_COMMIT ) control verbs". If OP_ACCEPT is inside |
| 156 |
OP_FAIL ) These are Perl 5.10's "backtracking |
OP_FAIL ) capturing parentheses, it may be preceded |
| 157 |
OP_PRUNE ) control verbs". |
OP_PRUNE ) by one or more OP_CLOSE, followed by a 2-byte |
| 158 |
OP_SKIP ) |
OP_SKIP ) number, indicating which parentheses must be |
| 159 |
OP_THEN ) |
OP_THEN ) closed. |
| 160 |
|
|
| 161 |
|
|
| 162 |
Repeating single characters |
Repeating single characters |
| 416 |
data. |
data. |
| 417 |
|
|
| 418 |
Philip Hazel |
Philip Hazel |
| 419 |
April 2008 |
October 2009 |