04 sept. 2012

Modification du générateur de parseurs Coco/R

Cet article est une mise à jour d'un ancien article qui avait disparu de ce blog pour de mystérieuses raisons. Avant sa disparition, il est resté en lignes environ un mois, donc il est probable que peu d'entre vous ait eu le temps de le lire. Vous pouvez maintenant en profiter.

Coco/R, développé par Hanspeter Mössenböck, Markus Löberbauer et Albrecht Wöß de l'Université de Linz est un générateur de compilateurs LL(1). Il permet, avec un seul fichier, de créer un couple scanner/parser intégrable en C++, C#, Java et bien d'autres langages encore. L'intérêt du compilateur généré est qu'il est complètement orienté objet : il ne s'agit pas d'un code procédural qu'il faut tenter d'encapsuler au mieux, comme celui qui pourrait être généré par flex+bison. Le code source généré souffre de quelques problèmes - mais au regard du service rendu, on laissera ceux-ci de coté pour l'instant.

Cet article traite d'une modification que j'ai du effectuer dans le code du générateur lui-même, afin de traiter un cas qui n'était pas prévu par les développeurs. Je me suis basé sur la version C++ datée de Novembre 2010 (la dernière version du code source est disponible sur la page web de Coco/R).

Lire la suite...