Implémentation d'un compilateur élégant et
efficace pour et avec le langage PRM
Encadrants : Roland Ducournau et Jean Privat
Lieu : LIRMM
PRM
est le langage
développé par Jean Privat dans le cadre de
sa
thèse, pour tester un nouveau schéma de compilation et
spécifier diverses fonctionnalités nouvelles.
PRM est actuellement compilé de façon ad hoc : il
s'agirait de développer un beau compilateur, écrit en PRM
et basé sur un méta-modèle du langage ainsi que
sur les techniques de compilation que nous étudions (coloration,
analyse de types, optimisations globales à l'édition de
liens, etc.)
Globalement, le cahier des charges est le suivant :
- L'implémentation du compilateur doit être absolument
fidèle au méta-modèle
du langage, tel que décrit par exemple dans le polycopié
du module UMINM 208.
- Le modèle objet traditionnel est augmenté par des
notions de modules et de raffinement de classes.
- Le principe du compilateur repose sur un nouveau schéma
caractérisé par une compilation
séparée associée à des optimisations globales.
- Les techniques d'implémentation des mécanismes
objets à implémenter sont la coloration (des heuristiques
simples suffiront dans un premier temps, mais le travail de P.
Takhedmit (DEA 2003) pourrait être intégré) et les arbres binaires de dispatch
(générés à l'édition de lien).
- La dialectique séparé/global est basée sur
une analyse de types
intra-classe et inter-classes : une technique simple comme RTA (Rapid Type Analysis) suffira dans
un premier temps.
- Le langage cible du compilateur est le langage C.
- Si le temps le permet, le garbage
collector de N. Desnos (DEA 2004) pourrait être
intégré.
Le module UMINR 325 (Spécifications et Implémentation des
Langages Objets) est un prérequis.
La poursuite en thèse est possible : un sujet de thèse
prolongeant le travail de Jean Privat sera vraisemblablement soumis
à l'Ecole Doctorale I2S.
La bibliographie est celle du cours, et en particulier pour les travaux
menés au LIRMM :
- J. Privat and R. Ducournau.
Link-time Static Analysis for Efficient Separate Compilation of
Object-Oriented Languages
In ACM SIGPLAN-SIGSOFT
Workshop on Program Analysis for Software Tools and Engineering
(PASTE'05), pages , 2005
- J. Privat and R. Ducournau.
Raffinement de classes dans les langages à objets
statiquement typés
In M. Huchard, S. Ducasse et O. Nierstrasz, editors, Actes LMO'05 ,
pages 17--32, 2005
- J. Privat and R. Ducournau.
Intégration d'optimisations globales dans la compilation
séparée des langages à objets
In B. Carré et J. Euzenat, editors, Actes LMO'04 ,
pages 61--74, 2004.
- R. Ducournau.
La coloration pour l'implémentation des langages à
objets à
typage statique
In M. Dao et M. Huchard, editors, Actes LMO'02 , pages
79--98, 2002.
- R. Ducournau.
Implementing statically typed object-oriented programming
languages.
Rapport de Recherche 02-174, L.I.R.M.M., Montpellier, 2002/2005.
- N. Desnos.
Un garbage collector pour la coloration bi-directionnelle.
(ps.gz file)
Mémoire de DEA d'Informatique. Université Montpellier II,
juillet 2004.
- P. Takhedmit.
Coloration de classes et de propriétés :
étude
algorithmique et heuristique.
(ps.gz
file)
Mémoire de DEA d'Informatique. Université Montpellier II,
juillet 2003.
- J. Privat.
Compilation des langages à objets : analyse de types et
graphe
d'appels en compilation séparée.
(pdf file)
Mémoire de DEA d'Informatique. Université Montpellier II,
juillet 2002.