[Haskell-fr] Re: [Parsec] Analyser de l'UTF-8 ?

Stephane Bortzmeyer stephane+haskell-fr at bortzmeyer.org
Fri Feb 9 10:28:45 EST 2007


On Wed, Jan 10, 2007 at 10:30:28PM +0100,
 Stephane Bortzmeyer <stephane+haskell-fr at bortzmeyer.org> wrote 
 a message of 22 lines which said:

> J'ai un programme (http://www.cosmogol.fr/shadok.html) qui utilise
> Parsec pour l'analyse syntaxique. Le langage qu'il analyse est en
> ASCII pur. Maintenant, des utilisateurs réclament de l'Unicode
> (encodé en UTF-8).

Bon, finalement, Parsec a l'air de très bien se débrouiller, c'étaient
les E/S en UTF-8 (pour lesquelles il n'y a rien de standard en
Haskell) qui étaient (sont toujours) le plus dur.

Donc, avec l'aide de Eric Kow, voici une solution qui marche :

1) Récupérer le code UTF-8 de darcs :
http://abridgegame.org/repos/darcs/UTF8.lhs

2) Avoir un module d'E/S UTF-8 (UTF8_IO.hs, attaché, très copié du
code d'Eric Kow en http://www.haskell.org/haskellwiki/UTF-8)

3) Le code Parsec s'écrit comme d'habitude. Par exemple, si on met :

word  = many1 letter

"letter" désignera bien toutes les lettres Unicode, pas juste celles
de l'ASCII (je n'ai pas trouvé lesquelles il acceptait ; cela ne
semble pas documenté et je soupçonne qu'il utilise simplement ce que
lui renvoie isAlpha).

Si on veut choisir soi-même les caractères Unicode acceptés, pour
mettre en oeuvre une liste comme
http://www.w3.org/TR/REC-xml/#NT-Letter, satisfy est bien pratique
(voir exemple attaché).

-------------- next part --------------
A non-text attachment was scrubbed...
Name: UTF8_IO.hs
Type: text/x-haskell
Size: 1258 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-fr/attachments/20070209/bed4dcda/UTF8_IO.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: words.hs
Type: text/x-haskell
Size: 1237 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-fr/attachments/20070209/bed4dcda/words.bin


More information about the Haskell-fr mailing list