TP5 — Représentation intermédiaire
Ce TP est en grande partie un exercice de compréhension, sur un code qui reprend en les étendant les concepts abordés dans les travaux précédents. Il complète le cours sur la représentation intermédiaire à laquelle vous devez porter une attention soutenue.
Il s’agit ici de lire et comprendre le code fourni pour un langage avec appel de fonctions SDM (Software Data and Methods). Il vous faut compléter le fichier ir/translation/Translate.java
Quelques remarques :
- Lisez bien la grammaire du langage, ainsi que l’AST, notez bien les différences avec les langages précédents. En particulier la définition des programmes.
- Examinez également le package ir, avant de vous lancer dans la traduction
- Vous disposez de classes permettant d’afficher l’AST, les frames, les maps. En particulier, quand vous aurez complété la classe Translate.java, et que vous aurez exécuté le main sur l’exemple fourni 'test.sdm' (n’hésitez pas à étendre votre jeu de tests), vous devez obtenir le résultat suivant :
--- Traduction en code intermédiaire ---
Label L2
Frame{
entryPoint=L0,
exitPoint=L1,
parameters=[reg0],
result=reg1,
locals=[],
size=0
}
reg1 := (reg0 + 1)
goto L1
Frame{
entryPoint=L2,
exitPoint=L3,
parameters=[],
result=reg2,
locals=[reg3, reg6, reg7],
size=0
}
reg3 := 0
reg6 := call L0[reg3]
reg7 := call entryPrintInt[reg6]
reg2 := 0
goto L3