1# There are two sorts of patterns in this test. A number of them are
2# representative patterns whose lengths and offsets are checked. This is just a
3# doublecheck test to ensure the sizes don't go horribly wrong when something
4# is changed. The operation of these patterns is checked in other tests.
5#
6# This file also contains tests whose output varies with code unit size and/or
7# link size. Unicode support is required for these tests. There are separate
8# output files for each code unit size and link size.
9
10#pattern fullbincode,memory
11
12/((?i)b)/
13Memory allocation (code space): 17
14------------------------------------------------------------------
15  0  13 Bra
16  3   7 CBra 1
17  8  /i b
18 10   7 Ket
19 13  13 Ket
20 16     End
21------------------------------------------------------------------
22
23/(?s)(.*X|^B)/
24Memory allocation (code space): 25
25------------------------------------------------------------------
26  0  21 Bra
27  3   9 CBra 1
28  8     AllAny*
29 10     X
30 12   6 Alt
31 15     ^
32 16     B
33 18  15 Ket
34 21  21 Ket
35 24     End
36------------------------------------------------------------------
37
38/(?s:.*X|^B)/
39Memory allocation (code space): 23
40------------------------------------------------------------------
41  0  19 Bra
42  3   7 Bra
43  6     AllAny*
44  8     X
45 10   6 Alt
46 13     ^
47 14     B
48 16  13 Ket
49 19  19 Ket
50 22     End
51------------------------------------------------------------------
52
53/^[[:alnum:]]/
54Memory allocation (code space): 41
55------------------------------------------------------------------
56  0  37 Bra
57  3     ^
58  4     [0-9A-Za-z]
59 37  37 Ket
60 40     End
61------------------------------------------------------------------
62
63/#/Ix
64Memory allocation (code space): 7
65------------------------------------------------------------------
66  0   3 Bra
67  3   3 Ket
68  6     End
69------------------------------------------------------------------
70Capture group count = 0
71May match empty string
72Options: extended
73Subject length lower bound = 0
74
75/a#/Ix
76Memory allocation (code space): 9
77------------------------------------------------------------------
78  0   5 Bra
79  3     a
80  5   5 Ket
81  8     End
82------------------------------------------------------------------
83Capture group count = 0
84Options: extended
85First code unit = 'a'
86Subject length lower bound = 1
87
88/x?+/
89Memory allocation (code space): 9
90------------------------------------------------------------------
91  0   5 Bra
92  3     x?+
93  5   5 Ket
94  8     End
95------------------------------------------------------------------
96
97/x++/
98Memory allocation (code space): 9
99------------------------------------------------------------------
100  0   5 Bra
101  3     x++
102  5   5 Ket
103  8     End
104------------------------------------------------------------------
105
106/x{1,3}+/
107Memory allocation (code space): 13
108------------------------------------------------------------------
109  0   9 Bra
110  3     x
111  5     x{0,2}+
112  9   9 Ket
113 12     End
114------------------------------------------------------------------
115
116/(x)*+/
117Memory allocation (code space): 18
118------------------------------------------------------------------
119  0  14 Bra
120  3     Braposzero
121  4   7 CBraPos 1
122  9     x
123 11   7 KetRpos
124 14  14 Ket
125 17     End
126------------------------------------------------------------------
127
128/^((a+)(?U)([ab]+)(?-U)([bc]+)(\w*))/
129Memory allocation (code space): 120
130------------------------------------------------------------------
131  0 116 Bra
132  3     ^
133  4 109 CBra 1
134  9   7 CBra 2
135 14     a+
136 16   7 Ket
137 19  39 CBra 3
138 24     [ab]+?
139 58  39 Ket
140 61  39 CBra 4
141 66     [bc]+
142100  39 Ket
143103   7 CBra 5
144108     \w*+
145110   7 Ket
146113 109 Ket
147116 116 Ket
148119     End
149------------------------------------------------------------------
150
151"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"
152Memory allocation (code space): 826
153------------------------------------------------------------------
154  0 822 Bra
155  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
156821     \b
157822 822 Ket
158825     End
159------------------------------------------------------------------
160
161"\$\<\.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"
162Memory allocation (code space): 816
163------------------------------------------------------------------
164  0 812 Bra
165  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
166811     \b
167812 812 Ket
168815     End
169------------------------------------------------------------------
170
171/(a(?1)b)/
172Memory allocation (code space): 22
173------------------------------------------------------------------
174  0  18 Bra
175  3  12 CBra 1
176  8     a
177 10   3 Recurse
178 13     b
179 15  12 Ket
180 18  18 Ket
181 21     End
182------------------------------------------------------------------
183
184/(a(?1)+b)/
185Memory allocation (code space): 28
186------------------------------------------------------------------
187  0  24 Bra
188  3  18 CBra 1
189  8     a
190 10   6 SBra
191 13   3 Recurse
192 16   6 KetRmax
193 19     b
194 21  18 Ket
195 24  24 Ket
196 27     End
197------------------------------------------------------------------
198
199/a(?P<name1>b|c)d(?P<longername2>e)/
200Memory allocation (code space): 36
201------------------------------------------------------------------
202  0  32 Bra
203  3     a
204  5   7 CBra 1
205 10     b
206 12   5 Alt
207 15     c
208 17  12 Ket
209 20     d
210 22   7 CBra 2
211 27     e
212 29   7 Ket
213 32  32 Ket
214 35     End
215------------------------------------------------------------------
216
217/(?:a(?P<c>c(?P<d>d)))(?P<a>a)/
218Memory allocation (code space): 45
219------------------------------------------------------------------
220  0  41 Bra
221  3  25 Bra
222  6     a
223  8  17 CBra 1
224 13     c
225 15   7 CBra 2
226 20     d
227 22   7 Ket
228 25  17 Ket
229 28  25 Ket
230 31   7 CBra 3
231 36     a
232 38   7 Ket
233 41  41 Ket
234 44     End
235------------------------------------------------------------------
236
237/(?P<a>a)...(?P=a)bbb(?P>a)d/
238Memory allocation (code space): 34
239------------------------------------------------------------------
240  0  30 Bra
241  3   7 CBra 1
242  8     a
243 10   7 Ket
244 13     Any
245 14     Any
246 15     Any
247 16     \1
248 19     bbb
249 25   3 Recurse
250 28     d
251 30  30 Ket
252 33     End
253------------------------------------------------------------------
254
255/abc(?C255)de(?C)f/
256Memory allocation (code space): 31
257------------------------------------------------------------------
258  0  27 Bra
259  3     abc
260  9     Callout 255 10 1
261 15     de
262 19     Callout 0 16 1
263 25     f
264 27  27 Ket
265 30     End
266------------------------------------------------------------------
267
268/abcde/auto_callout
269Memory allocation (code space): 53
270------------------------------------------------------------------
271  0  49 Bra
272  3     Callout 255 0 1
273  9     a
274 11     Callout 255 1 1
275 17     b
276 19     Callout 255 2 1
277 25     c
278 27     Callout 255 3 1
279 33     d
280 35     Callout 255 4 1
281 41     e
282 43     Callout 255 5 0
283 49  49 Ket
284 52     End
285------------------------------------------------------------------
286
287/\x{100}/utf
288Memory allocation (code space): 10
289------------------------------------------------------------------
290  0   6 Bra
291  3     \x{100}
292  6   6 Ket
293  9     End
294------------------------------------------------------------------
295
296/\x{1000}/utf
297Memory allocation (code space): 11
298------------------------------------------------------------------
299  0   7 Bra
300  3     \x{1000}
301  7   7 Ket
302 10     End
303------------------------------------------------------------------
304
305/\x{10000}/utf
306Memory allocation (code space): 12
307------------------------------------------------------------------
308  0   8 Bra
309  3     \x{10000}
310  8   8 Ket
311 11     End
312------------------------------------------------------------------
313
314/\x{100000}/utf
315Memory allocation (code space): 12
316------------------------------------------------------------------
317  0   8 Bra
318  3     \x{100000}
319  8   8 Ket
320 11     End
321------------------------------------------------------------------
322
323/\x{10ffff}/utf
324Memory allocation (code space): 12
325------------------------------------------------------------------
326  0   8 Bra
327  3     \x{10ffff}
328  8   8 Ket
329 11     End
330------------------------------------------------------------------
331
332/\x{110000}/utf
333Failed: error 134 at offset 9: character code point value in \x{} or \o{} is too large
334
335/[\x{ff}]/utf
336Memory allocation (code space): 10
337------------------------------------------------------------------
338  0   6 Bra
339  3     \x{ff}
340  6   6 Ket
341  9     End
342------------------------------------------------------------------
343
344/[\x{100}]/utf
345Memory allocation (code space): 10
346------------------------------------------------------------------
347  0   6 Bra
348  3     \x{100}
349  6   6 Ket
350  9     End
351------------------------------------------------------------------
352
353/\x80/utf
354Memory allocation (code space): 10
355------------------------------------------------------------------
356  0   6 Bra
357  3     \x{80}
358  6   6 Ket
359  9     End
360------------------------------------------------------------------
361
362/\xff/utf
363Memory allocation (code space): 10
364------------------------------------------------------------------
365  0   6 Bra
366  3     \x{ff}
367  6   6 Ket
368  9     End
369------------------------------------------------------------------
370
371/\x{0041}\x{2262}\x{0391}\x{002e}/I,utf
372Memory allocation (code space): 18
373------------------------------------------------------------------
374  0  14 Bra
375  3     A\x{2262}\x{391}.
376 14  14 Ket
377 17     End
378------------------------------------------------------------------
379Capture group count = 0
380Options: utf
381First code unit = 'A'
382Last code unit = '.'
383Subject length lower bound = 4
384
385/\x{D55c}\x{ad6d}\x{C5B4}/I,utf
386Memory allocation (code space): 19
387------------------------------------------------------------------
388  0  15 Bra
389  3     \x{d55c}\x{ad6d}\x{c5b4}
390 15  15 Ket
391 18     End
392------------------------------------------------------------------
393Capture group count = 0
394Options: utf
395First code unit = \xed
396Last code unit = \xb4
397Subject length lower bound = 3
398
399/\x{65e5}\x{672c}\x{8a9e}/I,utf
400Memory allocation (code space): 19
401------------------------------------------------------------------
402  0  15 Bra
403  3     \x{65e5}\x{672c}\x{8a9e}
404 15  15 Ket
405 18     End
406------------------------------------------------------------------
407Capture group count = 0
408Options: utf
409First code unit = \xe6
410Last code unit = \x9e
411Subject length lower bound = 3
412
413/[\x{100}]/utf
414Memory allocation (code space): 10
415------------------------------------------------------------------
416  0   6 Bra
417  3     \x{100}
418  6   6 Ket
419  9     End
420------------------------------------------------------------------
421
422/[Z\x{100}]/utf
423Memory allocation (code space): 47
424------------------------------------------------------------------
425  0  43 Bra
426  3     [Z\x{100}]
427 43  43 Ket
428 46     End
429------------------------------------------------------------------
430
431/^[\x{100}\E-\Q\E\x{150}]/utf
432Memory allocation (code space): 18
433------------------------------------------------------------------
434  0  14 Bra
435  3     ^
436  4     [\x{100}-\x{150}]
437 14  14 Ket
438 17     End
439------------------------------------------------------------------
440
441/^[\QĀ\E-\QŐ\E]/utf
442Memory allocation (code space): 18
443------------------------------------------------------------------
444  0  14 Bra
445  3     ^
446  4     [\x{100}-\x{150}]
447 14  14 Ket
448 17     End
449------------------------------------------------------------------
450
451/^[\QĀ\E-\QŐ\E/utf
452Failed: error 106 at offset 15: missing terminating ] for character class
453
454/[\p{L}]/
455Memory allocation (code space): 15
456------------------------------------------------------------------
457  0  11 Bra
458  3     [\p{L}]
459 11  11 Ket
460 14     End
461------------------------------------------------------------------
462
463/[\p{^L}]/
464Memory allocation (code space): 15
465------------------------------------------------------------------
466  0  11 Bra
467  3     [\P{L}]
468 11  11 Ket
469 14     End
470------------------------------------------------------------------
471
472/[\P{L}]/
473Memory allocation (code space): 15
474------------------------------------------------------------------
475  0  11 Bra
476  3     [\P{L}]
477 11  11 Ket
478 14     End
479------------------------------------------------------------------
480
481/[\P{^L}]/
482Memory allocation (code space): 15
483------------------------------------------------------------------
484  0  11 Bra
485  3     [\p{L}]
486 11  11 Ket
487 14     End
488------------------------------------------------------------------
489
490/[abc\p{L}\x{0660}]/utf
491Memory allocation (code space): 50
492------------------------------------------------------------------
493  0  46 Bra
494  3     [a-c\p{L}\x{660}]
495 46  46 Ket
496 49     End
497------------------------------------------------------------------
498
499/[\p{Nd}]/utf
500Memory allocation (code space): 15
501------------------------------------------------------------------
502  0  11 Bra
503  3     [\p{Nd}]
504 11  11 Ket
505 14     End
506------------------------------------------------------------------
507
508/[\p{Nd}+-]+/utf
509Memory allocation (code space): 48
510------------------------------------------------------------------
511  0  44 Bra
512  3     [+\-\p{Nd}]++
513 44  44 Ket
514 47     End
515------------------------------------------------------------------
516
517/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/i,utf
518Memory allocation (code space): 25
519------------------------------------------------------------------
520  0  21 Bra
521  3  /i A\x{391}\x{10427}\x{ff3a}\x{1fb0}
522 21  21 Ket
523 24     End
524------------------------------------------------------------------
525
526/A\x{391}\x{10427}\x{ff3a}\x{1fb0}/utf
527Memory allocation (code space): 25
528------------------------------------------------------------------
529  0  21 Bra
530  3     A\x{391}\x{10427}\x{ff3a}\x{1fb0}
531 21  21 Ket
532 24     End
533------------------------------------------------------------------
534
535/[\x{105}-\x{109}]/i,utf
536Memory allocation (code space): 17
537------------------------------------------------------------------
538  0  13 Bra
539  3     [\x{104}-\x{109}]
540 13  13 Ket
541 16     End
542------------------------------------------------------------------
543
544/( ( (?(1)0|) )*   )/x
545Memory allocation (code space): 38
546------------------------------------------------------------------
547  0  34 Bra
548  3  28 CBra 1
549  8     Brazero
550  9  19 SCBra 2
551 14   8 Cond
552 17   1 Cond ref
553 20     0
554 22   3 Alt
555 25  11 Ket
556 28  19 KetRmax
557 31  28 Ket
558 34  34 Ket
559 37     End
560------------------------------------------------------------------
561
562/(  (?(1)0|)*   )/x
563Memory allocation (code space): 30
564------------------------------------------------------------------
565  0  26 Bra
566  3  20 CBra 1
567  8     Brazero
568  9   8 SCond
569 12   1 Cond ref
570 15     0
571 17   3 Alt
572 20  11 KetRmax
573 23  20 Ket
574 26  26 Ket
575 29     End
576------------------------------------------------------------------
577
578/[a]/
579Memory allocation (code space): 9
580------------------------------------------------------------------
581  0   5 Bra
582  3     a
583  5   5 Ket
584  8     End
585------------------------------------------------------------------
586
587/[a]/utf
588Memory allocation (code space): 9
589------------------------------------------------------------------
590  0   5 Bra
591  3     a
592  5   5 Ket
593  8     End
594------------------------------------------------------------------
595
596/[\xaa]/
597Memory allocation (code space): 9
598------------------------------------------------------------------
599  0   5 Bra
600  3     \x{aa}
601  5   5 Ket
602  8     End
603------------------------------------------------------------------
604
605/[\xaa]/utf
606Memory allocation (code space): 10
607------------------------------------------------------------------
608  0   6 Bra
609  3     \x{aa}
610  6   6 Ket
611  9     End
612------------------------------------------------------------------
613
614/[^a]/
615Memory allocation (code space): 9
616------------------------------------------------------------------
617  0   5 Bra
618  3     [^a]
619  5   5 Ket
620  8     End
621------------------------------------------------------------------
622
623/[^a]/utf
624Memory allocation (code space): 9
625------------------------------------------------------------------
626  0   5 Bra
627  3     [^a]
628  5   5 Ket
629  8     End
630------------------------------------------------------------------
631
632/[^\xaa]/
633Memory allocation (code space): 9
634------------------------------------------------------------------
635  0   5 Bra
636  3     [^\x{aa}]
637  5   5 Ket
638  8     End
639------------------------------------------------------------------
640
641/[^\xaa]/utf
642Memory allocation (code space): 10
643------------------------------------------------------------------
644  0   6 Bra
645  3     [^\x{aa}]
646  6   6 Ket
647  9     End
648------------------------------------------------------------------
649
650#pattern -memory
651
652/[^\d]/utf,ucp
653------------------------------------------------------------------
654  0  11 Bra
655  3     [^\p{Nd}]
656 11  11 Ket
657 14     End
658------------------------------------------------------------------
659
660/[[:^alpha:][:^cntrl:]]+/utf,ucp
661------------------------------------------------------------------
662  0  15 Bra
663  3     [\P{L}\P{Cc}]++
664 15  15 Ket
665 18     End
666------------------------------------------------------------------
667
668/[[:^cntrl:][:^alpha:]]+/utf,ucp
669------------------------------------------------------------------
670  0  15 Bra
671  3     [\P{Cc}\P{L}]++
672 15  15 Ket
673 18     End
674------------------------------------------------------------------
675
676/[[:alpha:]]+/utf,ucp
677------------------------------------------------------------------
678  0  12 Bra
679  3     [\p{L}]++
680 12  12 Ket
681 15     End
682------------------------------------------------------------------
683
684/[[:^alpha:]\S]+/utf,ucp
685------------------------------------------------------------------
686  0  15 Bra
687  3     [\P{L}\P{Xsp}]++
688 15  15 Ket
689 18     End
690------------------------------------------------------------------
691
692/abc(d|e)(*THEN)x(123(*THEN)4|567(b|q)(*THEN)xx)/
693------------------------------------------------------------------
694  0  73 Bra
695  3     abc
696  9   7 CBra 1
697 14     d
698 16   5 Alt
699 19     e
700 21  12 Ket
701 24     *THEN
702 25     x
703 27  14 CBra 2
704 32     123
705 38     *THEN
706 39     4
707 41  29 Alt
708 44     567
709 50   7 CBra 3
710 55     b
711 57   5 Alt
712 60     q
713 62  12 Ket
714 65     *THEN
715 66     xx
716 70  43 Ket
717 73  73 Ket
718 76     End
719------------------------------------------------------------------
720
721/(((a\2)|(a*)\g<-1>))*a?/
722------------------------------------------------------------------
723  0  51 Bra
724  3     Brazero
725  4  42 SCBra 1
726  9  18 CBra 2
727 14  10 CBra 3
728 19     a
729 21     \2
730 24  10 Ket
731 27  16 Alt
732 30   7 CBra 4
733 35     a*
734 37   7 Ket
735 40  30 Recurse
736 43  34 Ket
737 46  42 KetRmax
738 49     a?+
739 51  51 Ket
740 54     End
741------------------------------------------------------------------
742
743/((?+1)(\1))/
744------------------------------------------------------------------
745  0  25 Bra
746  3  19 CBra 1
747  8  11 Recurse
748 11   8 CBra 2
749 16     \1
750 19   8 Ket
751 22  19 Ket
752 25  25 Ket
753 28     End
754------------------------------------------------------------------
755
756"(?1)(?#?'){2}(a)"
757------------------------------------------------------------------
758  0  19 Bra
759  3   9 Recurse
760  6   9 Recurse
761  9   7 CBra 1
762 14     a
763 16   7 Ket
764 19  19 Ket
765 22     End
766------------------------------------------------------------------
767
768/.((?2)(?R)|\1|$)()/
769------------------------------------------------------------------
770  0  36 Bra
771  3     Any
772  4  11 CBra 1
773  9  28 Recurse
774 12   0 Recurse
775 15   6 Alt
776 18     \1
777 21   4 Alt
778 24     $
779 25  21 Ket
780 28   5 CBra 2
781 33   5 Ket
782 36  36 Ket
783 39     End
784------------------------------------------------------------------
785
786/.((?3)(?R)()(?2)|\1|$)()/
787------------------------------------------------------------------
788  0  47 Bra
789  3     Any
790  4  22 CBra 1
791  9  39 Recurse
792 12   0 Recurse
793 15   5 CBra 2
794 20   5 Ket
795 23  15 Recurse
796 26   6 Alt
797 29     \1
798 32   4 Alt
799 35     $
800 36  32 Ket
801 39   5 CBra 3
802 44   5 Ket
803 47  47 Ket
804 50     End
805------------------------------------------------------------------
806
807/(?1)()((((((\1++))\x85)+)|))/
808------------------------------------------------------------------
809  0  77 Bra
810  3   6 Recurse
811  6   5 CBra 1
812 11   5 Ket
813 14  60 CBra 2
814 19  49 CBra 3
815 24  41 CBra 4
816 29  33 CBra 5
817 34  23 CBra 6
818 39  15 CBra 7
819 44   7 Once
820 47     \1+
821 51   7 Ket
822 54  15 Ket
823 57  23 Ket
824 60     \x{85}
825 62  33 KetRmax
826 65  41 Ket
827 68   3 Alt
828 71  52 Ket
829 74  60 Ket
830 77  77 Ket
831 80     End
832------------------------------------------------------------------
833
834# Check the absolute limit on nesting (?| etc. This varies with code unit
835# width because the workspace is a different number of bytes. It will fail
836# with link size 2 in 8-bit and 16-bit but not in 32-bit.
837
838/(?|(?|(?J:(?|(?x:(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|(?|
839)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
840/parens_nest_limit=1000,-fullbincode
841Failed: error 184 at offset 1504: (?| and/or (?J: or (?x: parentheses are too deeply nested
842
843# Use "expand" to create some very long patterns with nested parentheses, in
844# order to test workspace overflow. Again, this varies with code unit width,
845# and even when it fails in two modes, the error offset differs. It also varies
846# with link size - hence multiple tests with different values.
847
848/(?'ABC'\[[bar](]{792}*THEN:\[A]{255}\[)]{793}/expand,-fullbincode,parens_nest_limit=1000
849
850/(?'ABC'\[[bar](]{793}*THEN:\[A]{255}\[)]{794}/expand,-fullbincode,parens_nest_limit=1000
851
852/(?'ABC'\[[bar](]{1793}*THEN:\[A]{255}\[)]{1794}/expand,-fullbincode,parens_nest_limit=2000
853Failed: error 186 at offset 12820: regular expression is too complicated
854
855/(?(1)(?1)){8,}+()/debug
856------------------------------------------------------------------
857  0 119 Bra
858  3 105 Once
859  6   9 Cond
860  9   1 Cond ref
861 12 111 Recurse
862 15   9 Ket
863 18   9 Cond
864 21   1 Cond ref
865 24 111 Recurse
866 27   9 Ket
867 30   9 Cond
868 33   1 Cond ref
869 36 111 Recurse
870 39   9 Ket
871 42   9 Cond
872 45   1 Cond ref
873 48 111 Recurse
874 51   9 Ket
875 54   9 Cond
876 57   1 Cond ref
877 60 111 Recurse
878 63   9 Ket
879 66   9 Cond
880 69   1 Cond ref
881 72 111 Recurse
882 75   9 Ket
883 78   9 Cond
884 81   1 Cond ref
885 84 111 Recurse
886 87   9 Ket
887 90  15 SBraPos
888 93   9 SCond
889 96   1 Cond ref
890 99 111 Recurse
891102   9 Ket
892105  15 KetRpos
893108 105 Ket
894111   5 CBra 1
895116   5 Ket
896119 119 Ket
897122     End
898------------------------------------------------------------------
899Capture group count = 1
900Max back reference = 1
901May match empty string
902Subject length lower bound = 0
903    abcd
904 0:
905 1:
906
907/(?(1)|a(?1)b){2,}+()/debug
908------------------------------------------------------------------
909  0  61 Bra
910  3  47 Once
911  6   6 Cond
912  9   1 Cond ref
913 12  10 Alt
914 15     a
915 17  53 Recurse
916 20     b
917 22  16 Ket
918 25  22 SBraPos
919 28   6 SCond
920 31   1 Cond ref
921 34  10 Alt
922 37     a
923 39  53 Recurse
924 42     b
925 44  16 Ket
926 47  22 KetRpos
927 50  47 Ket
928 53   5 CBra 1
929 58   5 Ket
930 61  61 Ket
931 64     End
932------------------------------------------------------------------
933Capture group count = 1
934Max back reference = 1
935May match empty string
936Subject length lower bound = 0
937    abcde
938No match
939
940/((?1)(?2)(?3)(?4)(?5)(?6)(?7)(?8)(?9)(?9)(?8)(?7)(?6)(?5)(?4)(?3)(?2)(?1)(?0)){2,}()()()()()()()()()/debug
941------------------------------------------------------------------
942  0 205 Bra
943  3  62 CBra 1
944  8   3 Recurse
945 11 133 Recurse
946 14 141 Recurse
947 17 149 Recurse
948 20 157 Recurse
949 23 165 Recurse
950 26 173 Recurse
951 29 181 Recurse
952 32 189 Recurse
953 35 189 Recurse
954 38 181 Recurse
955 41 173 Recurse
956 44 165 Recurse
957 47 157 Recurse
958 50 149 Recurse
959 53 141 Recurse
960 56 133 Recurse
961 59   3 Recurse
962 62   0 Recurse
963 65  62 Ket
964 68  62 SCBra 1
965 73   3 Recurse
966 76 133 Recurse
967 79 141 Recurse
968 82 149 Recurse
969 85 157 Recurse
970 88 165 Recurse
971 91 173 Recurse
972 94 181 Recurse
973 97 189 Recurse
974100 189 Recurse
975103 181 Recurse
976106 173 Recurse
977109 165 Recurse
978112 157 Recurse
979115 149 Recurse
980118 141 Recurse
981121 133 Recurse
982124   3 Recurse
983127   0 Recurse
984130  62 KetRmax
985133   5 CBra 2
986138   5 Ket
987141   5 CBra 3
988146   5 Ket
989149   5 CBra 4
990154   5 Ket
991157   5 CBra 5
992162   5 Ket
993165   5 CBra 6
994170   5 Ket
995173   5 CBra 7
996178   5 Ket
997181   5 CBra 8
998186   5 Ket
999189   5 CBra 9
1000194   5 Ket
1001197   5 CBra 10
1002202   5 Ket
1003205 205 Ket
1004208     End
1005------------------------------------------------------------------
1006Capture group count = 10
1007May match empty string
1008Subject length lower bound = 0
1009
1010/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([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)/
1011Failed: error 114 at offset 509: missing closing parenthesis
1012
1013/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([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
1014
1015#pattern -fullbincode
1016
1017/\[()]{65535}/expand
1018Failed: error 120 at offset 131070: regular expression is too large
1019
1020# End of testinput8
1021