Skip to topic | Skip to bottom
Home
Publications
Publications.Seminar-2004-12-01r1.4 - 20 Nov 2004 - 16:52 - ClementVasseur?topic end

Start of topic | Skip to actions

LRDE Seminar: 01 Décembre 2004, TRANSFORMERS, EPITA, Amphi P004

14h00 : Transformers : transformation de programme en C++ -- Clément Vasseur?

Le projet Transformers, développé au LRDE, a pour objectif de fournir un environnement de transformation de programmes pour le C++. Il est basé sur StrategoXT, un ensemble d'outils qui combinent grammaires hors-contexte, analyseur syntaxique généralisé et réécriture suivant le paradigme des stratégies.

La transformation d'un programme est décomposée en plusieurs étapes indépendantes. D'abord, un analyseur syntaxique généralisé utilise la grammaire ambiguë du standard ISO pour produire un ensemble d'arbres de syntaxe à partir d'un code source. Puis la phase de désambiguïsation sélectionne l'unique arbre qui correspond à l'entrée. Celui-ci est alors transformé, puis reconverti en C++ pour obtenir le code transformé. De plus, Transformers propose une grammaire attribuée du C99, les attributs étant utilisés pour la désambiguïsation.

Cette présentation a pour but d'introduire cet environnement, afin de faire le point sur les technologies mises en oeuvre, l'architecture du projet, les résultats obtenus ainsi que les directions à suivre pour le faire évoluer.

14h30 : Grammaires attribuées adaptées à la désambiguïsation du C++ -- Valentin David

Transformers est un ensemble d'outils permettant la manipulation de C++ en StrategoXT. Cependant, le C++ est loin d'être un langage facile à analyser. L'approche habituelle (id est pour les grammaires hors-contexte) n'est pas applicable. Une solution est d'utiliser les grammaires attribuées. Il s'agit d'exprimer des règles de désambiguïsation dépendantes du contexte dans une sur-grammaire hors-contexte ambiguë.

Cependant, certains problèmes tels que ceux liés à la gestion des patrons de types (template), nous empêchent d'utiliser un système de grammaires attribuées classique. Cet présentation a pour but d'expliquer les limitations des systèmes classiques et d'introduire les évolutions nécessaires pour la désambiguïsation du C++.

15h30 : Vérification de type en C++: étude des solutions existantes -- Julien Roussel?

La vérification de type en C++ dans le cadre de la grammaire standard a déjà été analysée et ses problèmes sont connus. L'analyse syntaxique du C++ ne peut être effectuée que si son typage est pris en compte. Ainsi la vérification de type est nécessaire dès la phase d'analyse syntaxique, faisant de cette dernière une étape complexe du processus de compilation.

Actuellement, de nombreux outils manipulant du C++, tels que des compilateurs ou des générateurs de documentation, utilisent des techniques variées pour l'analyse syntaxique, et donc pour le typage. Il est intéressant de se pencher sur les méthodes utilisées afin d'en tirer des enseignements pour l'évolution de Transformers, l'environnement de transformation de programmes du LRDE.

Le but de cette présentation est donc d'étudier les différentes méthodes mises en oeuvre pour typer le C++. Après avoir rappelé brièvement les soucis posés par la vérification de type en C++, plusieurs outils seront analysés: Doxygen, OpenC++, GCC, et d'autres.

16h15 : Désambiguïsation sémantique : comparaison de plusieurs approches -- Clément Vasseur?

Les grammaires hors-contexte et l'analyse syntaxique généralisée sont de plus en plus utilisées car ces technologies permettent d'analyser des langages réels en utilisant un formalisme simple et naturel. Ainsi, des environnements de transformation de programme tels que ASF+SDF ou StrategoXT sont des outils solides pour entreprendre le traitement de n'importe quel langage.

De manière générale, les grammaires hors-contexte permettent de spécifier des langages ambigus. À partir de là, un analyseur syntaxique généralisé produit un ensemble d'arbres de syntaxe, un pour chaque interprétation possible du texte d'entrée. Cette forêt de syntaxe doit être traitée par la suite, afin de sélectionner l'arbre qui correspond à l'entrée en prenant en considération les règles sémantiques. Cette étape est appelée le processus de "désambiguïsation".

Lors de cette présentation, nous décrirons trois méthodes différentes pour effectuer cette désambiguïsation sémantique : la réécriture de termes guidée par une spécification algébrique (ASF+SDF), ou en utilisant des stratégies non-prédéfinies (StrategoXT), ou alors en utilisant le formalisme des grammaires attribuées. Nous discuterons des points forts et des points faibles de chacune des approches.
to top


You are here: Publications > Seminar-2004-12-01

to top

Copyright © 1999-2013 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback