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!

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top