Master 1 Informatique
Option Compilation
Compilation d'un langage parallèle
Projet à faire en binôme
à rendre au plus tard le 6 mai 9:00

Les fichiers Projet.y, Projet.lex et symtab.c contiennent un compilateur vers mmixal pour un mini-langage contenant des affectations, boucles, instructions conditionnelles et déclarations et appels de fonctions.

La grammaire contient aussi la possibilité d'avoir des blocs parallèles (par{ liste }) et on veut compiler du code qui exécute les instructions d'un parbloc en pseudo-parallèle, dans le sens que chacune de ces instructions sera exécutée même si les autres tombent dans des boucles infinies; en particulier, si une des instructions d'un parbloc exécute une instruction return, les autres seront également terminées ainsi que d'éventuelles autres instructions engendrées par le même appel de fonction.

Il y a trois niveaux possibles de traitement:

  1. Les instructions du parbloc s'exécutent dans le même espace mémoire; elles ne contiennent ni blocs imbriqués contenant des déclarations, ni appels de fonctions (à part la fonction prédéfinie afficher()), ni autres parblocs.
  2. Un parbloc peut contenir des déclarations mais pas d'appels de fonctions ni autres parblocs.
  3. Le cas général.

Coefficient Selon le niveau essayé: 20%, 30% ou 40%.

Documentation La documentation doit expliciter quel niveau vous avez essayé et décrire clairement comment le code généré est censé traiter les problèmes de partage du temps de calcul, de terminaison des autres instructions parallèles quand un return est exécutée et, pour les niveaux 2 et 3, l'accès aux bonnes variables.

Si vous avez changé la grammaire, la documentation doit aussi inclure la nouvelle grammaire (sans les actions bison) et une explication des différences.

Fichiers Un fichier exemple de chaque niveau sera fourni. Bien sûr vous devez tester votre compilateur sur d'autres programmes.

Modalités Envoyer les fichiers (.y, .lex si modifié, documentation en .tex ou .ps ou .html et éventuellement des .h et .c) à robson@labri.fr


File translated from TEX by TTH, version 3.05.
On 8 Apr 2005, 15:51.