##   Enumerated character lists
<[c]>			abcdef		y	character class
<[ z ]>			abc def		n	character class ignores ws
<[dcb]>**3		abcdef		y	repeated character class
^<[a]>			abcdef		y	anchored character class
<-[e]>			abcdef		y	negated character class
^<[a]>?			abcdef		y	anchored optional character class
<-[e]>?			abcdef		y	negated optional character class
<-[dcb]>**3		abcdef		n	repeated negated character class
^<-[e]>			abcdef		y	anchored negated character class
^<-[a]>			abcdef		n	anchored negated character class
<[b..d]>		abcdef		y	character range
<[b .. d]>		c		y	character range ignores ws
<[b..d]>		abxxef		y	character range
<[b..d]>		axcxef		y	character range
<[b..d]>		axxdef		y	character range
<[b..d]>		axxxef		n	character range
<-[b..d]>		abcdef		y	negated character range
<- [b..d]>		abcdef		y	negated allows ws
<-[b..d]>		bbccdd		n	negated character range
<-[d..b]>		bbccdd		[Illegal reversed character range in regex]	illegal character range
<[x-z]>			ab-def		[Unsupported]	perl5 range
<[-]>			ab-def		y	unescaped hyphen, the only thing
<[ - ]>			ab-def		y	unescaped hyphen, the only thing w spaces
<[x-]>			ab-def		y	unescaped hyphen, at the end
<[x - ]>		ab-def		y	unescaped hyphen, at the end w spaces
<[-x]>			ab-def		y	unescaped hyphen, at the beginning
<[ -x]>			ab-def		y	unescaped hyphen, at the beginning w spaces
<[\-]>			ab-def		y	escaped hyphen
<[\-]>			abcdef		n	escaped hyphen
<-[\-]>			---x--		y	negated escaped hyphen
<-[\-]>			------		n	negated escaped hyphen
<[\-+]>			ab-def		y	escaped hyphen in range
<[\-+]>			ab+def		y	escaped hyphen in range
<[\-+]>			abcdef		n	escaped hyphen in range
<[+\-]>			ab-def		y	escaped hyphen in range
<[+\-]>			ab+def		y	escaped hyphen in range
<[+\-]>			abcdef		n	escaped hyphen in range
<-[\-+]>		---x--		y	negated escaped hyphen in range
<-[\-+]>		------		n	negated escaped hyphen in range
<-[+\-]>		---x--		y	negated escaped hyphen in range
<-[+\-]>		------		n	negated escaped hyphen in range
<["\\]>			\\			y	escaped backslash
<[\]]>			]			y	escaped close bracket
<[\]>			\\]]		[Unrecognized]	unescaped backslash (or no closing brace)
^\><[<]>		><		y	lt character class
^<[>]>\<		><		y	gt character class
^<[><]>**2		><		y	gt, lt character class
^<[<>]>**2		><		y	lt, gt  character class
^<-[><]>		><		n	not gt, lt character class
^<-[<>]>		><		n	not lt, gt  character class
'... --- ...'		... --- ...	y	literal match (\')
'... --- ...'		...---...	n	literal match (\')
'ab\'>cd'		ab'>cd		y	literal match with quote
'ab\\yz'		ab\x005cyz	y	literal match with backslash
'ab"cd'			ab"cd		y	literal match with quote
'ab\\yz'		ab\x005cyz	y	literal match with backslash
"... --- ..."		... --- ...	y	literal match (\")
"... --- ..."		...---...	n	literal match (\")
"ab<\">cd"		ab<">cd		y	literal match with quote
"ab<'>cd"		ab<'>cd		y	literal match with quote
"ab\\cd"		ab\x005ccd	y	literal match with backslash
# todo :any<feature>
(ab)x"$0"		abxab		y	literal match with interpolation
# todo :any<feature>
(ab)"x$0"		abxab		y	literal match with interpolation
'?'			ab<?		y	literal match with question mark
'<'			ab<?		y	literal match with lt
'<?'			ab<?		y	literal match with lt and question mark
'<?'			ab<x?		n	non-matching literal match
<[A..Z0..9]>		abcdef		n	two enumerated ranges
<[A..Z0..9]>		abcDef		y	two enumerated ranges

abc <![d]>		abc		y	negated charclass at end of string (issue 9)

<[abc]-[a]>		abc		<b>		character class substraction 1
<[abc]-[a]>+	abc		<bc>	character class substraction 2
<[abc]-[\w]>	abc		n		character class substraction 3
<[abc]-[a\w]>	abc		n		character class substraction 4
<[abc]-[\W]>	abc		<a>		character class substraction 5
<[abc]-[\W]>+	abc		<abc>	character class substraction 6
<[abc]-[a\W]>	abc		<b>		character class substraction 7
<[abc]-[a\W]>+	abc		<bc>	character class substraction 8
<[abc]-[ab\Wc]>	abc		n		character class substraction 9
<[ab1]-[\w\d]>	ab1		n		character class substraction 10
<[ab1]-[\w1]>	ab1		n		character class substraction 11
<[ab1]-[ab1]>	ab1		n		character class substraction 12
<[ab1]-[a\d]>	ab1		<b>		character class substraction 13
<[ab1]-[a\d]>+	ab1		<b>		character class substraction 14
<[abc]-[a\d]>	ab123c	<b>		character class substraction 15
<[abc]-[a\d]>+	ab123c	<b>		character class substraction 16
<[\w]-[\d]>		a		<b>		character class substraction 17
<[\w]-[\d]>+	ab		<b>		character class substraction 18
<[\w]-[\D]>		1		<b>		character class substraction 19
<[\w]-[\D]>+	123		<b>		character class substraction 20

<[\ ]>			a b		y		space in character class escaped with backslash

<[\«]>			«		y		test for regression introduced with parrot 6.9.0

## Lookarounds over character classes
<?[\s a]> .		aa		<mob: a @ 0>	lookahead over a mixed character class does not consume
<?[\N a]>		ab		<mob:  @ 0>		lookahead over a mixed character class is zero width
<![\s a]> .		bb		<mob: b @ 0>	negated lookahead over a mixed character class matches when neither part does
<![\s a]> .		aa		n				negated lookahead over a mixed character class fails on the character part
<![\s a]> .		\x0020a	n				negated lookahead over a mixed character class fails on the backslash part
<![\s a]>		''		y				negated lookahead over a mixed character class matches at the end of the string
<![a \s]> .		ab		<mob: b @ 1>	negated lookahead over a mixed character class whose first part matches moves on
<?[a] - [b]> .	aa		<mob: a @ 0>	lookahead over a character class subtraction does not consume
<![a] - [b]> .	bb		<mob: b @ 0>	negated lookahead over a character class subtraction matches a subtracted character
<![a] - [b]> .	aa		n				negated lookahead over a character class subtraction fails on a remaining character
<?[a] - [\s b]> .	aa		<mob: a @ 0>	lookahead over a subtraction of a mixed character class does not consume
<![\w] - [\d _]> .	\x0020	<mob:   @ 0>	negated lookahead over a subtraction of a mixed character class matches an excluded character
<?[a 1] - digit> .	aa		<mob: a @ 0>	lookahead over a subtraction of a named character class does not consume
<?-[\s a]> .	bb		<mob: b @ 0>	lookahead over a negated mixed character class does not consume
<!-[\s a]> .	aa		<mob: a @ 0>	negated lookahead over a negated mixed character class matches an excluded character
[<![\s a]> .]+	xyz a	<mob: xyz @ 0>	negated lookahead over a mixed character class inside a quantifier
[<![\s a]> .] ** 2	xyz		<mob: xy @ 0>	negated lookahead over a mixed character class inside a bounded quantifier
[<?[\s a]> (.)]+ a	aaa		<mob[0][1]: a @ 1>	quantified lookahead group backtracks by whole iterations
[<?[\s a]> b | a]	ab		<mob: a @ 0>	failing atom after a lookahead group backtracks into the next alternative
[<?[\s a]> b || a]	ab		<mob: a @ 0>	failing atom after a lookahead group backtracks into the next sequential alternative
a [<![\s a]> . | a]	aab		<mob: aa @ 0>	failing negated lookahead group backtracks into the next alternative
$<x>=[<?[\s a]> .] | $<y>=[..]	ab	<mob<y>: ab @ 0>	longest token matching counts a lookahead group as one character
(<?[\s a]>) (.)	aa		<mob[0]:  @ 0>	capture around a lookahead group is empty
<[a] + [\S]>	b		y				plus sign keeps a negated backslash sequence as a union
<[a] - []>		a		y				subtracting an empty enumeration leaves the class alone
<?[a] - []> a	a		y				lookahead over a class subtracting an empty enumeration leaves the class alone
<![a] - []> .	bb		<mob: b @ 0>	negated lookahead over a class subtracting an empty enumeration matches an excluded character
<?[]>			a		n				lookahead over an empty enumeration never matches
<![]> a			a		y				negated lookahead over an empty enumeration always matches
$<x>=[<?[a] - [b]> . 'b'] | $<y>=[. 'bb']	ab	<mob<x>: ab @ 0>	longest token matching falls through to a lookahead over a subtraction

# todo 2 :jvm<combining characters need NFG>
<[b\x[308]]>	b\x0308	y	base character and adjacent combining escape form one entry
<[b\x[308]]>	b	n	base character that forms one entry with a combining escape is not an entry on its own

## vim: noexpandtab tabstop=4 shiftwidth=4
