L'utilisation parsec de Haskell pour analyser un ByteString
-
21-09-2019 - |
Question
J'ai réussi à utiliser parsec pour analyser une chaîne, mais ne peut pas réussir à faire la même chose avec un ByteString.
Comment puis-je faire fonctionner parsec avec sans les convertir des chaînes ordinaires manuellement à des chaînes?
Je reçois le sentiment que ce n'est pas difficile à accomplir. Ai-je tort? (Je suis nouveau à Haskell. ^^)
Merci!
La solution
Il suffit d'importer le type de Parser
Text.Parsec.ByteString
ou Text.Parsec.ByteString.Lazy
, au lieu de Text.Parsec.String
.
Autres conseils
la réponse dépend en fait de la version de parsec que vous utilisez. Si vous utilisez la version 3.0 ou ultérieure oui. Pour la version 2.x.x Je ne pense pas que vous pouvez.
http: / /hackage.haskell.org/packages/archive/parsec/3.0.1/doc/html/Text-Parsec-ByteString.html
Vive
modifier. Parsec que STH suggère (Text.Parsec.ByteString) est en fait la version 3.0 à la version précédente 2.x.x est situé dans Text.ParserCombinators.Parsec
import Text.Parsec.ByteString ()
vous donnera l'instance
forall m. Stream ByteString m Char
Par conséquent, si vous utilisez, au lieu de Parser a
:
p :: Stream s m Char => ParsecT s u m a