[Annonce] [Séminaire CSI] : mercredi 16 mai 2007

Bonjour, Vous êtes tous cordialement invités à assister au séminaire qui aura lieu le mercredi 16 mai 2007 à 14 heures en Amphi 2 (KB). ----------------------------------------------------------------------- Le programme : *Olena, Transformers et DD* http://www.lrde.epita.fr/cgi-bin/twiki/view/Publications/Seminar-2007-05-16 OLENA 14h00 : Une bibliothèque de conteneurs en C++ via SCOOP -- Thomas Moulard DD 14h30 : Diagrammes de décision à valeurs supprimées -- Samuel Charron TRANSFORMERS 15h00 : Préprocesseur C/C++ reversible -- Quentin Hocquet 15h45 : Définition formelle de la Désambiguïsation avec des Grammaires Attribuées -- Nicolas Pierron 16h15 : Désambiguïsation guidée par la sémantique -- Renaud Durlin 16h45 : Centaur : Une infrastructure pour la transformation de C ++ -- Benoit Sigoure ----------------------------------------------------------------------- Les Résumés des exposés : ************************** OLENA Une bibliothèque de conteneurs en C++ via SCOOP -- Thomas Moulard SCOOP est le paradigme de programmation utilisé par Olena. Il permets l'expression de mécanismes utiles qui ne sont pas directement disponibles dans le C++ actuel tels que les concepts, les types virtuels ou bien les where-clauses. Ce paradigme présente également l'avantage d'être très rapide et sur car l'ensemble des vérifications sont réalisées à la compilation. Ces outils peuvent également être utilisés dans d'autres contextes tels que la réécriture de la bibliothèque de conteneurs du C++ comme nous le verrons ici. Cette présentation se déroulera en trois parties. Tout d'abord, un tour d'horizon rapide du paradigme sera réalisé. Puis, on expliquera comment implémenter une hiérarchie SCOOP via les outils fournis par les bibliothèques d'Olena. Enfin, la nouvelle bibliothèque de conteneurs sera présentée, ainsi que les nouvelles possibilités offertes par rapport à la bibliothèque traditionnelle. En particulier, celle-ci permets l'écriture de morphers pouvant effectuer des transformations sur les types de conteneurs. DD Diagrammes de décision à valeurs supprimées -- Samuel Charron Les diagrammes de décision sont des structures permettant de représenter de grands ensembles de données. Le partage de données communes aux éléments de l'ensemble permet une grande compacité en mémoire. Différentes techniques ont déjà été proposées pour certaines familles de diagrammes de décisions afin de réduire encore l'utilisation mémoire. L'une d'elles, la réduction, existe dans le domaine des Diagrammes de Décision Binaires (BDD). En appliquant cette technique aux Diagrammes de Décisions de Données (DDD), nous espérons un gain de mémoire. Cependant, la définition de la réduction doit être adaptée aux DDD et SDD (Set Decision Diagrams) afin de conserver leurs propriétés. De même la manipulation usuelle des DDD doit être adaptée pour tenir compte de la réduction. Durant la présentation, nous verrons comment nous avons réalisé l'adaptation de la réduction des BDD aux DDD. Puis à travers une implémentation générique des diagrammes de décision, nous montrerons les abstractions réalisées afin de pouvoir utiliser de manière générique cette technique aussi bien pour les BDD, que pour les DDD et SDD. TRANSFORMERS Préprocesseur C/C++ reversible -- Quentin Hocquet La transformation de programme C++ présente une difficulté supplémentaire par rapport à la plupart des autres langages: la phase de preprocessing. Il s’agit d’une étape complexe, dans la mesure où elle n’a absolument pas été pensée pour être inversible. Pourtant l’utilisateur d’un système de transformation de C++ souhaite retrouver son code d’origine, avec les directives de compilation et la mise en page initiale. Ce séminaire présentera les techniques utilisées pour rendre le processus réversible et pour créer sa réciproque. Définition formelle de la Désambiguïsation avec des Grammaires Attribuées -- Nicolas Pierron Le problème actuel de la désambiguïsation dans Transformers avec des grammaires attribuées est que l'on ne possède pas de preuve permettant de certifier cette approche. L'usage actuel des grammaires attribuées pour la désambiguïsation du C et d'une partie du C++ laisse à penser que cette méthode est correcte. Afin de supprimer tout doute, une définition et une formalisation de notre approche est nécessaire. Ce travail comporte deux volets. La première partie porte sur la preuve de la validité de l'approche utilisée dans Transformers. La seconde partie est consacrée à la correction et au re-développement des outils existants afin de correspondre au modèle défini. Désambiguïsation guidée par la sémantique -- Renaud Durlin Une approche élégante pour gérer les grammaires ambiguës consiste à utiliser un parseur LR généralisé qui produira non pas un arbre mais une forêt de parse. Une étape supplémentaire, appelée désambiguisation, survenant juste après le parsing, est alors nécessaire. Celle-ci consiste à analyser cette forêt pour obtenir l'unique arbre valide correspondant à l'entrée en prenant en compte les règles de sémantiques contextuelles. C'est cette approche qui a été retenue dans Transformers avec le formalisme des grammaires attribuées. Le travail effectué présentera une comparaison entre ce formalisme et deux autres techniques de désambiguisation : la première à l'aide d'ASF+SDF et la deuxième à l'aide du langage Stratego. Le but de cette comparaison sera double : montrer que les grammaires attribuées sont parfaitement adaptées à ce problème et exhiber les faiblesses de celles-ci par rapport aux deux autres méthodes en vue d'une amélioration possible du système utilisé dans Transformers. Centaur : Une infrastructure pour la transformation de C ++ -- Benoit Sigoure Transformers a choisi de suivre la grammaire du standard pour ses parseurs de C et C++. Ces grammaires ayant été conçues pour des parseurs LALR, elles sont relativement difficiles à manipuler lorsqu'il s'agit d'écrire des transformations ou faire de l'analyse statique. Le but de Centaur est de fournir aux utilisateurs de Transformers une bibliothèque de fonctions permettant de manipuler aisément du code C++. Elle permettra d'accéder simplement aux informations disponibles dans l'AST et ses annotations (pour répondre à des requêtes telles que: lister les éléments d'un namespace, rechercher des méthodes dans une class en fonction de plusieurs critères, lister les class parentes d'une class, etc.) -- Daniela Becker
participants (1)
-
Daniela Becker