diff --git a/eval-final-projet/Makefile b/eval-final-projet/Makefile new file mode 100644 index 0000000..9022348 --- /dev/null +++ b/eval-final-projet/Makefile @@ -0,0 +1,17 @@ +CC = gcc + +LIBS = -lm +CCFLAGS = -Wall -ggdb + +all: compare_arbres_xml + +compare_arbres_xml: compare_arbres_xml.c analyseur_xml.o + $(CC) $(CCFLAGS) -o compare_arbres_xml compare_arbres_xml.c analyseur_xml.o + +analyseur_xml.o: analyseur_xml.c + $(CC) $(CCFLAGS) -c analyseur_xml.c + +.PHONY : clean + +clean: + - rm -f *.o compare_arbres_xml diff --git a/eval-final-projet/Mars4_5.jar b/eval-final-projet/Mars4_5.jar new file mode 100644 index 0000000..0021281 Binary files /dev/null and b/eval-final-projet/Mars4_5.jar differ diff --git a/eval-final-projet/README.html b/eval-final-projet/README.html new file mode 100644 index 0000000..f6af45a --- /dev/null +++ b/eval-final-projet/README.html @@ -0,0 +1,95 @@ + + + +
+Modifiez le script testAll.sh fourni (version d'évaluation) en modifiant le chemin vers l'exécutable de votre compilateur. Ouvrez le script et lisez attentivement les instructions pour modifier également les options/chemins qui permettent de générer du XML arbre abstrait, table des symboles et mips. Ensuite, exécutez-le pour effectuer les tests ci-dessous 100% automatiquement
+ +Analysez les programmes suivants (il s'agit des exemples connus, fournis comme base de tests minimale):
+ +| eval1.l |
| eval2.l |
| eval3.l |
| eval4.l |
| eval5.l |
| eval1-err.l |
Compilez à l'aide de votre compilateur, les programmes suivants, et vérifiez que tout se passe bien :
+ +| eval6.l | eval16.l |
| eval7.l | eval17.l |
| eval8.l | eval18.l |
| eval9.l | eval19.l |
| eval10.l | eval20.l |
| eval11.l | eval21.l |
| eval12.l | eval22.l |
| eval13.l | eval23.l |
| eval14.l | eval24.l |
| eval15.l |
Vérifiez que les programmes suivants ne compilent pas :
+ +| eval2-err.l |
| eval3-err.l |
| eval4-err.l |
| eval5-err.l |
| eval6-err.l |
| eval7-err.l |
| eval8-err.l |
| eval9-err.l |
| eval10-err.l |
| eval11-err.l |
| eval12-err.l |
On désire ajouter à notre langage une expression conditionnelle à l'aide des opérateurs ? et : dont voici la syntaxe:
+ +expression -> condition '?' expressionvrai ':' expressionfaux | condition
Cette expression donne la valeur de expressionvrai si la valeur de condition est vraie, et la valeur de expressionfaux si la valeur de condition est fausse. Autrement dit, c'est comme une instruction si qui, au lieu de choisir entre deux blocs d'instructions, choisit entre les valeurs de deux expressions. Par exemple, $a > 10 ? 1 : 0 vaut 1 si $a = 11, 12, 13... et zéro pour toute valeur de $a inférieure ou égale à 10.
+ +Sa précédence est la moins importante de toutes, inférieures à celle du ou. Vous devez donc la rajouter au niveau du non-terminal expression dans la grammaire. Contrairement aux autres expressions du langage L, cette expression est associative droite, c'est-à-dire, 1 ? 0 : 1 ? 0 : 1 doit être interprété comme 1 ? 0 : (1 ? 0 : 1) et vaut 0.
+ +Modifiez l'analyseur lexical, l'analyseur syntaxique, la structure de +l'arbre abstrait, et la génération de code afin de prendre en compte cette nouvelle instruction.
+ +Vous testerez votre nouvel analyseur sur les programmes suivants:
+ +| eval25.l |
| eval26.l |
| eval27.l |
| eval13-err.l - ne doit pas compiler |