Me gustaría utilizar el makeTokenParser
de Parsec para construir mi analizador, pero quiero usar mi propia definición de whiteSpace
. Hacer lo siguiente reemplaza whiteSpace
con mi definición, pero todos los analizadores lexeme
todavía usan la definición anterior (por ejemplo, P.identifier lexer
usará el viejo whiteSpace).Espacio en blanco personalizado con Haskell Parsec
...
lexer :: P.TokenParser()
lexer = l { P.whiteSpace = myWhiteSpace }
where l = P.makeTokenParser myLanguageDef
...
Mirando el código para makeTokenParser
creo que entiendo por qué funciona de esta manera. Quiero saber si hay alguna solución alternativa para evitar duplicar por completo el código de makeTokenParser
?
Relacionados: http://stackoverflow.com/questions/5672142/in-parsec-is-there-a-way-to-prevent-lexeme-from-consuming-newlines –