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): 32
------------------------------------------------------------------
  0  12 Bra
  3   6 CBra 1
  7  /i b
  9   6 Ket
 12  12 Ket
 15     End
------------------------------------------------------------------

/(?s)(.*X|^B)/
Memory allocation (code space): 48
------------------------------------------------------------------
  0  20 Bra
  3   8 CBra 1
  7     AllAny*
  9     X
 11   6 Alt
 14     ^
 15     B
 17  14 Ket
 20  20 Ket
 23     End
------------------------------------------------------------------

/(?s:.*X|^B)/
Memory allocation (code space): 46
------------------------------------------------------------------
  0  19 Bra
  3   7 Bra
  6     AllAny*
  8     X
 10   6 Alt
 13     ^
 14     B
 16  13 Ket
 19  19 Ket
 22     End
------------------------------------------------------------------

/^[[:alnum:]]/
Memory allocation (code space): 50
------------------------------------------------------------------
  0  21 Bra
  3     ^
  4     [0-9A-Za-z]
 21  21 Ket
 24     End
------------------------------------------------------------------

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

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

/x?+/
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     x?+
  5   5 Ket
  8     End
------------------------------------------------------------------

/x++/
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     x++
  5   5 Ket
  8     End
------------------------------------------------------------------

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

/(x)*+/
Memory allocation (code space): 34
------------------------------------------------------------------
  0  13 Bra
  3     Braposzero
  4   6 CBraPos 1
  8     x
 10   6 KetRpos
 13  13 Ket
 16     End
------------------------------------------------------------------

/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
Memory allocation (code space): 166
------------------------------------------------------------------
  0  79 Bra
  3     ^
  4  72 CBra 1
  8   6 CBra 2
 12     a+
 14   6 Ket
 17  22 CBra 3
 21     [ab]+?
 39  22 Ket
 42  22 CBra 4
 46     [bc]+
 64  22 Ket
 67   6 CBra 5
 71     \w*+
 73   6 Ket
 76  72 Ket
 79  79 Ket
 82     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): 1652
------------------------------------------------------------------
  0 822 Bra
  3     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
821     \b
822 822 Ket
825     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): 1632
------------------------------------------------------------------
  0 812 Bra
  3     $<.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
811     \b
812 812 Ket
815     End
------------------------------------------------------------------

/(a(?1)b)/
Memory allocation (code space): 42
------------------------------------------------------------------
  0  17 Bra
  3  11 CBra 1
  7     a
  9   3 Recurse
 12     b
 14  11 Ket
 17  17 Ket
 20     End
------------------------------------------------------------------

/(a(?1)+b)/
Memory allocation (code space): 54
------------------------------------------------------------------
  0  23 Bra
  3  17 CBra 1
  7     a
  9   6 SBra
 12   3 Recurse
 15   6 KetRmax
 18     b
 20  17 Ket
 23  23 Ket
 26     End
------------------------------------------------------------------

/a(?P<name1>b|c)d(?P<longername2>e)/
Memory allocation (code space): 68
------------------------------------------------------------------
  0  30 Bra
  3     a
  5   6 CBra 1
  9     b
 11   5 Alt
 14     c
 16  11 Ket
 19     d
 21   6 CBra 2
 25     e
 27   6 Ket
 30  30 Ket
 33     End
------------------------------------------------------------------

/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/
Memory allocation (code space): 84
------------------------------------------------------------------
  0  38 Bra
  3  23 Bra
  6     a
  8  15 CBra 1
 12     c
 14   6 CBra 2
 18     d
 20   6 Ket
 23  15 Ket
 26  23 Ket
 29   6 CBra 3
 33     a
 35   6 Ket
 38  38 Ket
 41     End
------------------------------------------------------------------

/(?P<a>a)...(?P=a)bbb(?P>a)d/
Memory allocation (code space): 64
------------------------------------------------------------------
  0  28 Bra
  3   6 CBra 1
  7     a
  9   6 Ket
 12     Any
 13     Any
 14     Any
 15     \1
 17     bbb
 23   3 Recurse
 26     d
 28  28 Ket
 31     End
------------------------------------------------------------------

/abc(?C255)de(?C)f/
Memory allocation (code space): 62
------------------------------------------------------------------
  0  27 Bra
  3     abc
  9     Callout 255 10 1
 15     de
 19     Callout 0 16 1
 25     f
 27  27 Ket
 30     End
------------------------------------------------------------------

/abcde/auto_callout
Memory allocation (code space): 106
------------------------------------------------------------------
  0  49 Bra
  3     Callout 255 0 1
  9     a
 11     Callout 255 1 1
 17     b
 19     Callout 255 2 1
 25     c
 27     Callout 255 3 1
 33     d
 35     Callout 255 4 1
 41     e
 43     Callout 255 5 0
 49  49 Ket
 52     End
------------------------------------------------------------------

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

/\x{1000}/utf
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     \x{1000}
  5   5 Ket
  8     End
------------------------------------------------------------------

/\x{10000}/utf
Memory allocation (code space): 20
------------------------------------------------------------------
  0   6 Bra
  3     \x{10000}
  6   6 Ket
  9     End
------------------------------------------------------------------

/\x{100000}/utf
Memory allocation (code space): 20
------------------------------------------------------------------
  0   6 Bra
  3     \x{100000}
  6   6 Ket
  9     End
------------------------------------------------------------------

/\x{10ffff}/utf
Memory allocation (code space): 20
------------------------------------------------------------------
  0   6 Bra
  3     \x{10ffff}
  6   6 Ket
  9     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): 18
------------------------------------------------------------------
  0   5 Bra
  3     \x{ff}
  5   5 Ket
  8     End
------------------------------------------------------------------

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

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

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

/\x{0041}\x{2262}\x{0391}\x{002e}/I,utf
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     A\x{2262}\x{391}.
 11  11 Ket
 14     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): 26
------------------------------------------------------------------
  0   9 Bra
  3     \x{d55c}\x{ad6d}\x{c5b4}
  9   9 Ket
 12     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): 26
------------------------------------------------------------------
  0   9 Bra
  3     \x{65e5}\x{672c}\x{8a9e}
  9   9 Ket
 12     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): 18
------------------------------------------------------------------
  0   5 Bra
  3     \x{100}
  5   5 Ket
  8     End
------------------------------------------------------------------

/[Z\x{100}]/utf
Memory allocation (code space): 60
------------------------------------------------------------------
  0  26 Bra
  3     [Z\x{100}]
 26  26 Ket
 29     End
------------------------------------------------------------------

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

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

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

/[\p{L}]/
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     [\p{L}]
 11  11 Ket
 14     End
------------------------------------------------------------------

/[\p{^L}]/
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     [\P{L}]
 11  11 Ket
 14     End
------------------------------------------------------------------

/[\P{L}]/
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     [\P{L}]
 11  11 Ket
 14     End
------------------------------------------------------------------

/[\P{^L}]/
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     [\p{L}]
 11  11 Ket
 14     End
------------------------------------------------------------------

/[abc\p{L}\x{0660}]/utf
Memory allocation (code space): 66
------------------------------------------------------------------
  0  29 Bra
  3     [a-c\p{L}\x{660}]
 29  29 Ket
 32     End
------------------------------------------------------------------

/[\p{Nd}]/utf
Memory allocation (code space): 30
------------------------------------------------------------------
  0  11 Bra
  3     [\p{Nd}]
 11  11 Ket
 14     End
------------------------------------------------------------------

/[\p{Nd}+-]+/utf
Memory allocation (code space): 64
------------------------------------------------------------------
  0  28 Bra
  3     [+\-\p{Nd}]++
 28  28 Ket
 31     End
------------------------------------------------------------------

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

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

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

/( ( (?(1)0|) )*   )/x
Memory allocation (code space): 70
------------------------------------------------------------------
  0  31 Bra
  3  25 CBra 1
  7     Brazero
  8  17 SCBra 2
 12   7 Cond
 15   1 Cond ref
 17     0
 19   3 Alt
 22  10 Ket
 25  17 KetRmax
 28  25 Ket
 31  31 Ket
 34     End
------------------------------------------------------------------

/(  (?(1)0|)*   )/x
Memory allocation (code space): 56
------------------------------------------------------------------
  0  24 Bra
  3  18 CBra 1
  7     Brazero
  8   7 SCond
 11   1 Cond ref
 13     0
 15   3 Alt
 18  10 KetRmax
 21  18 Ket
 24  24 Ket
 27     End
------------------------------------------------------------------

/[a]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     a
  5   5 Ket
  8     End
------------------------------------------------------------------

/[a]/utf
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     a
  5   5 Ket
  8     End
------------------------------------------------------------------

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

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

/[^a]/
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     [^a]
  5   5 Ket
  8     End
------------------------------------------------------------------

/[^a]/utf
Memory allocation (code space): 18
------------------------------------------------------------------
  0   5 Bra
  3     [^a]
  5   5 Ket
  8     End
------------------------------------------------------------------

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

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

#pattern -memory

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

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

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

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

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

/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/
------------------------------------------------------------------
  0  70 Bra
  3     abc
  9   6 CBra 1
 13     d
 15   5 Alt
 18     e
 20  11 Ket
 23     *THEN
 24     x
 26  13 CBra 2
 30     123
 36     *THEN
 37     4
 39  28 Alt
 42     567
 48   6 CBra 3
 52     b
 54   5 Alt
 57     q
 59  11 Ket
 62     *THEN
 63     xx
 67  41 Ket
 70  70 Ket
 73     End
------------------------------------------------------------------

/(((a\2)|(a*)\g<-1>))*a?/
------------------------------------------------------------------
  0  52 Bra
  3     Brazero
  4  43 SCBra 1
  8  36 Once
 11  15 CBra 2
 15   8 CBra 3
 19     a
 21     \2
 23   8 Ket
 26  15 Alt
 29   6 CBra 4
 33     a*
 35   6 Ket
 38  29 Recurse
 41  30 Ket
 44  36 Ket
 47  43 KetRmax
 50     a?+
 52  52 Ket
 55     End
------------------------------------------------------------------

/((?+1)(\1))/
------------------------------------------------------------------
  0  28 Bra
  3  22 Once
  6  16 CBra 1
 10  13 Recurse
 13   6 CBra 2
 17     \1
 19   6 Ket
 22  16 Ket
 25  22 Ket
 28  28 Ket
 31     End
------------------------------------------------------------------

"(?1)(?#?'){2}(a)"
------------------------------------------------------------------
  0  18 Bra
  3   9 Recurse
  6   9 Recurse
  9   6 CBra 1
 13     a
 15   6 Ket
 18  18 Ket
 21     End
------------------------------------------------------------------

/.((?2)(?R)|\1|$)()/
------------------------------------------------------------------
  0  39 Bra
  3     Any
  4  25 Once
  7  10 CBra 1
 11  32 Recurse
 14   0 Recurse
 17   5 Alt
 20     \1
 22   4 Alt
 25     $
 26  19 Ket
 29  25 Ket
 32   4 CBra 2
 36   4 Ket
 39  39 Ket
 42     End
------------------------------------------------------------------

/.((?3)(?R)()(?2)|\1|$)()/
------------------------------------------------------------------
  0  49 Bra
  3     Any
  4  35 Once
  7  20 CBra 1
 11  42 Recurse
 14   0 Recurse
 17   4 CBra 2
 21   4 Ket
 24  17 Recurse
 27   5 Alt
 30     \1
 32   4 Alt
 35     $
 36  29 Ket
 39  35 Ket
 42   4 CBra 3
 46   4 Ket
 49  49 Ket
 52     End
------------------------------------------------------------------

/(?1)()((((((\1++))\x85)+)|))/
------------------------------------------------------------------
  0  69 Bra
  3   6 Recurse
  6   4 CBra 1
 10   4 Ket
 13  53 CBra 2
 17  43 CBra 3
 21  36 CBra 4
 25  29 CBra 5
 29  20 CBra 6
 33  13 CBra 7
 37   6 Once
 40     \1+
 43   6 Ket
 46  13 Ket
 49  20 Ket
 52     \x{85}
 54  29 KetRmax
 57  36 Ket
 60   3 Alt
 63  46 Ket
 66  53 Ket
 69  69 Ket
 72     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 110 Bra
  3  97 Once
  6   8 Cond
  9   1 Cond ref
 11 103 Recurse
 14   8 Ket
 17   8 Cond
 20   1 Cond ref
 22 103 Recurse
 25   8 Ket
 28   8 Cond
 31   1 Cond ref
 33 103 Recurse
 36   8 Ket
 39   8 Cond
 42   1 Cond ref
 44 103 Recurse
 47   8 Ket
 50   8 Cond
 53   1 Cond ref
 55 103 Recurse
 58   8 Ket
 61   8 Cond
 64   1 Cond ref
 66 103 Recurse
 69   8 Ket
 72   8 Cond
 75   1 Cond ref
 77 103 Recurse
 80   8 Ket
 83  14 SBraPos
 86   8 SCond
 89   1 Cond ref
 91 103 Recurse
 94   8 Ket
 97  14 KetRpos
100  97 Ket
103   4 CBra 1
107   4 Ket
110 110 Ket
113     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  58 Bra
  3  45 Once
  6   5 Cond
  9   1 Cond ref
 11  10 Alt
 14     a
 16  51 Recurse
 19     b
 21  15 Ket
 24  21 SBraPos
 27   5 SCond
 30   1 Cond ref
 32  10 Alt
 35     a
 37  51 Recurse
 40     b
 42  15 Ket
 45  21 KetRpos
 48  45 Ket
 51   4 CBra 1
 55   4 Ket
 58  58 Ket
 61     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 194 Bra
  3  61 CBra 1
  7   3 Recurse
 10 131 Recurse
 13 138 Recurse
 16 145 Recurse
 19 152 Recurse
 22 159 Recurse
 25 166 Recurse
 28 173 Recurse
 31 180 Recurse
 34 180 Recurse
 37 173 Recurse
 40 166 Recurse
 43 159 Recurse
 46 152 Recurse
 49 145 Recurse
 52 138 Recurse
 55 131 Recurse
 58   3 Recurse
 61   0 Recurse
 64  61 Ket
 67  61 SCBra 1
 71   3 Recurse
 74 131 Recurse
 77 138 Recurse
 80 145 Recurse
 83 152 Recurse
 86 159 Recurse
 89 166 Recurse
 92 173 Recurse
 95 180 Recurse
 98 180 Recurse
101 173 Recurse
104 166 Recurse
107 159 Recurse
110 152 Recurse
113 145 Recurse
116 138 Recurse
119 131 Recurse
122   3 Recurse
125   0 Recurse
128  61 KetRmax
131   4 CBra 2
135   4 Ket
138   4 CBra 3
142   4 Ket
145   4 CBra 4
149   4 Ket
152   4 CBra 5
156   4 Ket
159   4 CBra 6
163   4 Ket
166   4 CBra 7
170   4 Ket
173   4 CBra 8
177   4 Ket
180   4 CBra 9
184   4 Ket
187   4 CBra 10
191   4 Ket
194 194 Ket
197     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