Some other points worth mentioning
- The generated lexer supports Unicode.
- The first passes of the lexer preserves comments and white
space. This turned out to be useful when reusing the lexer in an
Haskell-to-HTML converter.
- How is the "maximal munch" rule implemented?