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): 25
------------------------------------------------------------------
  0  19 Bra
  5   9 CBra 1
 12  /i b
 14   9 Ket
 19  19 Ket
 24     End
------------------------------------------------------------------

/(?s)(.*X|^B)/
Memory allocation (code space): 35
------------------------------------------------------------------
  0  29 Bra
  5  11 CBra 1
 12     AllAny*
 14     X
 16   8 Alt
 21     ^
 22     B
 24  19 Ket
 29  29 Ket
 34     End
------------------------------------------------------------------

/(?s:.*X|^B)/
Memory allocation (code space): 33
------------------------------------------------------------------
  0  27 Bra
  5   9 Bra
 10     AllAny*
 12     X
 14   8 Alt
 19     ^
 20     B
 22  17 Ket
 27  27 Ket
 32     End
------------------------------------------------------------------

/^[[:alnum:]]/
Memory allocation (code space): 45
------------------------------------------------------------------
  0  39 Bra
  5     ^
  6     [0-9A-Za-z]
 39  39 Ket
 44     End
------------------------------------------------------------------

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

/a#/Ix
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     a
  7   7 Ket
 12     End
------------------------------------------------------------------
Capturing subpattern count = 0
Options: extended
First code unit = 'a'
Subject length lower bound = 1

/x?+/
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     x?+
  7   7 Ket
 12     End
------------------------------------------------------------------

/x++/
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     x++
  7   7 Ket
 12     End
------------------------------------------------------------------

/x{1,3}+/
Memory allocation (code space): 17
------------------------------------------------------------------
  0  11 Bra
  5     x
  7     x{0,2}+
 11  11 Ket
 16     End
------------------------------------------------------------------

/(x)*+/
Memory allocation (code space): 26
------------------------------------------------------------------
  0  20 Bra
  5     Braposzero
  6   9 CBraPos 1
 13     x
 15   9 KetRpos
 20  20 Ket
 25     End
------------------------------------------------------------------

/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
Memory allocation (code space): 144
------------------------------------------------------------------
  0 138 Bra
  5     ^
  6 127 CBra 1
 13   9 CBra 2
 20     a+
 22   9 Ket
 27  41 CBra 3
 34     [ab]+?
 68  41 Ket
 73  41 CBra 4
 80     [bc]+
114  41 Ket
119   9 CBra 5
126     \w*+
128   9 Ket
133 127 Ket
138 138 Ket
143     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): 830
------------------------------------------------------------------
  0 824 Bra
  5     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
823     \b
824 824 Ket
829     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): 820
------------------------------------------------------------------
  0 814 Bra
  5     $<.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
813     \b
814 814 Ket
819     End
------------------------------------------------------------------

/(a(?1)b)/
Memory allocation (code space): 32
------------------------------------------------------------------
  0  26 Bra
  5  16 CBra 1
 12     a
 14   5 Recurse
 19     b
 21  16 Ket
 26  26 Ket
 31     End
------------------------------------------------------------------

/(a(?1)+b)/
Memory allocation (code space): 42
------------------------------------------------------------------
  0  36 Bra
  5  26 CBra 1
 12     a
 14  10 SBra
 19   5 Recurse
 24  10 KetRmax
 29     b
 31  26 Ket
 36  36 Ket
 41     End
------------------------------------------------------------------

/a(?P<name1>b|c)d(?P<longername2>e)/
Memory allocation (code space): 50
------------------------------------------------------------------
  0  44 Bra
  5     a
  7   9 CBra 1
 14     b
 16   7 Alt
 21     c
 23  16 Ket
 28     d
 30   9 CBra 2
 37     e
 39   9 Ket
 44  44 Ket
 49     End
------------------------------------------------------------------

/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/
Memory allocation (code space): 65
------------------------------------------------------------------
  0  59 Bra
  5  35 Bra
 10     a
 12  23 CBra 1
 19     c
 21   9 CBra 2
 28     d
 30   9 Ket
 35  23 Ket
 40  35 Ket
 45   9 CBra 3
 52     a
 54   9 Ket
 59  59 Ket
 64     End
------------------------------------------------------------------

/(?P<a>a)...(?P=a)bbb(?P>a)d/
Memory allocation (code space): 44
------------------------------------------------------------------
  0  38 Bra
  5   9 CBra 1
 12     a
 14   9 Ket
 19     Any
 20     Any
 21     Any
 22     \1
 25     bbb
 31   5 Recurse
 36     d
 38  38 Ket
 43     End
------------------------------------------------------------------

/abc(?C255)de(?C)f/
Memory allocation (code space): 43
------------------------------------------------------------------
  0  37 Bra
  5     abc
 11     Callout 255 10 1
 21     de
 25     Callout 0 16 1
 35     f
 37  37 Ket
 42     End
------------------------------------------------------------------

/abcde/auto_callout
Memory allocation (code space): 81
------------------------------------------------------------------
  0  75 Bra
  5     Callout 255 0 1
 15     a
 17     Callout 255 1 1
 27     b
 29     Callout 255 2 1
 39     c
 41     Callout 255 3 1
 51     d
 53     Callout 255 4 1
 63     e
 65     Callout 255 5 0
 75  75 Ket
 80     End
------------------------------------------------------------------

/\x{100}/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{100}
  8   8 Ket
 13     End
------------------------------------------------------------------

/\x{1000}/utf
Memory allocation (code space): 15
------------------------------------------------------------------
  0   9 Bra
  5     \x{1000}
  9   9 Ket
 14     End
------------------------------------------------------------------

/\x{10000}/utf
Memory allocation (code space): 16
------------------------------------------------------------------
  0  10 Bra
  5     \x{10000}
 10  10 Ket
 15     End
------------------------------------------------------------------

/\x{100000}/utf
Memory allocation (code space): 16
------------------------------------------------------------------
  0  10 Bra
  5     \x{100000}
 10  10 Ket
 15     End
------------------------------------------------------------------

/\x{10ffff}/utf
Memory allocation (code space): 16
------------------------------------------------------------------
  0  10 Bra
  5     \x{10ffff}
 10  10 Ket
 15     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): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{ff}
  8   8 Ket
 13     End
------------------------------------------------------------------

/[\x{100}]/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{100}
  8   8 Ket
 13     End
------------------------------------------------------------------

/\x80/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{80}
  8   8 Ket
 13     End
------------------------------------------------------------------

/\xff/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{ff}
  8   8 Ket
 13     End
------------------------------------------------------------------

/\x{0041}\x{2262}\x{0391}\x{002e}/I,utf
Memory allocation (code space): 22
------------------------------------------------------------------
  0  16 Bra
  5     A\x{2262}\x{391}.
 16  16 Ket
 21     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): 23
------------------------------------------------------------------
  0  17 Bra
  5     \x{d55c}\x{ad6d}\x{c5b4}
 17  17 Ket
 22     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): 23
------------------------------------------------------------------
  0  17 Bra
  5     \x{65e5}\x{672c}\x{8a9e}
 17  17 Ket
 22     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): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{100}
  8   8 Ket
 13     End
------------------------------------------------------------------

/[Z\x{100}]/utf
Memory allocation (code space): 53
------------------------------------------------------------------
  0  47 Bra
  5     [Z\x{100}]
 47  47 Ket
 52     End
------------------------------------------------------------------

/^[\x{100}\E-\Q\E\x{150}]/utf
Memory allocation (code space): 24
------------------------------------------------------------------
  0  18 Bra
  5     ^
  6     [\x{100}-\x{150}]
 18  18 Ket
 23     End
------------------------------------------------------------------

/^[\QĀ\E-\QŐ\E]/utf
Memory allocation (code space): 24
------------------------------------------------------------------
  0  18 Bra
  5     ^
  6     [\x{100}-\x{150}]
 18  18 Ket
 23     End
------------------------------------------------------------------

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

/[\p{L}]/
Memory allocation (code space): 21
------------------------------------------------------------------
  0  15 Bra
  5     [\p{L}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[\p{^L}]/
Memory allocation (code space): 21
------------------------------------------------------------------
  0  15 Bra
  5     [\P{L}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[\P{L}]/
Memory allocation (code space): 21
------------------------------------------------------------------
  0  15 Bra
  5     [\P{L}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[\P{^L}]/
Memory allocation (code space): 21
------------------------------------------------------------------
  0  15 Bra
  5     [\p{L}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[abc\p{L}\x{0660}]/utf
Memory allocation (code space): 56
------------------------------------------------------------------
  0  50 Bra
  5     [a-c\p{L}\x{660}]
 50  50 Ket
 55     End
------------------------------------------------------------------

/[\p{Nd}]/utf
Memory allocation (code space): 21
------------------------------------------------------------------
  0  15 Bra
  5     [\p{Nd}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[\p{Nd}+-]+/utf
Memory allocation (code space): 54
------------------------------------------------------------------
  0  48 Bra
  5     [+\-\p{Nd}]++
 48  48 Ket
 53     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
Memory allocation (code space): 29
------------------------------------------------------------------
  0  23 Bra
  5  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 23  23 Ket
 28     End
------------------------------------------------------------------

/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
Memory allocation (code space): 29
------------------------------------------------------------------
  0  23 Bra
  5     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
 23  23 Ket
 28     End
------------------------------------------------------------------

/[\x{105}-\x{109}]/i,utf
Memory allocation (code space): 23
------------------------------------------------------------------
  0  17 Bra
  5     [\x{104}-\x{109}]
 17  17 Ket
 22     End
------------------------------------------------------------------

/( ( (?(1)0|) )*   )/x
Memory allocation (code space): 56
------------------------------------------------------------------
  0  50 Bra
  5  40 CBra 1
 12     Brazero
 13  27 SCBra 2
 20  10 Cond
 25   1 Cond ref
 28     0
 30   5 Alt
 35  15 Ket
 40  27 KetRmax
 45  40 Ket
 50  50 Ket
 55     End
------------------------------------------------------------------

/(  (?(1)0|)*   )/x
Memory allocation (code space): 44
------------------------------------------------------------------
  0  38 Bra
  5  28 CBra 1
 12     Brazero
 13  10 SCond
 18   1 Cond ref
 21     0
 23   5 Alt
 28  15 KetRmax
 33  28 Ket
 38  38 Ket
 43     End
------------------------------------------------------------------

/[a]/
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     a
  7   7 Ket
 12     End
------------------------------------------------------------------

/[a]/utf
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     a
  7   7 Ket
 12     End
------------------------------------------------------------------

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

/[\xaa]/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     \x{aa}
  8   8 Ket
 13     End
------------------------------------------------------------------

/[^a]/
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     [^a]
  7   7 Ket
 12     End
------------------------------------------------------------------

/[^a]/utf
Memory allocation (code space): 13
------------------------------------------------------------------
  0   7 Bra
  5     [^a]
  7   7 Ket
 12     End
------------------------------------------------------------------

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

/[^\xaa]/utf
Memory allocation (code space): 14
------------------------------------------------------------------
  0   8 Bra
  5     [^\x{aa}]
  8   8 Ket
 13     End
------------------------------------------------------------------

#pattern -memory

/[^\d]/utf,ucp
------------------------------------------------------------------
  0  15 Bra
  5     [^\p{Nd}]
 15  15 Ket
 20     End
------------------------------------------------------------------

/[[:^alpha:][:^cntrl:]]+/utf,ucp
------------------------------------------------------------------
  0  19 Bra
  5     [\P{L}\P{Cc}]++
 19  19 Ket
 24     End
------------------------------------------------------------------

/[[:^cntrl:][:^alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  19 Bra
  5     [\P{Cc}\P{L}]++
 19  19 Ket
 24     End
------------------------------------------------------------------

/[[:alpha:]]+/utf,ucp
------------------------------------------------------------------
  0  16 Bra
  5     [\p{L}]++
 16  16 Ket
 21     End
------------------------------------------------------------------

/[[:^alpha:]\S]+/utf,ucp
------------------------------------------------------------------
  0  19 Bra
  5     [\P{L}\P{Xsp}]++
 19  19 Ket
 24     End
------------------------------------------------------------------

/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/
------------------------------------------------------------------
  0  93 Bra
  5     abc
 11   9 CBra 1
 18     d
 20   7 Alt
 25     e
 27  16 Ket
 32     *THEN
 33     x
 35  16 CBra 2
 42     123
 48     *THEN
 49     4
 51  37 Alt
 56     567
 62   9 CBra 3
 69     b
 71   7 Alt
 76     q
 78  16 Ket
 83     *THEN
 84     xx
 88  53 Ket
 93  93 Ket
 98     End
------------------------------------------------------------------

/(((a\2)|(a*)\g<-1>))*a?/
------------------------------------------------------------------
  0  83 Bra
  5     Brazero
  6  70 SCBra 1
 13  58 Once
 18  24 CBra 2
 25  12 CBra 3
 32     a
 34     \2
 37  12 Ket
 42  24 Alt
 47   9 CBra 4
 54     a*
 56   9 Ket
 61  47 Recurse
 66  48 Ket
 71  58 Ket
 76  70 KetRmax
 81     a?+
 83  83 Ket
 88     End
------------------------------------------------------------------

/((?+1)(\1))/
------------------------------------------------------------------
  0  47 Bra
  5  37 Once
 10  27 CBra 1
 17  22 Recurse
 22  10 CBra 2
 29     \1
 32  10 Ket
 37  27 Ket
 42  37 Ket
 47  47 Ket
 52     End
------------------------------------------------------------------

"(?1)(?#?'){2}(a)"
------------------------------------------------------------------
  0  29 Bra
  5  15 Recurse
 10  15 Recurse
 15   9 CBra 1
 22     a
 24   9 Ket
 29  29 Ket
 34     End
------------------------------------------------------------------

/.((?2)(?R)|\1|$)()/
------------------------------------------------------------------
  0  64 Bra
  5     Any
  6  41 Once
 11  17 CBra 1
 18  52 Recurse
 23   0 Recurse
 28   8 Alt
 33     \1
 36   6 Alt
 41     $
 42  31 Ket
 47  41 Ket
 52   7 CBra 2
 59   7 Ket
 64  64 Ket
 69     End
------------------------------------------------------------------

/.((?3)(?R)()(?2)|\1|$)()/
------------------------------------------------------------------
  0  81 Bra
  5     Any
  6  58 Once
 11  34 CBra 1
 18  69 Recurse
 23   0 Recurse
 28   7 CBra 2
 35   7 Ket
 40  28 Recurse
 45   8 Alt
 50     \1
 53   6 Alt
 58     $
 59  48 Ket
 64  58 Ket
 69   7 CBra 3
 76   7 Ket
 81  81 Ket
 86     End
------------------------------------------------------------------

/(?1)()((((((\1++))\x85)+)|))/
------------------------------------------------------------------
  0 115 Bra
  5  10 Recurse
 10   7 CBra 1
 17   7 Ket
 22  88 CBra 2
 29  71 CBra 3
 36  59 CBra 4
 43  47 CBra 5
 50  33 CBra 6
 57  21 CBra 7
 64   9 Once
 69     \1+
 73   9 Ket
 78  21 Ket
 83  33 Ket
 88     \x{85}
 90  47 KetRmax
 95  59 Ket
100   5 Alt
105  76 Ket
110  88 Ket
115 115 Ket
120     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 181 Bra
  5 159 Once
 10  13 Cond
 15   1 Cond ref
 18 169 Recurse
 23  13 Ket
 28  13 Cond
 33   1 Cond ref
 36 169 Recurse
 41  13 Ket
 46  13 Cond
 51   1 Cond ref
 54 169 Recurse
 59  13 Ket
 64  13 Cond
 69   1 Cond ref
 72 169 Recurse
 77  13 Ket
 82  13 Cond
 87   1 Cond ref
 90 169 Recurse
 95  13 Ket
100  13 Cond
105   1 Cond ref
108 169 Recurse
113  13 Ket
118  13 Cond
123   1 Cond ref
126 169 Recurse
131  13 Ket
136  23 SBraPos
141  13 SCond
146   1 Cond ref
149 169 Recurse
154  13 Ket
159  23 KetRpos
164 159 Ket
169   7 CBra 1
176   7 Ket
181 181 Ket
186     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  91 Bra
  5  69 Once
 10   8 Cond
 15   1 Cond ref
 18  14 Alt
 23     a
 25  79 Recurse
 30     b
 32  22 Ket
 37  32 SBraPos
 42   8 SCond
 47   1 Cond ref
 50  14 Alt
 55     a
 57  79 Recurse
 62     b
 64  22 Ket
 69  32 KetRpos
 74  69 Ket
 79   7 CBra 1
 86   7 Ket
 91  91 Ket
 96     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 327 Bra
  5 102 CBra 1
 12   5 Recurse
 17 219 Recurse
 22 231 Recurse
 27 243 Recurse
 32 255 Recurse
 37 267 Recurse
 42 279 Recurse
 47 291 Recurse
 52 303 Recurse
 57 303 Recurse
 62 291 Recurse
 67 279 Recurse
 72 267 Recurse
 77 255 Recurse
 82 243 Recurse
 87 231 Recurse
 92 219 Recurse
 97   5 Recurse
102   0 Recurse
107 102 Ket
112 102 SCBra 1
119   5 Recurse
124 219 Recurse
129 231 Recurse
134 243 Recurse
139 255 Recurse
144 267 Recurse
149 279 Recurse
154 291 Recurse
159 303 Recurse
164 303 Recurse
169 291 Recurse
174 279 Recurse
179 267 Recurse
184 255 Recurse
189 243 Recurse
194 231 Recurse
199 219 Recurse
204   5 Recurse
209   0 Recurse
214 102 KetRmax
219   7 CBra 2
226   7 Ket
231   7 CBra 3
238   7 Ket
243   7 CBra 4
250   7 Ket
255   7 CBra 5
262   7 Ket
267   7 CBra 6
274   7 Ket
279   7 CBra 7
286   7 Ket
291   7 CBra 8
298   7 Ket
303   7 CBra 9
310   7 Ket
315   7 CBra 10
322   7 Ket
327 327 Ket
332     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