Next: Travaux Théoriques
Up: Le système FNC-2
Previous: Le système FNC-2
La définition du langage OLGA (Ouf! un Langage pour les Grammaires Attribuées)
a comme principal objectif la facilité, la sûreté d'utilisation et la souplesse
d'emploi. Cela est dû à la conjonction des deux concepts suivants:
- Le langage d'écriture de GA (la forme externe) est un langage spécialisé
conçu pour cet unique objet, et non plus un langage existant, simplement
augmenté de notations supplémentaires. Ce langage, nommé OLGA
[JPJ90,JP91,JP92] est un langage applicatif et
fortement typé, deux conditions indispensables pour offrir à l'auteur de
grammaires attribuées une très grande sécurité dans sa programmation. De
plus, OLGA inclut des concepts modernes, comme le traitement
d'exception, la modularité, le filtrage de modèles, l'inférence de type
et le polymorphisme. De plus, la base
syntaxique des GA est une syntaxe abstraite attribuée, permettant à
l'auteur de se libérer des contraintes souvent excessives de la syntaxe
concrète. Cette approche a été largement inspirée des travaux de l'équipe
CROAP sur le même sujet: le langage METAL . Pour ce faire, on a
défini les deux langages suivants: ASX pour décrire une syntaxe
abstraite attribuée (déclaration d'un type d'arbre), et ATC pour
définir la construction d'un tel arbre à l'aide d'un analyseur
lexico-syntaxique classique (comme SYNTAX). OLGA est
certainement un langage très ambitieux dans ses concepts de base, mais il
nous fallait un langage qui se suffise à lui-même, aussi complet que
possible. En d'autres termes, ce langage ne doit en aucun cas être un
langage ``jouet'' permettant uniquement de valider les méthodes
d'évaluation introduites par le générateur d'évaluateur (cf. la
section 2.2) mais un langage permettant de
développer des applications en réelle grandeur.
- La souplesse d'emploi vient de l'indépendance totale de la spécification
par rapport à son implantation, ce qui se traduit par plusieurs
propriétés pour le code produit, les évaluateurs. Ils peuvent être
traduits dans plusieurs langages. Notre première cible a été le langage
C puisque le générateur est écrit dans ce même langage, mais d'autres
traducteurs ont vu le jour au cours des développements ultérieurs. Ils
peuvent être produits soit en version exhaustive, soit en version
incrémentale. Ils peuvent être couplés à divers environnements, le
langage ASX jouant le rôle de la déclaration des interfaces.
L'ensemble de ces spécifications nous a amené à lancer un projet ambitieux. La
conception et la réalisation de ce système ne peuvent donc être vues que comme
le travail d'une équipe, composée de Martin et de moi-même (pour les
permanents), sans oublier les différents stagiaires (27) et thésards
(5 + 1) (voir les listes des stages et thèses) qui ont, ou qui vont participer
à des points particuliers du projet. À cause du caractère ambitieux de ce
système, nous avons adopté au cours de sa réalisation, une démarche de
construction par étapes successives. Ainsi, le système est le résultat d'une
superposition de processus à finalités différentes. Il se compose
essentiellement des deux parties suivantes: le générateur d'évaluateur, qui
réalise la partie purement grammaire attribuée et, autour de ce dernier, un
ensemble de modules (la carrosserie [JP]) qui réalisent les
interfaces vis-à-vis des utilisateurs.
Pendant ma thèse (86-88), ma contribution a porté essentiellement
sur le cur du système --- le générateur d'évaluateur ---, principalement sur
la mise en uvre de nouvelles méthodes d'évaluation d'attributs (ou
amélioration de méthodes existantes), dans le but de satisfaire nos deux
premières exigences --- c'est-à-dire une grande puissance d'expression et une
efficacité à tous les points de vue du code produit. Au cours de la préparation
de ma thèse [Par87,Par88], j'ai défini les bases théoriques de ce
générateur et réalisé un premier prototype (fin
1987). Puis pendant les années 88-90, je me suis concentré sur l'ensemble des
modules qui réalisent les interfaces vis-à-vis des utilisateurs pour constituer
la première version du système FNC-2 (Frond-end OLGA et Traducteur vers C).
Puis, à partir de ce prototype, un ensemble de travaux de recherche ont été
développés lors de stages ou de thèses. J'ajouterais que l'objectif de la
réalisation du système FNC-2 (la nécessité ou les objectifs d'une réalisation
lourde d'un système sont souvent mal compris) était bien de faciliter par la
suite le développement de futurs travaux de recherche. Le système FNC-2 a joué
pleinement son rôle d'outil de recherche dans les années qui ont suivi la
sortie du premier prototype. En effet, je pense avoir réalisé en grande partie
le programme scientifique que j'avais défini lors de ma promotion en tant que
chargé de recherche de classe en 1991.
Comme dit précédemment, l'ensemble des travaux présentés ici sont l'uvre d'une
équipe de recherche mais malgré tout, l'implantation du système et
l'organisation de sa réalisation a été presque de mon unique ressort et j'ai
personnellement assuré en grande partie l'encadrement des différents stagiaires. Pour
bien faire comprendre la cohérence de l'ensemble de mes travaux (encadrement de
stagiaires), j'ai préféré regrouper mes activités par sujets en y ajoutant les
travaux des stagiaires et thésards correspondants.
Ainsi mon activité de recherche peut donc se décomposer de la manière suivante,:
- Travaux Théoriques :
- Transformation de grammaires attribuées;
- Optimisation mémoire;
- Analyse de flot de grammaire;
- Évaluation incrémentale;
- Évaluateurs d'attributs sur machines parallèles;
- Généricité dans les Grammaires Attribuées;
- La méta-composition des GA (composition descriptionnelle);
- Les GAs Dynamiques : Une nouvelle vision des GAs;
- Mises à jour destructives dans les GAs;
- Relation avec la programmation fonctionnelle;
- Programmation dirigée par la structure et déforestation;
- Évaluation indulgente (sous-classe de l'évaluation paresseuse);
- Sémantique dénotationnelle;
- Transformation d'arbres attribués.
- Participation à des Projets Européens :
- Projet Esprit COCOS ;
- Projet Esprit MULTIWORK ;
- Opération INTERSEM financée par le GRECO programmation ;
- Projet Esprit COMPARE ;
- Implantation et Développement de FNC-2 ;
- Mise en place d'outils de développement partagé ;
- Évolution des langages de spécification de FNC-2 ;
- Le constructeur d'arbres abstraits ATC ;
- Glaneur de cellules;
- Compilation du filtrage d'arbres;
- Le générateur de décompilateurs PPAT ;
- Interface graphique pour FNC-2 ;
- Le traducteur vers CAML ;
- Support technique et organisation d'un groupe de recherche;
- Encadrement des stagiaires (27 stages de DEA et 5 + 1 thèses).
Next: Travaux Théoriques
Up: Le système FNC-2
Previous: Le système FNC-2
Didier Parigot
Mon Apr 7 11:02:46 MET DST 1997