Switched to monadic lexer. Pretty painful, but seems to work.
Added case-insensitive keywords.