
Bonjour, Vous êtes cordialement invités à assister au séminaire qui aura lieu le mercredi 14 juin à 14 heures en amphi P04 (KB). ----------------------------------------------------------------------- Le programme : *OLENA & TRANSFORMERS* http://www.lrde.epita.fr/cgi-bin/twiki/view/Publications/Seminar-2006-06-14 OLENA 14h00 : Dynamisation de bibliothèques C++ statiques -- Tristan Croiset 14h30 : Conception d'un langage statique, un aperçu de SCOOL -- Q. Hocquet T. Moulard TRANSFORMERS 15h45 : Aperçu des Grammaires Attribuées -- Nicolas Pierron 16h15 : eXtended Reactive Modules -- Benoît Sigoure ----------------------------------------------------------------------- Les Résumés des exposés : ************************* OLENA * Dynamisation de bibliothèques C++ statiques -- Tristan Croiset L'utilisation de bibliothèques statiques en C++ est fréquente notamment pour proposer des ensembles d'outils de traitements scientifiques. Cette approche qui permet un développement plus efficace et une importante généricité, cause plusieurs désavantages à l'utilisation et particulièrement des temps de compilation rédhibitoires. Nous avons donc cherché à proposer un pont qui permette de faciliter l'utilisation de ces bibliothèques dans un contexte purement dynamique. Plusieurs travaux ont déjà été réalisés au sein du laboratoire et ont permis d'une part d'en préciser les besoins et d'autre part de démontrer sa faisabilité. Les solutions retenues conservent l'utilisation du C++ et font appel aux bibliothèques statiques via une compilation « juste à temps ». Ce séminaire sera axé sur la proposition d'une solution simple qui doit allier un fonctionnement parfaitement décrit et délimité avec une souplesse suffisante. Nous verrons ensuite comment ce socle stable pourra ensuite servir de base à des extensions d'usage (« sucres ») pour différents cas d'utilisations. * Conception d'un langage statique, un aperçu de SCOOL -- Q. Hocquet T. Moulard Lors du développement d'Olena, deux bibliothèques ont été créées afin de contourner les différentes limitations du C++ : Metalic et Static. Cependant, l'utilisation de ces dernières est loin d'être simple pour un développeur qui ne connaît pas les mécanismes de fonctionnement interne de ces outils. L'utilisation abondante de templates et des subtilités associées à ces derniers rend, de plus, la compréhension de ces bibliothèques difficile. Afin de permettre une écriture simple, la création d'un langage suffisamment expressif pour incorporer dans sa syntaxe les fonctionnalités de Metalic et Static a été décidé. Ce langage doit également être très performant afin de satisfaire les contraintes de rapidité d'exécution liées à Olena. C'est de ce constat qu'est né SCOOL, un langage statique orienté objet. SCOOL est un langage transformé vers C++ : le « compilateur » génère des fichiers C++ qui sont ensuite compilés classiquement. Dans cette optique, il est possible d'incorporer du code C++ directement dans SCOOL. Cette transformation n'est malheureusement pas aisée, à cause de la grande complexité de Metalic, Static ainsi que de la grammaire du C++. Ce séminaire se déroulera en deux parties. Tout d'abord un aperçu des fonctionnalités de SCOOP et de sa syntaxe seront expliqués, puis nous passerons à la façon de transformer cette syntaxe en C++. TRANSFORMERS * Aperçu des Grammaires Attribuées -- Nicolas Pierron La notion de grammaire attribuée fut introduite par Knuth en 1968. Cette notion permet l'implémentation de certaines passes des compilateurs actuels. Les attributs sont des symboles attachés aux règles de la grammaire, ils portent une information telle que le résultat d'une évaluation ou bien une table de symboles. L'information peut être propagée entre les attributs en suivant les règles de la grammaire. Plusieurs types de propagations d'attributs existent, des propagations de haut en bas, de bas en haut, et de gauche à droite. Ces catégories se répartissent sous les noms de L-attributs, S-attributs, et LR-attributs. Les grammaires attribuées permettent de faire de la désambiguïsation, ou de la vérification de types, ... De même, il existe quelques systèmes qui gèrent certains types de propagations, en vérifiant les problèmes de cycles à la compilation de l'évaluateur tel que UU-AG, et le module sdf-attribute du projet Transformers. Cet exposé vous donnera un aperçu des grammaires attribuées, ainsi que des propagations possibles et de la sémantique associée. * eXtended Reactive Modules -- Benoît Sigoure Reactive Modules est un formalisme utilisé pour modéliser des systèmes concurrents. De nombreuses applications de model-checking se basent dessus, dont PRISM. Ce dernier utilise un langage du même nom basé sur une version simplifiée de Reactive Modules. Le langage PRISM a été adopté comme un standard de facto et est utilisé (entre autres) par APMC. Il a néanmoins plusieurs faiblesses : les seuls types disponibles sont les entiers et les booléens, il n'existe pas de structures de contrôle (if, for, etc..). Ce dernier point est probablement le plus gênant car lorsqu'il s'agit de décrire des systèmes conséquents, la spécification devient vite pénible. Certaines personnes mettent au point des solutions « ad hoc » pour pallier ce problème : l'utilisation de scripts shell, du préprocesseur du C (cpp) ou du langage M4 sont des exemples courants. C'est pourquoi eXtended Reactive Modules (XRM) à été créé. Ce package fournis des outils qui permettent de travailler avec une version étendue du langage PRISM. Néanmoins, comme il faut rester compatible avec le parseur de PRISM de base, il faut traduire les systèmes écrits dans la version étendue du langage vers du code PRISM pur. Durant la présentation, nous verrons quelles sont les extensions et les outils proposés par XRM, ainsi que leur fonctionnement, dans le but de faciliter la description de systèmes en PRISM. -- Daniela Becker Responsable administrative du LRDE -- Daniela Becker Responsable administrative du LRDE