explain why the pre-lexer exists