-
Notifications
You must be signed in to change notification settings - Fork 0
/
READ_ME
30 lines (16 loc) · 2.53 KB
/
READ_ME
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Niveau atteint: 4
Nous avons implémenté le print, donc nos tests afficheront des résultats pour attester de leur bon fonctionnement.
Quelques points sur l'utilisation de notre compilateur:
Pour lancer notre compilateur nous avons implémenter les scripts shell demandés.Une fois le dépot cloné, il suffit de se placer à la racine du projet pour éxécuter les scripts bash. Trois commandes sont disponibles :
./build.sh : cette commande permet de générer le fichier .jar du projet à l'aide de Gradle et Intellij.
./compile.sh test.algol nom.txt : après avoir généré le .jar, cette commande permet de compiler un code algol, le code généré sera stocké dans le fichier nom.txt, un fichier nom.iup sera généré pour l'éxécution du code.
./run.sh nom.iup : cette commande permet d'éxécuter le fichier iup précédemment généré.
Dû à la différence d'environnement de travail entre Windows et les systèmes Unix, il est possible que la commande build.sh ne fonctionne pas sans lui donner de droits d'écriture, il faudra donc éxécuter la commande "chmod +x build.sh", le cas échéant.
Les tests que nous vous proposons sont présents dans le fichier Testscompilation.
Quelques point concernant l'avancement et les limites du projet :
Au niveau de notre implémentation des appels de fonction et de la gestion des registres, notre compilateur a du mal à générer des résultat correct lorsqu'il y'a trop d'appel récursif dans un code.
Par exemple pour le code facorielle. Algol que nous avons mis dans notre dossier TestsCompilation à partir de 8 appel récursif nous n'avons plus assez de registre pour avoir un résulat correct.
Ceci est partiellement du au fait que nous utilisons quelques registres utilitaires en plus. Du fait des divers points de difficultés citées dans notre rapport nous n'avons pas eu le temps de nous concerter correctement pour essayer d'améliorer ce point sur la gestion des registres.
En général les fonctions récursives avec retour tels que factorielles (avec des opérations) ne sont pas parfaites du fait de ce problème de registre mais tous les autres fonctionnent parfaitement.
Pour vérifier le retour d'une fonction il faut affecter une variable avec l'appel de cette fonction et afficher cette variable.
Pour les tableaux un point important est que les accès doivent toujours être des entiers purs et non des variables. Nous n'avons pas eu le temps d'implémenter les autres cas. En outre, lorsqu'un tableaux ou une matrice est déclaré il ou elle est automatiquement initialisé avec des 0.