# Carlos Ramisch - personal page

# 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