TO DO
- Convert the escapes in character and string literals.
- See if size of the DFA can be reduced by eliminating equivalent states...
- Make some of the handwritten parts more readable.
- Make the regular expression compiler more readable.
- Update it to the revised Haskell 98 report.
- ...