¿Debo usar un lexer cuando utilizo una biblioteca combinadora de analizadores como Parsec?

Al escribir un analizador en una biblioteca de combinadores de analizador como el Parsec de Haskell, normalmente tiene 2 opciones:

Escribe un lexer para dividir tuString entrada en tokens, luego realizar el análisis en[Token]Escribir directamente los combinadores de analizador enString

El primer método a menudo parece tener sentido dado que muchas entradas de análisis se pueden entender como tokens separadas por espacios en blanco.

En otros lugares, he visto a personas recomendar no tokenizar (oexploración olexing, cómo algunos lo llaman), siendo la simplicidad la razón principal.

¿Qué son las compensaciones generales entre el lexing y no hacerlo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta