Projet HEPIAL du cours Technique de compilation
TODO et Astuces
En parcourants le code vous trouverez des TODO ainsi que des HINT vous rapellant ce que vous avez à faire et où.
Utilisation du makefile
Pour afficher le code source généré à partir de l'arbre abstrait
make source
Pour afficher le bytecode
make bytecode
Pour compiler et exécuter du code HEPIAL
make run
Le paramètre CODE permet de choisir le code HEPIAL à donner en entrée (par défaut: Tests/test_base_with_sementic_issue.input). Exemple:
make run CODE=Tests/test_1.input
La commande "make" correspond à la commande "make source"
Tests
Dans le dossier Tests nous vous fournissons 11 code source HEPIAL (les *.input) qui couvre l'ensemble des possibilités du langage. Avec ces codes sources, vous sont également fournis les sorties attendues pour :
- SourceCodeGenerator (*.source) qui réécrit le code à partir de l'arbre abstrait. ATTENTION: Votre résultat peut être légèrement différent du nôtre. Du moment que toutes les instructions sont présentes et dans le bon ordre, c'est tout bon.
- ByteCodeGenerator (*.bytecode) qui génère le bytecode Jasmin. ATTENTION: Votre bytecode peut contenir des différences avec le nôtre en fonction de certains choix que vous ferez à l'implémentation.
- Output (*.output) qui est le retour console de l'exécution du programme. ATTENTION: Contrairement au deux points précédent, l'exécution des codes d'exemple doit produire strictement la même sortie qu'attendue dans le fichier output.
En exécutant la commande suivante, vous pourrez lancer le test automatique sur les 11 codes sources fournis. Les sorties générées par votre projet seront contenu dans le dossier Tests/results
make tests
ATTENTION: Aucun de ces tests ne vérifie le bon fonctionnement de l'analyse sémantique. Pensez donc à faire ces tests à la main. Pour cela vous trouverez différent code sémantiquement faux dans le dossier Tests/SemanticErrors