Je voudrais utiliser le makeTokenParser
de Parsec pour construire mon analyseur, mais je veux utiliser ma propre définition de whiteSpace
. Ce qui suit remplace whiteSpace
par ma définition, mais tous les parseurs lexeme
utilisent toujours l'ancienne définition (par exemple P.identifier lexer
utilisera l'ancien whiteSpace).Custom whiteSpace utilisant Haskell Parsec
...
lexer :: P.TokenParser()
lexer = l { P.whiteSpace = myWhiteSpace }
where l = P.makeTokenParser myLanguageDef
...
En regardant le code pour makeTokenParser
Je pense que je comprends pourquoi cela fonctionne de cette façon. Je veux savoir s'il existe des solutions de contournement pour éviter de dupliquer complètement le code pour makeTokenParser
?
Connexes: http://stackoverflow.com/questions/5672142/in-parsec-is-there-a-way-to-prevent-lexeme-from-consuming-newlines –