1: transcribed from the tcl 8.3 Spencer reg tests 2005-06-06
2
3# Copyright (c) 1998, 1999 Henry Spencer.  All rights reserved.
4
5# basic sanity checks
6
7BE	abc		abc		(0,3)
8BE	abc		def		NOMATCH
9BE	abc		xyabxabce	(5,8)
10
11# basic syntax
12
13BE	NULL		a		ENULL
14BEz	NULL		a		(0,0)
15E	a|		a		ENULL
16Ez	a|		a		(0,1)
17E	a|b		a		(0,1)
18E	a|b		b		(0,1)
19E	a||b		b		ENULL
20Ez	a||b		b		(0,1)
21BE	ab		ab		(0,2)
22
23# parentheses
24
25E	(a)e		ae		(0,2)(0,1)
26E	(a)e		ae		(0,2)(0,1)
27B	\(a\)b		ab		(0,2)(0,1)
28E	a((b)c)		abc		(0,3)(1,3)(1,2)
29E	a(b)(c)		abc		(0,3)(1,2)(2,3)
30E	a(b		ab		EPAREN
31B	a\(b		ab		EPAREN
32
33# sigh, we blew it on the specs here... someday this will be fixed in POSIX,
34
35
36# but meanwhile, it's fixed in AEs
37
38E	a)b		a)b		(0,3)
39E	a)b		a)b		(0,3)
40B	a\)b		a)b		EPAREN
41E	a(?:b)c		abc		(0,3)
42E	a()b		ab		ENULL
43Ez	a()b		ab		(0,2)(1,1)
44E	a(?:)b		ab		(0,2)
45E	a(|b)c		ac		ENULL
46Ez	a(|b)c		ac		(0,2)(1,1)
47E	a(b|)c		abc		ENULL
48Ez	a(b|)c		abc		(0,3)(1,2)
49
50# simple one-char matching
51
52
53# general case of brackets done later
54
55BE	a.b		axb		(0,3)
56BEn$	a.b		a\nb		NOMATCH
57BE$	a.b		a\nb		(0,3)
58BE	a[bc]d		abd		(0,3)
59BE	a[bc]d		acd		(0,3)
60BE	a[bc]d		aed		NOMATCH
61BE	a[^bc]d		abd		NOMATCH
62BE	a[^bc]d		aed		(0,3)
63BE$	a[^bc]d		a\nd		(0,3)
64BEn$	a[^bc]d		a\nd		NOMATCH
65
66# context-dependent syntax
67
68
69# plus odds and ends
70
71B	fix		reg.dat		NOMATCH
72B	fix		reg.dat		NOMATCH
73E	fix		reg.dat		NOMATCH
74B	\(*\)		fix		NOMATCH
75B	\(*\)		a		NOMATCH
76E	(*)		fix		BADRPT
77B	^*		^		NOMATCH
78B	^*		fix		NOMATCH
79B	^*		a		NOMATCH
80B	^*		^*		NOMATCH
81E	^*		^		(0,0)
82B	\(^*\)		fix		NOMATCH
83B	\(^*\)		a		NOMATCH
84E	(^*)		fix		(0,0)(0,0)
85B	$*		$		(0,1)
86B	$*		a$z		(0,0)
87B	$*		fix		(0,0)
88B	$*		a*z		(0,0)
89B	$*		$*		(0,1)
90B	$*		a$*z		(0,0)
91E	$*		$		(0,0)
92BE	^b		^		NOMATCH
93BE	^b		^b		NOMATCH
94B	x^		x^		(0,2)
95E	x^		x^		NOMATCH
96Ebn$	^		x\nb		(2,2)
97En$	\n^		x\nb		(1,2)
98B	\(^b\)		^b		NOMATCH
99E	(^b)		^b		NOMATCH
100BE	x$		x		(0,1)
101B	\(x$\)		x		(0,1)(0,1)
102E	(x$)		x		(0,1)(0,1)
103B	x$y		x$y		(0,3)
104E	x$y		x$y		NOMATCH
105BE	x$y		xy		NOMATCH
106En$	x$\n		x\n		(0,2)
107E	+		x		BADRPT
108E	?		x		BADRPT
109
110# simple quantifiers
111
112BE	a*		aa		(0,2)
113BE	a*		b		(0,0)
114E	a+		aa		(0,2)
115E	a?b		ab		(0,2)
116E	a?b		zb		(1,2)
117E	a?b		b		(0,1)
118B	fix		reg.dat		NOMATCH
119E	fix		reg.dat		NOMATCH
120B	a**		aaa		(0,3)
121E	a**		aaa		(0,3)
122B	a**b		aab		(0,3)
123E	a**b		aab		(0,3)
124B	fix		reg.dat		NOMATCH
125E	fix		reg.dat		NOMATCH
126E	a++		aaa		BADRPT
127E	a?+		aaa		BADRPT
128E	a?*		aaa		(0,1)
129E	a+*		aaa		(0,3)
130E	a*+		aaa		BADRPT
131
132# braces
133
134E	a0		a1		NOMATCH
135E	a0		a1		NOMATCH
136E	a1		a0		NOMATCH
137E	a1		a2		NOMATCH
138E	a{257}		x		NOMATCH
139E	a{1000}		x		NOMATCH
140E	a{1		x		EBRACE
141E	a{1n}		x		BADBR
142B	a{b		a{b		(0,3)
143E	a{b		a{b		BADBR
144B	a{		a{		(0,2)
145E	a{		a{		EBRACE
146B	a\0b		a\1\b		BADESC
147B	a\{0,1		x		EBRACE
148E	a{0,1\		x		BADBR
149E	a{0}b		ab		(1,2)
150E	a0b		a0b		(0,3)
151E	a0b		a1b		NOMATCH
152E	a0b		a2b		NOMATCH
153E	a0b		a2b		NOMATCH
154E	a0b		ab		NOMATCH
155E	a1b		a1b		(0,3)
156E	a1b		a3b		NOMATCH
157E	a1b		a3b		NOMATCH
158E	a1b		ab		NOMATCH
159E	a2b		a3b		NOMATCH
160E	a2b		a3b		NOMATCH
161E	a2b		ab		NOMATCH
162E	a2b		ab		NOMATCH
163
164# brackets
165
166BE	a[bc]		ac		(0,2)
167BE	a[-]		a-		(0,2)
168BE	a[[.-.]]	a-		(0,2)
169BE	a[0-[.9.]]	a2		(0,2)
170BE	a[[=x=]]	ax		(0,2)
171BE	a[[=x=]]	ay		NOMATCH
172BE	a[[=x=]]	az		NOMATCH
173BE	a[0-[=x=]]	x		ERANGE
174BE	a[[:digit:]]	a0		(0,2)
175BE	a[[:woopsie:]]	x		ECTYPE
176BE	a[[:digit:]]	ab		NOMATCH
177BE	a[0-[:digit:]]	x		NOMATCH
178BE	[[:<:]]a	a		(0,1)
179BE	a[[:>:]]	a		(0,1)
180BE	a[[..]]b	x		ECOLLATE
181BE	a[[==]]b	x		ECOLLATE
182BE	a[[::]]b	x		ECTYPE
183BE	a[[.a		x		ECOLLATE
184BE	a[[=a		x		ECOLLATE
185BE	a[[:a		x		ECTYPE
186BE	a[		x		EBRACK
187BE	a[b		x		EBRACK
188BE	a[b-		x		EBRACK
189BE	a[b-c		x		EBRACK
190BE	a[b-c]		ab		(0,2)
191BE	a[b-b]		ab		(0,2)
192BE	a[1-2]		a2		(0,2)
193BE	a[c-b]		x		ERANGE
194BE	a[a-b-c]	x		ERANGE
195BE	a[--?]b		a?b		(0,3)
196BE	a[---]b		a-b		(0,3)
197BE	a[]b]c		a]c		(0,3)
198BE	a[]]b		a]b		(0,3)
199BE	a[[b]c		a[c		(0,3)
200BE	a[[b]c		abc		(0,3)
201
202B	a[\]]b		a]b		NOMATCH
203E	a[\]]b		a]b		NOMATCH
204B	a[\]]b		a\]b		(0,4)
205E	a[\]]b		a\]b		(0,4)
206B	a[\\]b		a\b		(0,3)
207E	a[\\]b		a\b		(0,3)
208E	a[\\]b		a\b		(0,3)
209B	a[\Z]b		a\b		(0,3)
210E	a[\Z]b		a\b		(0,3)
211
212Bv	a[\]]b		a]b		NOMATCH
213Ev	a[\]]b		a]b		NOMATCH
214Bv	a[\]]b		a\]b		(0,4)
215Ev	a[\]]b		a\]b		(0,4)
216Bv	a[\\]b		a\b		(0,3)
217Ev	a[\\]b		a\b		(0,3)
218Ev	a[\\]b		a\b		(0,3)
219Bv	a[\Z]b		a\b		(0,3)
220Ev	a[\Z]b		a\b		(0,3)
221
222BE	a[[\b]c		a[c		(0,3)
223BE	a[[\b]c		abc		(0,3)
224BE	a[[\\b]c	abc		(0,3)
225BE	a[[\Z]c		aZc		(0,3)
226BE	a[[\b]c		a\c		(0,3)
227BE	a[[\\b]c	a\c		(0,3)
228BE	a[[\b]*c	a[c		(0,3)
229BE	a[[\\b]*c	a[c		(0,3)
230BE	a[[\b]*c	a[bc		(0,4)
231BE	a[[\\b]*c	a[bc		(0,4)
232BE	a[[\b]*c	a[c		(0,3)
233BE	a[[\\b]*c	a[c		(0,3)
234BE	a[[\b]*c	ab[c		(0,4)
235BE	a[[\\b]*c	ab[c		(0,4)
236E$	a[\xfe-\a][\xff-	a\x02\xfb	ERANGE
237
238BEv	a[[\b]c		a[c		(0,3)
239BEv	a[[\b]c		abc		NOMATCH
240BEv	a[[\\b]c	abc		(0,3)
241BEv	a[[\Z]c		aZc		(0,3)
242BEv	a[[\b]c		a\c		NOMATCH
243BEv	a[[\\b]c	a\c		(0,3)
244BEv	a[[\b]*c	a[c		(0,3)
245BEv	a[[\\b]*c	a[c		(0,3)
246BEv	a[[\b]*c	a[bc		NOMATCH
247BEv	a[[\\b]*c	a[bc		(0,4)
248BEv	a[[\b]*c	a[c		(0,3)
249BEv	a[[\\b]*c	a[c		(0,3)
250BEv	a[[\b]*c	ab[c		NOMATCH
251BEv	a[[\\b]*c	ab[c		(0,4)
252E$v	a[\xfe-\a][\xff-	a\x02\xfb	ERANGE
253
254# anchors and newlines
255
256BE	^a		a		(0,1)
257BEb	^a		a		NOMATCH
258BE	^		a		(0,0)
259BE	a$		aba		(2,3)
260BEe	a$		a		NOMATCH
261BE	$		ab		(2,2)
262BEn	^a		a		(0,1)
263BEn$	^a		b\na		(2,3)
264BEnb$	^a		a\na		(2,3)
265BEn	a$		a		(0,1)
266BEn$	a$		a\nb		(0,1)
267BEn$	a$		a\na		(0,1)
268BEn$	b$		a\nb		(2,3)
269B	^^		a		NOMATCH
270B	^^		^		(0,1)
271E	^^		a		(0,0)
272E	^^		^		(0,0)
273B	$$		$		(0,1)
274E	$$		$		(1,1)
275B	$$		a		NOMATCH
276E	$$		a		(1,1)
277BE	^$		NULL		(0,0)
278BE	^$		a		NOMATCH
279BEn$	^$		a\n\nb		(2,2)
280B	$^		NULL		NOMATCH
281E	$^		NULL		(0,0)
282B	$^		$^		(0,2)
283E	$^		$^		NOMATCH
284E	\Aa		a		(0,1)
285B	\Aa		a		(0,1)
286Bn$	\\Aa		b\na		NOMATCH
287B	a\Z		a		(0,1)
288E	a\Z		a		(0,1)
289Bn$	a\\Z		a\nb		NOMATCH
290En$	a\\Z		a\nb		NOMATCH
291E	^*		x		(0,0)
292E	$*		x		(0,0)
293E	\A*		x		BADRPT
294E	\Z*		x		BADRPT
295
296# boundary constraints
297
298BE	[[:<:]]a	a		(0,1)
299BE	[[:<:]]a	-a		(1,2)
300BE	[[:<:]]a	ba		NOMATCH
301BE	a[[:>:]]	a		(0,1)
302BE	a[[:>:]]	a-		(0,1)
303BE	a[[:>:]]	ab		NOMATCH
304B	\<a		a		(0,1)
305B	\<a		ba		NOMATCH
306B	a\>		a		(0,1)
307B	a\>		ab		NOMATCH
308E	\ya		a		BADESC
309E	\ya		ba		BADESC
310E	a\y		a		BADESC
311E	a\y		ab		BADESC
312E	a\Y		ab		BADESC
313E	a\Y		a-		BADESC
314E	a\Y		a		BADESC
315E	-\Y		-a		BADESC
316E	-\Y		-%		BADESC
317E	\Y-		a-		BADESC
318E	fix		reg.dat		NOMATCH
319E	[[:>:]]*	x		BADRPT
320B	\<*		x		BADRPT
321B	\>*		x		BADRPT
322E	\y*		x		BADESC
323E	\Y*		x		BADESC
324E	\ma		a		BADESC
325E	\ma		ba		BADESC
326E	a\M		a		BADESC
327E	a\M		ab		BADESC
328E	\Ma		a		BADESC
329E	a\m		a		BADESC
330
331# character classes
332
333E	a\db		a0b		(0,3)
334E	a\db		axb		NOMATCH
335E	a\Db		a0b		NOMATCH
336E	a\Db		axb		(0,3)
337E$	a\\sb		a b		(0,3)
338E$	a\\sb		a\tb		(0,3)
339E$	a\\sb		a\nb		(0,3)
340E	a\sb		axb		NOMATCH
341E	a\Sb		axb		(0,3)
342E$	a\\Sb		a b		NOMATCH
343E	a\wb		axb		(0,3)
344E	a\wb		a-b		NOMATCH
345E	a\Wb		axb		NOMATCH
346E	a\Wb		a-b		(0,3)
347E	\y\w+z\y	adze-guz	BADESC
348
349E	a[\d]b		a1b		NOMATCH
350E$	a[\\s]b		a b		NOMATCH
351E	a[\w]b		axb		NOMATCH
352
353Ev	a[\d]b		a1b		(0,3)
354E$v	a[\\s]b		a b		(0,3)
355Ev	a[\w]b		axb		(0,3)
356
357# escapes
358
359BE$	a\\		x		EESCAPE
360E	a\<b		a<b		NOMATCH
361Ee	a\<b		a<b		NOMATCH
362B	a\wb		awb		(0,3)
363Ee	a\wb		awb		(0,3)
364E$	a\\ab		a\ab	(0,3)
365E$	a\\bb		a\bb		NOMATCH
366E	a\Bb		a\b		NOMATCH
367E$	a\\chb		a\bb		(0,3)
368E$	a\\cHb		a\bb		(0,3)
369E$	a\\e		a\e		(0,2)
370E$	a\\fb		a\fb		(0,3)
371E$	a\\nb		a\nb		(0,3)
372E$	a\\rb		a\rb		(0,3)
373E$	a\\tb		a\tb		(0,3)
374E$	a\\u0008x	a\bx		BADESC
375E	a\u008x		x		BADESC
376E$	a\\u00088x	a\b8x		BADESC
377E$	a\\U00000008x	a\bx		BADESC
378E	a\U0000008x	x		BADESC
379E$	a\\vb		a\vb		(0,3)
380E$	a\\x08x		a\bx		(0,3)
381E	a\xq		x		NOMATCH
382E	a\z		x		NOMATCH
383E$	a\\010b		a\bb		(0,3)
384
385# back references
386
387
388# ugh
389
390E	a(b*)c\1	abbcbb		(0,6)(1,3)
391E$	a(b*)c\x01	ac		NOMATCH
392E	a(b*)c\1	abbcb		NOMATCH
393E	a(b*)\1		abbcbb		(0,3)(1,2)
394E	a(b|bb)\1	abbcbb		(0,3)(1,2)
395E	a([bc])\1	abb		(0,3)(1,2)
396E	a([bc])\1	abc		NOMATCH
397E	a([bc])\1	abcabb		(3,6)(4,5)
398E	a([bc])*\1	abc		NOMATCH
399E	a([bc])\1	abB		NOMATCH
400Ei	a([bc])\1	abB		(0,3)(1,2)
401E	a([bc])\1+	abbb		(0,4)(1,2)
402E	a([bc])\13	a([bc])\14	NOMATCH
403E	a([bc])\13	a([bc])\14	NOMATCH
404E	a([bc])\1*	abbb		(0,4)(1,2)
405E	a([bc])\1*	ab		(0,2)(1,2)
406E	a([bc])(\1*)	ab		(0,2)(1,2)(2,2)
407E	a((b)\1)	x		ESUBREG
408E	a(b)c\2		x		ESUBREG
409B	a\(b*\)c\1	abbcbb		(0,6)(1,3)
410
411# octal escapes vs back references
412
413
414# initial zero is always octal
415
416E$	a\\010b		a\bb		(0,3)
417E$	a\\0070b	a\a0b		(0,4)
418E$	a\\07b		a\ab		BADESC
419E$	a(b)(b)(b)(b)(b)(b)(b)(b)(b)(b)\\07c	abbbbbbbbbb\ac		BADESC
420
421# a single digit is always a backref
422
423E	a\7b		x		ESUBREG
424
425# otherwise it's a backref only if within range (barf!)
426
427E$	a\\10b		a\bb		ESUBREG
428E	a\101b		aAb		(0,3)
429E	a(b)(b)(b)(b)(b)(b)(b)(b)(b)(b)\10c	abbbbbbbbbbbc		NOMATCH
430
431# but we're fussy about border cases -- guys who want octal should use the zero
432
433E	a((((((((((b\10))))))))))c	x		ESUBREG
434
435# BREs don't have octal, EEs don't have backrefs
436
437E$	a\\12b		a\nb		ESUBREG
438B	a\12b		x		ESUBREG
439Ee	a\12b		a12b		ESUBREG
440
441# expanded syntax
442
443Ec	a b c		abc		(0,3)
444Ec$	a b #oops\nc\td	abcd		(0,4)
445Ec$	a\\ b\\\tc	a b\tc		(0,5)
446Ec$	a b\\#c		ab#c		BADESC
447Ec	a b[c d]e	ab e		(0,4)
448Ec	a b[c#d]e	ab#e		(0,4)
449Ec	a b[c#d]e	abde		(0,4)
450Bc	ab{ d		ab{d		(0,4)
451Ec	ab{ d		ab{d		BADBR
452Ec$	ab 1 c		ab 2 c		NOMATCH
453
454# misc syntax
455
456E	a(?#comment)b	ab		(0,2)
457
458# unmatchable Es
459
460E	a^b		ab		NOMATCH
461
462# case independence
463
464BEi	ab		Ab		(0,2)
465BEi	a[bc]		aC		(0,2)
466BEi	a[^bc]		aB		NOMATCH
467BEi	a[b-d]		aC		(0,2)
468BEi	a[^b-d]		aC		NOMATCH
469
470# directors and embedded options
471
472BE	fix		reg.dat		NOMATCH
473L	fix		reg.dat		NOMATCH
474B	***=a*b		a*b		NOMATCH
475E	***=a*b		a*b		BADRPT
476L	***=a*b		***=a*b		(0,7)
477B	***:\w+		ab		NOMATCH
478Ee	***:\w+		ab		BADRPT
479BE	***:***=a*b	x		BADRPT
480B	***:(?b)a+b	a+b		NOMATCH
481E	***:(?b)a+b	a+b		BADRPT
482E	(?b)a+b		a+b		BADRPT
483Ee	(?b)\w+		x		BADRPT
484B	(?b)\w+		(?b)w+		(0,6)
485Ei	(?c)a		a		BADRPT
486Ei	(?c)a		x		BADRPT
487E	(?e)\W+		WW		BADRPT
488E	(?i)a+		Aa		(0,2)
489E$	(?m)a.b		a\nb		NOMATCH
490E$	(?m)^b		a\nb		(2,3)
491E$	(?n)a.b		a\nb		BADRPT
492E$	(?n)^b		a\nb		BADRPT
493E$	(?p)a.b		a\nb		(0,3)
494E$	(?p)^b		a\nb		NOMATCH
495E	(?q)a+b		a+b		BADRPT
496En$	(?s)a.b		a\nb		(0,3)
497Ex$	(?t)a b		a b		BADRPT
498E$	(?w)a.b		a\nb		BADRPT
499E$	(?w)^b		a\nb		BADRPT
500E$	(?x)a b		ab		(0,2)
501E	(?z)ab		x		BADRPT
502E	(?ici)a+	Aa		BADRPT
503E	(?i)(?q)a+	x		BADRPT
504E	(?q)(?i)a+	(?i)a+	BADRPT
505E	(?qe)a+		a		BADRPT
506Ex$	(?q)a b		a b		BADRPT
507E$	(?qx)a b	a b		BADRPT
508E	(?qi)ab		Ab		BADRPT
509
510# capturing
511
512E	a(b)c		abc		(0,3)(1,2)
513E	a(?:b)c		xabc		(1,4)
514E	a((b))c		xabcy		(1,4)(2,3)(2,3)
515E	a(?:(b))c	abcy		(0,3)(1,2)
516E	a((?:b))c	abc		(0,3)(1,2)
517E	a(?:(?:b))c	abc		(0,3)
518E$	a(b)(0,)c	ac	NOMATCH
519E	a(b)c(d)e	abcde		(0,5)(1,2)(3,4)
520E	(b)c(d)e	bcde		(0,4)(0,1)(2,3)
521E	a(b)(d)e	abde		(0,4)(1,2)(2,3)
522E	a(b)c(d)	abcd		(0,4)(1,2)(3,4)
523E	(ab)(cd)	xabcdy		(1,5)(1,3)(3,5)
524E	a(b)?c		xabcy		(1,4)(2,3)
525E	a(b)?c		xacy	(1,3)(?,?)
526E	a(b)?c(d)?e	xabcdey		(1,6)(2,3)(4,5)
527E	a(b)?c(d)?e	xacdey	(1,5)(?,?)(3,4)
528E	a(b)?c(d)?e	xabcey	(1,5)(2,3)(?,?)
529E	a(b)?c(d)?e	xacey	(1,4)(?,?)(?,?)
530E	a(b)*c		xabcy		(1,4)(2,3)
531E	a(b)*c		xabbbcy	(1,6)(4,5)
532E	a(b)*c		xacy	(1,3)(?,?)
533E	a(b*)c		xabbbcy		(1,6)(2,5)
534E$	a(b*)c		xacy		(1,3)(2,2)
535E	a(b)+c		xacy		NOMATCH
536E	a(b)+c		xabcy		(1,4)(2,3)
537E	a(b)+c		xabbbcy	(1,6)(4,5)
538E	a(b+)c		xabbbcy		(1,6)(2,5)
539E$	a(b)2c		a(b)3c		NOMATCH
540E$	a(b)2c		a(b)3c		NOMATCH
541E$	a(b)2c		a(b)3c		NOMATCH
542E$	\\y(\\w+)\\y	-- abc-		BADESC
543E	a((b|c)d+)+	abacdbd		(2,7)(5,7)(5,6)
544E	(.*).*		abc		(0,3)(0,3)
545E$	(a*)*		bc		(0,0)(0,0)
546
547# multicharacter collating elements
548
549
550# again ugh
551
552{C	C
553
554BE	a[c]e		ace		(0,3)
555BE	a[c]h		ach		(0,3)
556BE	a[[.ch.]]	ach		ECOLLATE
557BE	a[[.ch.]]	ace		ECOLLATE
558BE	a[c[.ch.]]	ac		ECOLLATE
559BE	a[c[.ch.]]	ace		ECOLLATE
560BE	a[c[.ch.]]	ache		ECOLLATE
561BE	a[^c]e		ace		NOMATCH
562BE	a[^c]e		abe		(0,3)
563BE	a[^c]e		ache		NOMATCH
564BE	a[^[.ch.]]	ach		ECOLLATE
565BE	a[^[.ch.]]	ace		ECOLLATE
566BE	a[^[.ch.]]	ac		ECOLLATE
567BE	a[^[.ch.]]	abe		ECOLLATE
568BE	a[^c[.ch.]]	ach		ECOLLATE
569BE	a[^c[.ch.]]	ace		ECOLLATE
570BE	a[^c[.ch.]]	ac		ECOLLATE
571BE	a[^c[.ch.]]	abe		ECOLLATE
572BE	a[^b]		ac		(0,2)
573BE	a[^b]		ace		(0,2)
574BE	a[^b]		ach		(0,2)
575BE	a[^b]		abe		NOMATCH
576
577}
578
579# lookahead constraints
580
581E	a(?=b)b*	ab		(0,2)
582E	a(?=b)b*	a		NOMATCH
583E	a(?=b)b*(?=c)c*	abc		(0,3)
584E	a(?=b)b*(?=c)c*	ab		NOMATCH
585E	a(?!b)b*	ab		NOMATCH
586E	a(?!b)b*	a		(0,1)
587E	(?=b)b		b		(0,1)
588E	(?=b)b		a		NOMATCH
589
590# non-greedy quantifiers
591
592E	ab+?		abb		(0,2)
593E	ab+?c		abbc		(0,4)
594E	ab*?		abb		(0,1)
595E	ab*?c		abbc		(0,4)
596E	ab??		ab		(0,1)
597E	ab??c		abc		(0,3)
598E$	ab2?		ab4?		(0,2)
599E$	ab2?c		ab4?c		NOMATCH
600E	3z*		123zzzz456	(2,7)
601E	3z*?		123zzzz456	(2,3)
602E	z*4		123zzzz456	(3,8)
603E	z*?4		123zzzz456	(3,8)
604
605# mixed quantifiers
606
607
608# this is very incomplete as yet
609
610
611# should include |
612
613E	^(.*?)(a*)$	xyza		(0,4)(0,3)(3,4)
614E	^(.*?)(a*)$	xyzaa		(0,5)(0,3)(3,5)
615E$	^(.*?)(a*)$	xyz		(0,3)(0,3)(3,3)
616
617# tricky cases
618
619
620# attempts to trick the matcher into accepting a short match
621
622E	(week|wee)(night|knights)	weeknights	(0,10)(0,3)(3,10)
623E	a(bc*).*\1			abccbccb	(0,8)(1,2)
624E	a(b.[bc]*)+			abcbd		(0,5)(3,5)
625
626# implementation misc.
627
628
629# duplicate arcs are suppressed
630
631E	a(?:b|b)c	abc		(0,3)
632
633# make color/subcolor relationship go back and forth
634
635BE	[ab][ab][ab]	aba		(0,3)
636BE	[ab][ab][ab][ab][ab][ab][ab]	abababa		(0,7)
637
638# boundary busters etc.
639
640
641# color-descriptor allocation changes at 10
642
643BE	abcdefghijkl	abcdefghijkl		(0,12)
644
645# so does arc allocation
646
647E	a(?:b|c|d|e|f|g|h|i|j|k|l|m)n	agn	(0,3)
648
649# subexpression tracking also at 10
650
651E	a(((((((((((((b)))))))))))))c	abc	(0,3)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)(1,2)
652
653# state-set handling changes slightly at unsigned size (might be 64...)
654
655
656# (also stresses arc allocation)
657
658E$	ab1c		ab100c		NOMATCH
659E$	ab1c		ab100c		NOMATCH
660E$	ab1c		ab100c		NOMATCH
661
662# force small cache and bust it, several ways
663
664E	\w+abcdefgh			xyzabcdefgh		(0,11)
665E	\w+abcdefgh			xyzabcdefgh		(0,11)
666E	\w+abcdefghijklmnopqrst		xyzabcdefghijklmnopqrst	(0,23)
667E	\w+(abcdefgh)?			xyz			(0,3)(?,?)
668E	\w+(abcdefgh)?			xyzabcdefg		(0,10)(?,?)
669E	\w+(abcdefghijklmnopqrst)?	xyzabcdefghijklmnopqrs	(0,22)(?,?)
670
671# incomplete matches
672
673E$	def		abc		NOMATCH
674E$	bcd		abc		NOMATCH
675E$	abc		abab		NOMATCH
676E$	abc		abdab		NOMATCH
677E	abc		abc		(0,3)
678E	abc		abc		(0,3)
679E	abc		xyabc		(2,5)
680E	abc		xyabc		(2,5)
681E$	abc+		xyab		NOMATCH
682E	abc+		xyabc		(2,5)
683E	abc+		xyabc		(2,5)
684E	abc+		xyabcd		(2,5)
685E	abc+		xyabcd		(2,5)
686E	abc+		xyabcdd		(2,5)
687E	abc+		xyabcdd		(2,5)
688E$	abc+?		xyab		NOMATCH
689
690# the retain numbers in these two may look wrong, but they aren't
691
692E	abc+?		xyabc		(2,5)
693E	abc+?		xyabc		(2,5)
694E	abc+?		xyabcc		(2,5)
695E	abc+?		xyabcc		(2,5)
696E	abc+?		xyabcd		(2,5)
697E	abc+?		xyabcd		(2,5)
698E	abc+?		xyabcdd		(2,5)
699E	abc+?		xyabcdd		(2,5)
700E	abcd|bc		xyabc		(3,5)
701E	abcd|bc		xyabc		(3,5)
702En$	.*k		xx\nyyy		NOMATCH
703
704# misc. oddities and old bugs
705
706BE	fix		reg.dat		NOMATCH
707E	a?b*		abb		(0,3)
708E	a?b*		bb		(0,2)
709BE	a*b		aab		(0,3)
710BE	^a*b		aaaab		(0,5)
711BE	[0-6][1-2][0-3][0-6][1-6][0-6]	010010		(0,6)
712
713# temporary REG_BOSONLY kludge
714
715E	abc		abcd		(0,3)
716E	abc		xabcd		(1,4)
717
718# back to normal stuff
719
720E$	(?n)^(?![t#])\\S+	tk\n\n#\n#\nit0		BADRPT
721