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 :
  1. 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.
  2. Le modèle objet traditionnel est augmenté par des notions de modules et de raffinement de classes.
  3. Le principe du compilateur repose sur un nouveau schéma caractérisé par une compilation séparée associée à des optimisations globales.
  4. 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).
  5. 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.
  6. Le langage cible du compilateur est le langage C.
  7. 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 :
  1. 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

  2. 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

  3. 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.

  4. 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.

  5. R. Ducournau.
    Implementing statically typed object-oriented programming languages.
    Rapport de Recherche 02-174, L.I.R.M.M., Montpellier, 2002/2005.

  6. N. Desnos.
    Un garbage collector pour la coloration bi-directionnelle. (ps.gz file)
    Mémoire de DEA d'Informatique. Université Montpellier II, juillet 2004.

  7.  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.

  8. 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.