Blob Blame History Raw
# There are two sorts of patterns in this test. A number of them are
# representative patterns whose lengths and offsets are checked. This is just a
# doublecheck test to ensure the sizes don't go horribly wrong when something
# is changed. The operation of these patterns is checked in other tests.
#
# This file also contains tests whose output varies with code unit size and/or
# link size. Unicode support is required for these tests. There are separate
# output files for each code unit size and link size.

#pattern fullbincode,memory

/((?i)b)/
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2   5 CBra 1
  5  /i b
  7   5 Ket
  9   9 Ket
 11     End
------------------------------------------------------------------

/(?s)(.*X|^B)/
Memory allocation (code space): 76
------------------------------------------------------------------
  0  16 Bra
  2   7 CBra 1
  5     AllAny*
  7     X
  9   5 Alt
 11     ^
 12     B
 14  12 Ket
 16  16 Ket
 18     End
------------------------------------------------------------------

/(?s:.*X|^B)/
Memory allocation (code space): 72
------------------------------------------------------------------
  0  15 Bra
  2   6 Bra
  4     AllAny*
  6     X
  8   5 Alt
 10     ^
 11     B
 13  11 Ket
 15  15 Ket
 17     End
------------------------------------------------------------------

/^[[:alnum:]]/
Memory allocation (code space): 60
------------------------------------------------------------------
  0  12 Bra
  2     ^
  3     [0-9A-Za-z]
 12  12 Ket
 14     End
------------------------------------------------------------------

/#/Ix
Memory allocation (code space): 20
------------------------------------------------------------------
  0   2 Bra
  2   2 Ket
  4     End
------------------------------------------------------------------
Capturing subpattern count = 0
May match empty string
Options: extended
Subject length lower bound = 0

/a#/Ix
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     a
  4   4 Ket
  6     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: extended
First code unit = 'a'
Subject length lower bound = 1

/x?+/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     x?+
  4   4 Ket
  6     End
------------------------------------------------------------------

/x++/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     x++
  4   4 Ket
  6     End
------------------------------------------------------------------

/x{1,3}+/
Memory allocation (code space): 40
------------------------------------------------------------------
  0   7 Bra
  2     x
  4     x{0,2}+
  7   7 Ket
  9     End
------------------------------------------------------------------

/(x)*+/
Memory allocation (code space): 52
------------------------------------------------------------------
  0  10 Bra
  2     Braposzero
  3   5 CBraPos 1
  6     x
  8   5 KetRpos
 10  10 Ket
 12     End
------------------------------------------------------------------

/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
Memory allocation (code space): 220
------------------------------------------------------------------
  0  52 Bra
  2     ^
  3  47 CBra 1
  6   5 CBra 2
  9     a+
 11   5 Ket
 13  13 CBra 3
 16     [ab]+?
 26  13 Ket
 28  13 CBra 4
 31     [bc]+
 41  13 Ket
 43   5 CBra 5
 46     \w*+
 48   5 Ket
 50  47 Ket
 52  52 Ket
 54     End
------------------------------------------------------------------

"8J\$WE\<\.rX\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b"
Memory allocation (code space): 3296
------------------------------------------------------------------
  0 821 Bra
  2     8J$WE<.rX+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
820     \b
821 821 Ket
823     End
------------------------------------------------------------------

"\$\<\.X\+ix\[d1b\!H\#\?vV0vrK\:ZH1\=2M\>iV\;\?aPhFB\<\*vW\@QW\@sO9\}cfZA\-i\'w\%hKd6gt1UJP\,15_\#QY\$M\^Mss_U\/\]\&LK9\[5vQub\^w\[KDD\<EjmhUZ\?\.akp2dF\>qmj\;2\}YWFdYx\.Ap\]hjCPTP\(n28k\+3\;o\&WXqs\/gOXdr\$\:r\'do0\;b4c\(f_Gr\=\"\\4\)\[01T7ajQJvL\$W\~mL_sS\/4h\:x\*\[ZN\=KLs\&L5zX\/\/\>it\,o\:aU\(\;Z\>pW\&T7oP\'2K\^E\:x9\'c\[\%z\-\,64JQ5AeH_G\#KijUKghQw\^\\vea3a\?kka_G\$8\#\`\*kynsxzBLru\'\]k_\[7FrVx\}\^\=\$blx\>s\-N\%j\;D\*aZDnsw\:YKZ\%Q\.Kne9\#hP\?\+b3\(SOvL\,\^\;\&u5\@\?5C5Bhb\=m\-vEh_L15Jl\]U\)0RP6\{q\%L\^_z5E\'Dw6X\b"
Memory allocation (code space): 3256
------------------------------------------------------------------
  0 811 Bra
  2     $<.X+ix[d1b!H#?vV0vrK:ZH1=2M>iV;?aPhFB<*vW@QW@sO9}cfZA-i'w%hKd6gt1UJP,15_#QY$M^Mss_U/]&LK9[5vQub^w[KDD<EjmhUZ?.akp2dF>qmj;2}YWFdYx.Ap]hjCPTP(n28k+3;o&WXqs/gOXdr$:r'do0;b4c(f_Gr="\4)[01T7ajQJvL$W~mL_sS/4h:x*[ZN=KLs&L5zX//>it,o:aU(;Z>pW&T7oP'2K^E:x9'c[%z-,64JQ5AeH_G#KijUKghQw^\vea3a?kka_G$8#`*kynsxzBLru']k_[7FrVx}^=$blx>s-N%j;D*aZDnsw:YKZ%Q.Kne9#hP?+b3(SOvL,^;&u5@?5C5Bhb=m-vEh_L15Jl]U)0RP6{q%L^_z5E'Dw6X
810     \b
811 811 Ket
813     End
------------------------------------------------------------------

/(a(?1)b)/
Memory allocation (code space): 64
------------------------------------------------------------------
  0  13 Bra
  2   9 CBra 1
  5     a
  7   2 Recurse
  9     b
 11   9 Ket
 13  13 Ket
 15     End
------------------------------------------------------------------

/(a(?1)+b)/
Memory allocation (code space): 80
------------------------------------------------------------------
  0  17 Bra
  2  13 CBra 1
  5     a
  7   4 SBra
  9   2 Recurse
 11   4 KetRmax
 13     b
 15  13 Ket
 17  17 Ket
 19     End
------------------------------------------------------------------

/a(?P<name1>b|c)d(?P<longername2>e)/
Memory allocation (code space): 108
------------------------------------------------------------------
  0  24 Bra
  2     a
  4   5 CBra 1
  7     b
  9   4 Alt
 11     c
 13   9 Ket
 15     d
 17   5 CBra 2
 20     e
 22   5 Ket
 24  24 Ket
 26     End
------------------------------------------------------------------

/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/
Memory allocation (code space): 128
------------------------------------------------------------------
  0  29 Bra
  2  18 Bra
  4     a
  6  12 CBra 1
  9     c
 11   5 CBra 2
 14     d
 16   5 Ket
 18  12 Ket
 20  18 Ket
 22   5 CBra 3
 25     a
 27   5 Ket
 29  29 Ket
 31     End
------------------------------------------------------------------

/(?P<a>a)...(?P=a)bbb(?P>a)d/
Memory allocation (code space): 108
------------------------------------------------------------------
  0  24 Bra
  2   5 CBra 1
  5     a
  7   5 Ket
  9     Any
 10     Any
 11     Any
 12     \1
 14     bbb
 20   2 Recurse
 22     d
 24  24 Ket
 26     End
------------------------------------------------------------------

/abc(?C255)de(?C)f/
Memory allocation (code space): 100
------------------------------------------------------------------
  0  22 Bra
  2     abc
  8     Callout 255 10 1
 12     de
 16     Callout 0 16 1
 20     f
 22  22 Ket
 24     End
------------------------------------------------------------------

/abcde/auto_callout
Memory allocation (code space): 156
------------------------------------------------------------------
  0  36 Bra
  2     Callout 255 0 1
  6     a
  8     Callout 255 1 1
 12     b
 14     Callout 255 2 1
 18     c
 20     Callout 255 3 1
 24     d
 26     Callout 255 4 1
 30     e
 32     Callout 255 5 0
 36  36 Ket
 38     End
------------------------------------------------------------------

/\x{100}/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{100}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{1000}/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{1000}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{10000}/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{10000}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{100000}/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{100000}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{10ffff}/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{10ffff}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{110000}/utf
Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large

/[\x{ff}]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{ff}
  4   4 Ket
  6     End
------------------------------------------------------------------

/[\x{100}]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{100}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x80/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{80}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\xff/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{ff}
  4   4 Ket
  6     End
------------------------------------------------------------------

/\x{0041}\x{2262}\x{0391}\x{002e}/I,utf
Memory allocation (code space): 52
------------------------------------------------------------------
  0  10 Bra
  2     A\x{2262}\x{391}.
 10  10 Ket
 12     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First code unit = 'A'
Last code unit = '.'
Subject length lower bound = 4

/\x{D55c}\x{ad6d}\x{C5B4}/I,utf
Memory allocation (code space): 44
------------------------------------------------------------------
  0   8 Bra
  2     \x{d55c}\x{ad6d}\x{c5b4}
  8   8 Ket
 10     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First code unit = \x{d55c}
Last code unit = \x{c5b4}
Subject length lower bound = 3

/\x{65e5}\x{672c}\x{8a9e}/I,utf
Memory allocation (code space): 44
------------------------------------------------------------------
  0   8 Bra
  2     \x{65e5}\x{672c}\x{8a9e}
  8   8 Ket
 10     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First code unit = \x{65e5}
Last code unit = \x{8a9e}
Subject length lower bound = 3

/[\x{100}]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{100}
  4   4 Ket
  6     End
------------------------------------------------------------------

/[Z\x{100}]/utf
Memory allocation (code space): 76
------------------------------------------------------------------
  0  16 Bra
  2     [Z\x{100}]
 16  16 Ket
 18     End
------------------------------------------------------------------

/^[\x{100}\E-\Q\E\x{150}]/utf
Memory allocation (code space): 52
------------------------------------------------------------------
  0  10 Bra
  2     ^
  3     [\x{100}-\x{150}]
 10  10 Ket
 12     End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/utf
Memory allocation (code space): 52
------------------------------------------------------------------
  0  10 Bra
  2     ^
  3     [\x{100}-\x{150}]
 10  10 Ket
 12     End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E/utf
Failed: error 106 at offset 13: missing terminating ] for character class

/[\p{L}]/
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\p{L}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[\p{^L}]/
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\P{L}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[\P{L}]/
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\P{L}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[\P{^L}]/
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\p{L}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[abc\p{L}\x{0660}]/utf
Memory allocation (code space): 88
------------------------------------------------------------------
  0  19 Bra
  2     [a-c\p{L}\x{660}]
 19  19 Ket
 21     End
------------------------------------------------------------------

/[\p{Nd}]/utf
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\p{Nd}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[\p{Nd}+-]+/utf
Memory allocation (code space): 84
------------------------------------------------------------------
  0  18 Bra
  2     [+\-\p{Nd}]++
 18  18 Ket
 20     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
Memory allocation (code space): 60
------------------------------------------------------------------
  0  12 Bra
  2  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 12  12 Ket
 14     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
Memory allocation (code space): 60
------------------------------------------------------------------
  0  12 Bra
  2     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 12  12 Ket
 14     End
------------------------------------------------------------------

/[\x{105}-\x{109}]/i,utf
Memory allocation (code space): 48
------------------------------------------------------------------
  0   9 Bra
  2     [\x{104}-\x{109}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/( ( (?(1)0|) )*   )/x
Memory allocation (code space): 104
------------------------------------------------------------------
  0  23 Bra
  2  19 CBra 1
  5     Brazero
  6  13 SCBra 2
  9   6 Cond
 11   1 Cond ref
 13     0
 15   2 Alt
 17   8 Ket
 19  13 KetRmax
 21  19 Ket
 23  23 Ket
 25     End
------------------------------------------------------------------

/(  (?(1)0|)*   )/x
Memory allocation (code space): 84
------------------------------------------------------------------
  0  18 Bra
  2  14 CBra 1
  5     Brazero
  6   6 SCond
  8   1 Cond ref
 10     0
 12   2 Alt
 14   8 KetRmax
 16  14 Ket
 18  18 Ket
 20     End
------------------------------------------------------------------

/[a]/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     a
  4   4 Ket
  6     End
------------------------------------------------------------------

/[a]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     a
  4   4 Ket
  6     End
------------------------------------------------------------------

/[\xaa]/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{aa}
  4   4 Ket
  6     End
------------------------------------------------------------------

/[\xaa]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     \x{aa}
  4   4 Ket
  6     End
------------------------------------------------------------------

/[^a]/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     [^a]
  4   4 Ket
  6     End
------------------------------------------------------------------

/[^a]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     [^a]
  4   4 Ket
  6     End
------------------------------------------------------------------

/[^\xaa]/
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     [^\x{aa}]
  4   4 Ket
  6     End
------------------------------------------------------------------

/[^\xaa]/utf
Memory allocation (code space): 28
------------------------------------------------------------------
  0   4 Bra
  2     [^\x{aa}]
  4   4 Ket
  6     End
------------------------------------------------------------------

#pattern -memory

/[^\d]/utf,ucp
------------------------------------------------------------------
  0   9 Bra
  2     [^\p{Nd}]
  9   9 Ket
 11     End
------------------------------------------------------------------

/[[:^alpha:][:^cntrl:]]+/utf,ucp
------------------------------------------------------------------
  0  13 Bra
  2     [\P{L}\P{Cc}]++
 13  13 Ket
 15     End
------------------------------------------------------------------

/[[:^cntrl:][:^alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  13 Bra
  2     [\P{Cc}\P{L}]++
 13  13 Ket
 15     End
------------------------------------------------------------------

/[[:alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  10 Bra
  2     [\p{L}]++
 10  10 Ket
 12     End
------------------------------------------------------------------

/[[:^alpha:]\S]+/utf,ucp
------------------------------------------------------------------
  0  13 Bra
  2     [\P{L}\P{Xsp}]++
 13  13 Ket
 15     End
------------------------------------------------------------------

/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/
------------------------------------------------------------------
  0  60 Bra
  2     abc
  8   5 CBra 1
 11     d
 13   4 Alt
 15     e
 17   9 Ket
 19     *THEN
 20     x
 22  12 CBra 2
 25     123
 31     *THEN
 32     4
 34  24 Alt
 36     567
 42   5 CBra 3
 45     b
 47   4 Alt
 49     q
 51   9 Ket
 53     *THEN
 54     xx
 58  36 Ket
 60  60 Ket
 62     End
------------------------------------------------------------------

/(((a\2)|(a*)\g<-1>))*a?/
------------------------------------------------------------------
  0  39 Bra
  2     Brazero
  3  32 SCBra 1
  6  27 Once
  8  12 CBra 2
 11   7 CBra 3
 14     a
 16     \2
 18   7 Ket
 20  11 Alt
 22   5 CBra 4
 25     a*
 27   5 Ket
 29  22 Recurse
 31  23 Ket
 33  27 Ket
 35  32 KetRmax
 37     a?+
 39  39 Ket
 41     End
------------------------------------------------------------------

/((?+1)(\1))/
------------------------------------------------------------------
  0  20 Bra
  2  16 Once
  4  12 CBra 1
  7   9 Recurse
  9   5 CBra 2
 12     \1
 14   5 Ket
 16  12 Ket
 18  16 Ket
 20  20 Ket
 22     End
------------------------------------------------------------------

"(?1)(?#?'){2}(a)"
------------------------------------------------------------------
  0  13 Bra
  2   6 Recurse
  4   6 Recurse
  6   5 CBra 1
  9     a
 11   5 Ket
 13  13 Ket
 15     End
------------------------------------------------------------------

/.((?2)(?R)|\1|$)()/
------------------------------------------------------------------
  0  28 Bra
  2     Any
  3  18 Once
  5   7 CBra 1
  8  23 Recurse
 10   0 Recurse
 12   4 Alt
 14     \1
 16   3 Alt
 18     $
 19  14 Ket
 21  18 Ket
 23   3 CBra 2
 26   3 Ket
 28  28 Ket
 30     End
------------------------------------------------------------------

/.((?3)(?R)()(?2)|\1|$)()/
------------------------------------------------------------------
  0  35 Bra
  2     Any
  3  25 Once
  5  14 CBra 1
  8  30 Recurse
 10   0 Recurse
 12   3 CBra 2
 15   3 Ket
 17  12 Recurse
 19   4 Alt
 21     \1
 23   3 Alt
 25     $
 26  21 Ket
 28  25 Ket
 30   3 CBra 3
 33   3 Ket
 35  35 Ket
 37     End
------------------------------------------------------------------

/(?1)()((((((\1++))\x85)+)|))/
------------------------------------------------------------------
  0  50 Bra
  2   4 Recurse
  4   3 CBra 1
  7   3 Ket
  9  39 CBra 2
 12  32 CBra 3
 15  27 CBra 4
 18  22 CBra 5
 21  15 CBra 6
 24  10 CBra 7
 27   5 Once
 29     \1+
 32   5 Ket
 34  10 Ket
 36  15 Ket
 38     \x{85}
 40  22 KetRmax
 42  27 Ket
 44   2 Alt
 46  34 Ket
 48  39 Ket
 50  50 Ket
 52     End
------------------------------------------------------------------

# Check the absolute limit on nesting (?| etc. This varies with code unit
# width because the workspace is a different number of bytes. It will fail
# with link size 2 in 8-bit and 16-bit but not in 32-bit.

/(?|(?|(?J:(?|(?x:(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|
)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
/parens_nest_limit=1000,-fullbincode

# Use "expand" to create some very long patterns with nested parentheses, in
# order to test workspace overflow. Again, this varies with code unit width,
# and even when it fails in two modes, the error offset differs. It also varies
# with link size - hence multiple tests with different values.

/(?'ABC'\[[bar](]{792}*THEN:\[A]{255}\[)]{793}/expand,-fullbincode,parens_nest_limit=1000

/(?'ABC'\[[bar](]{793}*THEN:\[A]{255}\[)]{794}/expand,-fullbincode,parens_nest_limit=1000

/(?'ABC'\[[bar](]{1793}*THEN:\[A]{255}\[)]{1794}/expand,-fullbincode,parens_nest_limit=2000
Failed: error 186 at offset 12820: regular expression is too complicated

/(?(1)(?1)){8,}+()/debug
------------------------------------------------------------------
  0  79 Bra
  2  70 Once
  4   6 Cond
  6   1 Cond ref
  8  74 Recurse
 10   6 Ket
 12   6 Cond
 14   1 Cond ref
 16  74 Recurse
 18   6 Ket
 20   6 Cond
 22   1 Cond ref
 24  74 Recurse
 26   6 Ket
 28   6 Cond
 30   1 Cond ref
 32  74 Recurse
 34   6 Ket
 36   6 Cond
 38   1 Cond ref
 40  74 Recurse
 42   6 Ket
 44   6 Cond
 46   1 Cond ref
 48  74 Recurse
 50   6 Ket
 52   6 Cond
 54   1 Cond ref
 56  74 Recurse
 58   6 Ket
 60  10 SBraPos
 62   6 SCond
 64   1 Cond ref
 66  74 Recurse
 68   6 Ket
 70  10 KetRpos
 72  70 Ket
 74   3 CBra 1
 77   3 Ket
 79  79 Ket
 81     End
------------------------------------------------------------------
Capturing subpattern count = 1
Max back reference = 1
May match empty string
Subject length lower bound = 0
    abcd
 0: 
 1: 

/(?(1)|a(?1)b){2,}+()/debug
------------------------------------------------------------------
  0  43 Bra
  2  34 Once
  4   4 Cond
  6   1 Cond ref
  8   8 Alt
 10     a
 12  38 Recurse
 14     b
 16  12 Ket
 18  16 SBraPos
 20   4 SCond
 22   1 Cond ref
 24   8 Alt
 26     a
 28  38 Recurse
 30     b
 32  12 Ket
 34  16 KetRpos
 36  34 Ket
 38   3 CBra 1
 41   3 Ket
 43  43 Ket
 45     End
------------------------------------------------------------------
Capturing subpattern count = 1
Max back reference = 1
May match empty string
Subject length lower bound = 0
    abcde
No match

/((?1)(?2)(?3)(?4)(?5)(?6)(?7)(?8)(?9)(?9)(?8)(?7)(?6)(?5)(?4)(?3)(?2)(?1)(?0)){2,}()()()()()()()()()/debug
------------------------------------------------------------------
  0 133 Bra
  2  41 CBra 1
  5   2 Recurse
  7  88 Recurse
  9  93 Recurse
 11  98 Recurse
 13 103 Recurse
 15 108 Recurse
 17 113 Recurse
 19 118 Recurse
 21 123 Recurse
 23 123 Recurse
 25 118 Recurse
 27 113 Recurse
 29 108 Recurse
 31 103 Recurse
 33  98 Recurse
 35  93 Recurse
 37  88 Recurse
 39   2 Recurse
 41   0 Recurse
 43  41 Ket
 45  41 SCBra 1
 48   2 Recurse
 50  88 Recurse
 52  93 Recurse
 54  98 Recurse
 56 103 Recurse
 58 108 Recurse
 60 113 Recurse
 62 118 Recurse
 64 123 Recurse
 66 123 Recurse
 68 118 Recurse
 70 113 Recurse
 72 108 Recurse
 74 103 Recurse
 76  98 Recurse
 78  93 Recurse
 80  88 Recurse
 82   2 Recurse
 84   0 Recurse
 86  41 KetRmax
 88   3 CBra 2
 91   3 Ket
 93   3 CBra 3
 96   3 Ket
 98   3 CBra 4
101   3 Ket
103   3 CBra 5
106   3 Ket
108   3 CBra 6
111   3 Ket
113   3 CBra 7
116   3 Ket
118   3 CBra 8
121   3 Ket
123   3 CBra 9
126   3 Ket
128   3 CBra 10
131   3 Ket
133 133 Ket
135     End
------------------------------------------------------------------
Capturing subpattern count = 10
May match empty string
Subject length lower bound = 0

/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/
Failed: error 114 at offset 509: missing closing parenthesis

/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))/-fullbincode

# End of testinput8