blob: 31884e14a68a0cd72caae1b76a2affa81a29554d [file] [log] [blame]
# 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 Once
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 30 Bra
3 6 Once
6 21 Recurse
9 6 Ket
12 6 Once
15 21 Recurse
18 6 Ket
21 6 CBra 1
25 a
27 6 Ket
30 30 Ket
33 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 with it fails in two modes, the error offset differs. It also varies
# with link size - hence multiple tests with different values.
/(?'ABC'\[[bar](]{105}*THEN:\[A]{255}\[)]{106}/expand,-fullbincode
/(?'ABC'\[[bar](]{106}*THEN:\[A]{255}\[)]{107}/expand,-fullbincode
/(?'ABC'\[[bar](]{159}*THEN:\[A]{255}\[)]{160}/expand,-fullbincode
/(?'ABC'\[[bar](]{199}*THEN:\[A]{255}\[)]{200}/expand,-fullbincode
Failed: error 186 at offset 1147: regular expression is too complicated
/(?'ABC'\[[bar](]{299}*THEN:\[A]{255}\[)]{300}/expand,-fullbincode
Failed: error 186 at offset 1147: 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
# End of testinput8