Project

General

Profile

Wiki » History » Version 2

Version 1 (Pierre-Loïc Garoche, 01/15/2013 02:24 PM) → Version 2/94 (Pierre-Loïc Garoche, 01/15/2013 02:42 PM)

h1. Wiki

h2. Cahier des charges

Objectifs
* L'outil doit être capable de charger un fichier Lustre (extension .lus), et de l'afficher graphiquement
* Il doit également permettre d'éditer ce fichier et de sauver les modifications dans le fichier Lustre, mais également de partir de la feuille blanche
* Une boite à outils doit permettre de construire de nouveaux modèles ou parties de modèles à l'aide d'une palette de primitives et de fonctions (nœuds) déjà définis dans le modèle.
* Un modèle Lustre doit pouvoir être vu soit comme une librairie de nœuds, soit comme un programme avec un nœud principal.


Instructions:
* Utiliser Ober Designer [[http://www.obeodesigner.com/]]
* Adopter une approche MDE:
** un metamodèle pour le Lustre textuel, un metamodèle pour le Lustre graphique et de la transformation de modèle entre les deux: Obeo Designer

h2. Le langage Lustre

Lustre est un langage synchrone décrivant des programmes réactifs, càd cad des programmes dont le contenu est répété infiniment souvent: lecture des valeurs des capteurs (entrées) - calcul - envoi de commandes aux actuateurs (sorties).

Un modèle/programme Lustre est composé d'un ensemble de nœuds. Un nœud est une sorte de fonction ou d'objet (au sens OO) prenant des flux entrées et produisant des flux sorties. La définition de chaque nœud repose elle-même sur l'utilisation d'autres nœuds.

Un nœud peut être représenté graphiquement par une boite avec n-fils d'entrées et m-fils de sorties pour les n entrées et m sorties.

h3. Références pour Lustre

* The Lustre Language, notes by P. Raymond and N. Halbwachs [[http://www.divms.uiowa.edu/~pgaroche/181/Notes/08-lustre.pdf]] Utiliser Ober Designer [[http://www.obeodesigner.com/]]
* Un parseur/lexeur en Ocaml (document de référence principal) [[lien sur le svn]]
* Un début d'adaptation au xtext [[lien sur le svn]]
* Des exemples de code Lustre:
** sur le svn Prelude: svn co https://svn.onera.fr/Prelude/Prelude/branches/lustre_compiler/sandbox/benchmarks
* Un compilateur Lustre vers C
** sur le svn Prelude: svn co https://svn.onera.fr/Prelude/Prelude/branches/lustre_compiler