Evaluation de l'analyseur syntaxique 2015/2016

1 - Compilation du compilateur

Compilez votre analyseur à l'aide d'un Makefile.

2 - Exécution sur des exemples existants

Vous pouvez modifier le script runEval.sh en modifiant le chemin vers l'exécutable de votre compilateur. Ensuite, exécutez-le pour effectuer les tests ci-dessous 100% automatiquement

Analysez les programmes suivants :

affect.l
boucle.l
expression.l
max.l
tri.l
affect-err.l

3 - Exécution sur de nouveaux exemples

3.1 Exemples compilés OK

Compilez à l'aide de votre compilateur, les programmes suivants :

eval1.l
eval2.l
eval3.l
eval4.l
eval5.l
eval6.l
eval7.l
eval8.l

3.1 Exemples pas compilés

Vérifiez que les programmes suivants ne compilent pas :

eval1err.l
eval2err.l
eval3err.l
eval4err.l
eval5err.l

4 - Ajout de la boucle pour

On désire ajouter à notre langage une boucle de type pour, dont voici la syntaxe:

pour IAFFinit E; IAFFincr faire IB

Une telle instruction exécute d'abord la première affectation, contenue dans IAFFinit, pour l'initialisation. Ensuite, tant que la valeur de l'expression E est vraie, c'est-à-dire, ne vaut pas zéro, elle exécute le bloc d'instructions dans IB suivi de l'instruction d'incrément IAFFincr. Cette boucle est similaire à la boucle for en C. Cependant, il n'est pas possible de mettre autre chose qu'une affectation dans les parties d'initialisation et d'incrément (en C, elles peuvent être vides ou contenir n'importe quelle instruction-expression).

Modifiez l'analyseur lexical et l'analyseur syntaxique afin de prendre en compte cette nouvelle instruction.

5 - Tests

Vous testerez votre nouvel analyseur sur les programmes suivants:

test1.l
test2.l
test3.l
test1err.l - ne doit pas compiler