• # Lex et unicode

    Posté par . En réponse à la dépêche Utiliser lex et yacc dans vos programmes C/C++. Évalué à 2.

    Il y a qq années, je m'étais penché sur l'implémentation d'un parseur XML basé sur flex (juste pour m'amuser).

    J'avais tout de suite laissé tombé parce que selon la norme XML, le fichier peut être encodé en ASCII (ou tout jeu de caractères sur 8 bits -- Latin1, etc.), en UCS16, en UCS32 ou en UTF8. Et pour gérer UCS16 ou UCS32 il faut pouvoir gérer des wchar.

    Il me semble que flex supporte les char et les wchar, mais le choix devait être fait à la compilation, alors que pour parser un fichier XML, il faut déterminer l'encodage à la lecture, entre autres en se basant sur le fait que le fichier commence par <?, selon les recommendations du W3C.
    Intégrer la variabilité de l'encodage dans les expressions régulières était ingérable!

    Morale: lex et yacc font déjà beaucoup, mais ils ne peuvent pas tout faire.

    Rq: Tout ça date un peu, donc excusez les erreurs ou imprécisions.