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): 21
------------------------------------------------------------------
  0  16 Bra
  4   8 CBra 1
 10  /i b
 12   8 Ket
 16  16 Ket
 20     End
------------------------------------------------------------------

/(?s)(.*X|^B)/
Memory allocation (code space): 30
------------------------------------------------------------------
  0  25 Bra
  4  10 CBra 1
 10     AllAny*
 12     X
 14   7 Alt
 18     ^
 19     B
 21  17 Ket
 25  25 Ket
 29     End
------------------------------------------------------------------

/(?s:.*X|^B)/
Memory allocation (code space): 28
------------------------------------------------------------------
  0  23 Bra
  4   8 Bra
  8     AllAny*
 10     X
 12   7 Alt
 16     ^
 17     B
 19  15 Ket
 23  23 Ket
 27     End
------------------------------------------------------------------

/^[[:alnum:]]/
Memory allocation (code space): 43
------------------------------------------------------------------
  0  38 Bra
  4     ^
  5     [0-9A-Za-z]
 38  38 Ket
 42     End
------------------------------------------------------------------

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

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

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

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

/x{1,3}+/
Memory allocation (code space): 15
------------------------------------------------------------------
  0  10 Bra
  4     x
  6     x{0,2}+
 10  10 Ket
 14     End
------------------------------------------------------------------

/(x)*+/
Memory allocation (code space): 22
------------------------------------------------------------------
  0  17 Bra
  4     Braposzero
  5   8 CBraPos 1
 11     x
 13   8 KetRpos
 17  17 Ket
 21     End
------------------------------------------------------------------

/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
Memory allocation (code space): 132
------------------------------------------------------------------
  0 127 Bra
  4     ^
  5 118 CBra 1
 11   8 CBra 2
 17     a+
 19   8 Ket
 23  40 CBra 3
 29     [ab]+?
 63  40 Ket
 67  40 CBra 4
 73     [bc]+
107  40 Ket
111   8 CBra 5
117     \w*+
119   8 Ket
123 118 Ket
127 127 Ket
131     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): 828
------------------------------------------------------------------
  0 823 Bra
  4     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
822     \b
823 823 Ket
827     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): 818
------------------------------------------------------------------
  0 813 Bra
  4     $<.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
812     \b
813 813 Ket
817     End
------------------------------------------------------------------

/(a(?1)b)/
Memory allocation (code space): 27
------------------------------------------------------------------
  0  22 Bra
  4  14 CBra 1
 10     a
 12   4 Recurse
 16     b
 18  14 Ket
 22  22 Ket
 26     End
------------------------------------------------------------------

/(a(?1)+b)/
Memory allocation (code space): 35
------------------------------------------------------------------
  0  30 Bra
  4  22 CBra 1
 10     a
 12   8 SBra
 16   4 Recurse
 20   8 KetRmax
 24     b
 26  22 Ket
 30  30 Ket
 34     End
------------------------------------------------------------------

/a(?P<name1>b|c)d(?P<longername2>e)/
Memory allocation (code space): 43
------------------------------------------------------------------
  0  38 Bra
  4     a
  6   8 CBra 1
 12     b
 14   6 Alt
 18     c
 20  14 Ket
 24     d
 26   8 CBra 2
 32     e
 34   8 Ket
 38  38 Ket
 42     End
------------------------------------------------------------------

/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/
Memory allocation (code space): 55
------------------------------------------------------------------
  0  50 Bra
  4  30 Bra
  8     a
 10  20 CBra 1
 16     c
 18   8 CBra 2
 24     d
 26   8 Ket
 30  20 Ket
 34  30 Ket
 38   8 CBra 3
 44     a
 46   8 Ket
 50  50 Ket
 54     End
------------------------------------------------------------------

/(?P<a>a)...(?P=a)bbb(?P>a)d/
Memory allocation (code space): 39
------------------------------------------------------------------
  0  34 Bra
  4   8 CBra 1
 10     a
 12   8 Ket
 16     Any
 17     Any
 18     Any
 19     \1
 22     bbb
 28   4 Recurse
 32     d
 34  34 Ket
 38     End
------------------------------------------------------------------

/abc(?C255)de(?C)f/
Memory allocation (code space): 37
------------------------------------------------------------------
  0  32 Bra
  4     abc
 10     Callout 255 10 1
 18     de
 22     Callout 0 16 1
 30     f
 32  32 Ket
 36     End
------------------------------------------------------------------

/abcde/auto_callout
Memory allocation (code space): 67
------------------------------------------------------------------
  0  62 Bra
  4     Callout 255 0 1
 12     a
 14     Callout 255 1 1
 22     b
 24     Callout 255 2 1
 32     c
 34     Callout 255 3 1
 42     d
 44     Callout 255 4 1
 52     e
 54     Callout 255 5 0
 62  62 Ket
 66     End
------------------------------------------------------------------

/\x{100}/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{100}
  7   7 Ket
 11     End
------------------------------------------------------------------

/\x{1000}/utf
Memory allocation (code space): 13
------------------------------------------------------------------
  0   8 Bra
  4     \x{1000}
  8   8 Ket
 12     End
------------------------------------------------------------------

/\x{10000}/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   9 Bra
  4     \x{10000}
  9   9 Ket
 13     End
------------------------------------------------------------------

/\x{100000}/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   9 Bra
  4     \x{100000}
  9   9 Ket
 13     End
------------------------------------------------------------------

/\x{10ffff}/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   9 Bra
  4     \x{10ffff}
  9   9 Ket
 13     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): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{ff}
  7   7 Ket
 11     End
------------------------------------------------------------------

/[\x{100}]/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{100}
  7   7 Ket
 11     End
------------------------------------------------------------------

/\x80/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{80}
  7   7 Ket
 11     End
------------------------------------------------------------------

/\xff/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{ff}
  7   7 Ket
 11     End
------------------------------------------------------------------

/\x{0041}\x{2262}\x{0391}\x{002e}/I,utf
Memory allocation (code space): 20
------------------------------------------------------------------
  0  15 Bra
  4     A\x{2262}\x{391}.
 15  15 Ket
 19     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): 21
------------------------------------------------------------------
  0  16 Bra
  4     \x{d55c}\x{ad6d}\x{c5b4}
 16  16 Ket
 20     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: utf
First code unit = \xed
Last code unit = \xb4
Subject length lower bound = 3

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

/[\x{100}]/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{100}
  7   7 Ket
 11     End
------------------------------------------------------------------

/[Z\x{100}]/utf
Memory allocation (code space): 50
------------------------------------------------------------------
  0  45 Bra
  4     [Z\x{100}]
 45  45 Ket
 49     End
------------------------------------------------------------------

/^[\x{100}\E-\Q\E\x{150}]/utf
Memory allocation (code space): 21
------------------------------------------------------------------
  0  16 Bra
  4     ^
  5     [\x{100}-\x{150}]
 16  16 Ket
 20     End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/utf
Memory allocation (code space): 21
------------------------------------------------------------------
  0  16 Bra
  4     ^
  5     [\x{100}-\x{150}]
 16  16 Ket
 20     End
------------------------------------------------------------------

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

/[\p{L}]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0  13 Bra
  4     [\p{L}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[\p{^L}]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0  13 Bra
  4     [\P{L}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[\P{L}]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0  13 Bra
  4     [\P{L}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[\P{^L}]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0  13 Bra
  4     [\p{L}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[abc\p{L}\x{0660}]/utf
Memory allocation (code space): 53
------------------------------------------------------------------
  0  48 Bra
  4     [a-c\p{L}\x{660}]
 48  48 Ket
 52     End
------------------------------------------------------------------

/[\p{Nd}]/utf
Memory allocation (code space): 18
------------------------------------------------------------------
  0  13 Bra
  4     [\p{Nd}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[\p{Nd}+-]+/utf
Memory allocation (code space): 51
------------------------------------------------------------------
  0  46 Bra
  4     [+\-\p{Nd}]++
 46  46 Ket
 50     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
Memory allocation (code space): 27
------------------------------------------------------------------
  0  22 Bra
  4  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 22  22 Ket
 26     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
Memory allocation (code space): 27
------------------------------------------------------------------
  0  22 Bra
  4     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 22  22 Ket
 26     End
------------------------------------------------------------------

/[\x{105}-\x{109}]/i,utf
Memory allocation (code space): 20
------------------------------------------------------------------
  0  15 Bra
  4     [\x{104}-\x{109}]
 15  15 Ket
 19     End
------------------------------------------------------------------

/( ( (?(1)0|) )*   )/x
Memory allocation (code space): 47
------------------------------------------------------------------
  0  42 Bra
  4  34 CBra 1
 10     Brazero
 11  23 SCBra 2
 17   9 Cond
 21   1 Cond ref
 24     0
 26   4 Alt
 30  13 Ket
 34  23 KetRmax
 38  34 Ket
 42  42 Ket
 46     End
------------------------------------------------------------------

/(  (?(1)0|)*   )/x
Memory allocation (code space): 37
------------------------------------------------------------------
  0  32 Bra
  4  24 CBra 1
 10     Brazero
 11   9 SCond
 15   1 Cond ref
 18     0
 20   4 Alt
 24  13 KetRmax
 28  24 Ket
 32  32 Ket
 36     End
------------------------------------------------------------------

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

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

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

/[\xaa]/utf
Memory allocation (code space): 12
------------------------------------------------------------------
  0   7 Bra
  4     \x{aa}
  7   7 Ket
 11     End
------------------------------------------------------------------

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

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

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

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

#pattern -memory

/[^\d]/utf,ucp
------------------------------------------------------------------
  0  13 Bra
  4     [^\p{Nd}]
 13  13 Ket
 17     End
------------------------------------------------------------------

/[[:^alpha:][:^cntrl:]]+/utf,ucp
------------------------------------------------------------------
  0  17 Bra
  4     [\P{L}\P{Cc}]++
 17  17 Ket
 21     End
------------------------------------------------------------------

/[[:^cntrl:][:^alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  17 Bra
  4     [\P{Cc}\P{L}]++
 17  17 Ket
 21     End
------------------------------------------------------------------

/[[:alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  14 Bra
  4     [\p{L}]++
 14  14 Ket
 18     End
------------------------------------------------------------------

/[[:^alpha:]\S]+/utf,ucp
------------------------------------------------------------------
  0  17 Bra
  4     [\P{L}\P{Xsp}]++
 17  17 Ket
 21     End
------------------------------------------------------------------

/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/
------------------------------------------------------------------
  0  83 Bra
  4     abc
 10   8 CBra 1
 16     d
 18   6 Alt
 22     e
 24  14 Ket
 28     *THEN
 29     x
 31  15 CBra 2
 37     123
 43     *THEN
 44     4
 46  33 Alt
 50     567
 56   8 CBra 3
 62     b
 64   6 Alt
 68     q
 70  14 Ket
 74     *THEN
 75     xx
 79  48 Ket
 83  83 Ket
 87     End
------------------------------------------------------------------

/(((a\2)|(a*)\g<-1>))*a?/
------------------------------------------------------------------
  0  70 Bra
  4     Brazero
  5  59 SCBra 1
 11  49 Once
 15  21 CBra 2
 21  11 CBra 3
 27     a
 29     \2
 32  11 Ket
 36  20 Alt
 40   8 CBra 4
 46     a*
 48   8 Ket
 52  40 Recurse
 56  41 Ket
 60  49 Ket
 64  59 KetRmax
 68     a?+
 70  70 Ket
 74     End
------------------------------------------------------------------

/((?+1)(\1))/
------------------------------------------------------------------
  0  39 Bra
  4  31 Once
  8  23 CBra 1
 14  18 Recurse
 18   9 CBra 2
 24     \1
 27   9 Ket
 31  23 Ket
 35  31 Ket
 39  39 Ket
 43     End
------------------------------------------------------------------

"(?1)(?#?'){2}(a)"
------------------------------------------------------------------
  0  24 Bra
  4  12 Recurse
  8  12 Recurse
 12   8 CBra 1
 18     a
 20   8 Ket
 24  24 Ket
 28     End
------------------------------------------------------------------

/.((?2)(?R)|\1|$)()/
------------------------------------------------------------------
  0  53 Bra
  4     Any
  5  34 Once
  9  14 CBra 1
 15  43 Recurse
 19   0 Recurse
 23   7 Alt
 27     \1
 30   5 Alt
 34     $
 35  26 Ket
 39  34 Ket
 43   6 CBra 2
 49   6 Ket
 53  53 Ket
 57     End
------------------------------------------------------------------

/.((?3)(?R)()(?2)|\1|$)()/
------------------------------------------------------------------
  0  67 Bra
  4     Any
  5  48 Once
  9  28 CBra 1
 15  57 Recurse
 19   0 Recurse
 23   6 CBra 2
 29   6 Ket
 33  23 Recurse
 37   7 Alt
 41     \1
 44   5 Alt
 48     $
 49  40 Ket
 53  48 Ket
 57   6 CBra 3
 63   6 Ket
 67  67 Ket
 71     End
------------------------------------------------------------------

/(?1)()((((((\1++))\x85)+)|))/
------------------------------------------------------------------
  0  96 Bra
  4   8 Recurse
  8   6 CBra 1
 14   6 Ket
 18  74 CBra 2
 24  60 CBra 3
 30  50 CBra 4
 36  40 CBra 5
 42  28 CBra 6
 48  18 CBra 7
 54   8 Once
 58     \1+
 62   8 Ket
 66  18 Ket
 70  28 Ket
 74     \x{85}
 76  40 KetRmax
 80  50 Ket
 84   4 Alt
 88  64 Ket
 92  74 Ket
 96  96 Ket
100     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 150 Bra
  4 132 Once
  8  11 Cond
 12   1 Cond ref
 15 140 Recurse
 19  11 Ket
 23  11 Cond
 27   1 Cond ref
 30 140 Recurse
 34  11 Ket
 38  11 Cond
 42   1 Cond ref
 45 140 Recurse
 49  11 Ket
 53  11 Cond
 57   1 Cond ref
 60 140 Recurse
 64  11 Ket
 68  11 Cond
 72   1 Cond ref
 75 140 Recurse
 79  11 Ket
 83  11 Cond
 87   1 Cond ref
 90 140 Recurse
 94  11 Ket
 98  11 Cond
102   1 Cond ref
105 140 Recurse
109  11 Ket
113  19 SBraPos
117  11 SCond
121   1 Cond ref
124 140 Recurse
128  11 Ket
132  19 KetRpos
136 132 Ket
140   6 CBra 1
146   6 Ket
150 150 Ket
154     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  76 Bra
  4  58 Once
  8   7 Cond
 12   1 Cond ref
 15  12 Alt
 19     a
 21  66 Recurse
 25     b
 27  19 Ket
 31  27 SBraPos
 35   7 SCond
 39   1 Cond ref
 42  12 Alt
 46     a
 48  66 Recurse
 52     b
 54  19 Ket
 58  27 KetRpos
 62  58 Ket
 66   6 CBra 1
 72   6 Ket
 76  76 Ket
 80     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 266 Bra
  4  82 CBra 1
 10   4 Recurse
 14 176 Recurse
 18 186 Recurse
 22 196 Recurse
 26 206 Recurse
 30 216 Recurse
 34 226 Recurse
 38 236 Recurse
 42 246 Recurse
 46 246 Recurse
 50 236 Recurse
 54 226 Recurse
 58 216 Recurse
 62 206 Recurse
 66 196 Recurse
 70 186 Recurse
 74 176 Recurse
 78   4 Recurse
 82   0 Recurse
 86  82 Ket
 90  82 SCBra 1
 96   4 Recurse
100 176 Recurse
104 186 Recurse
108 196 Recurse
112 206 Recurse
116 216 Recurse
120 226 Recurse
124 236 Recurse
128 246 Recurse
132 246 Recurse
136 236 Recurse
140 226 Recurse
144 216 Recurse
148 206 Recurse
152 196 Recurse
156 186 Recurse
160 176 Recurse
164   4 Recurse
168   0 Recurse
172  82 KetRmax
176   6 CBra 2
182   6 Ket
186   6 CBra 3
192   6 Ket
196   6 CBra 4
202   6 Ket
206   6 CBra 5
212   6 Ket
216   6 CBra 6
222   6 Ket
226   6 CBra 7
232   6 Ket
236   6 CBra 8
242   6 Ket
246   6 CBra 9
252   6 Ket
256   6 CBra 10
262   6 Ket
266 266 Ket
270     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