summaryrefslogtreecommitdiff
path: root/HACKING
diff options
context:
space:
mode:
authorph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2009-10-02 08:53:31 +0000
committerph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>2009-10-02 08:53:31 +0000
commit80d5ddd534157a15013c2314a4236bdd8ac0b72f (patch)
treee9cc83556582cde2b0adf4e2a4d98ae75c35aecf /HACKING
parent5c3493df2827cb70ddc42899df2f9ee30f5e7a7b (diff)
downloadpcre-80d5ddd534157a15013c2314a4236bdd8ac0b72f.tar.gz
Documentation update
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@456 2f5784b3-3f2a-0410-8824-cb99058d5e15
Diffstat (limited to 'HACKING')
-rw-r--r--HACKING29
1 files changed, 15 insertions, 14 deletions
diff --git a/HACKING b/HACKING
index 1f30d4c..623fe5b 100644
--- a/HACKING
+++ b/HACKING
@@ -67,22 +67,22 @@ many tests of the mode that might slow it down. So I re-factored the compiling
functions to work this way. This got rid of about 600 lines of source. It
should make future maintenance and development easier. As this was such a major
change, I never released 6.8, instead upping the number to 7.0 (other quite
-major changes are also present in the 7.0 release).
+major changes were also present in the 7.0 release).
-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
depth of parentheses was removed. However, there is a downside: pcre_compile()
runs more slowly than before (30% or more, depending on the pattern) because it
-is doing a full analysis of the pattern. My hope is that this is not a big
-issue.
+is doing a full analysis of the pattern. My hope was that this would not be a
+big issue, and in the event, nobody has commented on it.
Traditional matching function
-----------------------------
The "traditional", and original, matching function is called pcre_exec(), and
it implements an NFA algorithm, similar to the original Henry Spencer algorithm
-and the way that Perl works. Not surprising, since it is intended to be as
-compatible with Perl as possible. This is the function most users of PCRE will
-use most of the time.
+and the way that Perl works. This is not surprising, since it is intended to be
+as compatible with Perl as possible. This is the function most users of PCRE
+will use most of the time.
Supplementary matching function
-------------------------------
@@ -119,6 +119,7 @@ quantifiers) are always just two bytes long.
A list of the opcodes follows:
+
Opcodes with no following data
------------------------------
@@ -150,12 +151,12 @@ These items are all just one byte long
OP_EXTUNI match an extended Unicode character
OP_ANYNL match any Unicode newline sequence
- OP_ACCEPT )
- OP_COMMIT )
- OP_FAIL ) These are Perl 5.10's "backtracking
- OP_PRUNE ) control verbs".
- OP_SKIP )
- OP_THEN )
+ OP_ACCEPT ) These are Perl 5.10's "backtracking
+ OP_COMMIT ) control verbs". If OP_ACCEPT is inside
+ OP_FAIL ) capturing parentheses, it may be preceded
+ OP_PRUNE ) by one or more OP_CLOSE, followed by a 2-byte
+ OP_SKIP ) number, indicating which parentheses must be
+ OP_THEN ) closed.
Repeating single characters
@@ -415,4 +416,4 @@ at compile time, and so does not cause anything to be put into the compiled
data.
Philip Hazel
-April 2008
+October 2009