lexer: Reimplement for better testability and internationalization.