regex: Use ANYOFV
authorKarl Williamson <public@khwilliamson.com>
Fri, 14 Jan 2011 05:36:36 +0000 (22:36 -0700)
committerKarl Williamson <public@khwilliamson.com>
Fri, 14 Jan 2011 05:55:54 +0000 (22:55 -0700)
commitf56b6394f7cf57733135f56e4e4ac49abe9ac9cc
tree05ee69c096e75180133c560d589860919ad8bc89
parent8cb75cc8ea95e17623a8b9b08cd293630b48508d
regex: Use ANYOFV

This patch restructures the regex ANYOF code to generate ANYOFV nodes instead
when there is a possibility that it could match more than one character.   Note
that this doesn't affect the optimizer, as it essentially ignores things that
fit into this category.  (But it means that the optimizer will no longer reject
these when it shouldn't have.)

The handling of the LATIN SHARP s is modified to correspond with this new node
type.

The initial handling of ANYOFV is placed in regexec.c.  More analysis will come
on that.  But there was significant change to the part that handles matching
multi-char strings.  This has long been buggy, with it previously comparing a
folded-version on one side with a non-folded version on the other.

This patch fixes about 60% of the problems that my undelivered test suite gives
for multi-char folds.  But there are still 17K test failures left, so I'm still
not delivering that.  The TODOs that this fixes will be cleaned up in a later commit
regcomp.c
regexec.c