Skip to content
Snippets Groups Projects
Select Git revision
  • 4856cbf23be2c1a2f5b8cac563e37278e6ac568e
  • master default protected
2 results

technique-de-compilation-tp

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