Lexer allow capture group (turn into non-capture group)
Explicitly check for enum type
Improve generic definition of lexer/parser