diff --git a/eval-partiel/Makefile b/eval-partiel/Makefile new file mode 100644 index 0000000..9022348 --- /dev/null +++ b/eval-partiel/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-partiel/README.html b/eval-partiel/README.html new file mode 100644 index 0000000..3cf923a --- /dev/null +++ b/eval-partiel/README.html @@ -0,0 +1,97 @@ + + + + + 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
+
+
+ + + diff --git a/eval-partiel/analyseur_xml.c b/eval-partiel/analyseur_xml.c new file mode 100644 index 0000000..164345b --- /dev/null +++ b/eval-partiel/analyseur_xml.c @@ -0,0 +1,323 @@ +#include +#include +#include +#include"analyseur_xml.h" + +/* symboles terminaux */ + +#define CHEVRON_FERMANT 1 +#define DEBUT_BF 2 +#define DEBUT_BO 3 +#define CHAINE 4 +#define FIN 5 + +#define ISSPACE(a) (a == ' ') || (a == '\n') || (a == '\t') + +#define YYTEXT_MAX 100 + +/* fonctions pour arbre abstrait */ + +noeud *cree_noeud(char *nom) +{ + noeud *n = malloc(sizeof(noeud)); + if(n == NULL){ + fprintf(stderr, "erreur d'allocation\n"); + exit(1); + } + n->nom = nom; + n->premier_fils = NULL; + n->dernier_fils = NULL; + n->suiv = NULL; + return n; +} + +noeud *ajoute_fils(noeud *pere, noeud *fils) +{ + if(pere->premier_fils == NULL){ + pere->premier_fils = pere->dernier_fils = fils; + return pere; + } + pere->dernier_fils->suiv = fils; + pere->dernier_fils = fils; + return pere; + +} + +void affiche_arbre(noeud *racine){ + noeud *n; + printf("<%s> ", racine->nom); + for(n=racine->premier_fils; n!=NULL; n = n->suiv){ + affiche_arbre(n); + } + printf(" ", racine->nom); +} + + +int compare_arbres_rec(noeud *racine1, noeud *racine2, int verbose, int profondeur) +{ + noeud *f1, *f2; + int resultat = 1; + int i; + if(verbose){ + for(i=0; i %s\n", racine1->nom, racine2->nom); + } + if(strcmp(racine1->nom, racine2->nom)) + return 0; + + for(f1 = racine1->premier_fils, f2 = racine2->premier_fils; + f1 && f2 && resultat; + f1 = f1->suiv, f2 = f2->suiv){ + resultat = compare_arbres_rec(f1, f2, verbose, profondeur+1); + } + return ((f1 == NULL) && (f2 == NULL) && resultat); +} + +int compare_arbres(noeud *racine1, noeud *racine2, int verbose) +{ + return compare_arbres_rec(racine1, racine2, verbose, 0); +} + +void libere_arbre(noeud *racine) +{ + noeud *n; + for(n=racine->premier_fils; n!=NULL; n = n->suiv){ + libere_arbre(n); + } + free(racine); +} + +/* analyseur lexical */ + +int DEBUG = 0; +char yytext[YYTEXT_MAX]; +int yyleng; +int yylval; +/* Compter les lignes pour afficher les messages d'erreur avec numero ligne */ +int nb_ligne; +int cc; + +/******************************************************************************* + * Fonction qui ignore les espaces et commentaires. + * Renvoie -1 si arrivé à la fin du fichier, 0 si tout va bien + ******************************************************************************/ +int mangeEspaces() +{ + char c = fgetc(yyin); + while( ISSPACE(c) ) { + if( c == '\n' ) { + nb_ligne++; + } + c = fgetc(yyin); + } + if ( feof(yyin) ) { + return -1; + } + ungetc(c, yyin); + return 0; +} + +/******************************************************************************* + * Lit un caractère et le stocke dans le buffer yytext + ******************************************************************************/ +char lireCar(void) +{ + yytext[yyleng++] = fgetc(yyin); + yytext[yyleng] = '\0'; + return yytext[yyleng - 1]; +} + +/******************************************************************************* + * Remet le dernier caractère lu au buffer clavier et enlève du buffer yytext + ******************************************************************************/ +void delireCar() +{ + char c; + c = yytext[yyleng - 1]; + yytext[--yyleng] = '\0'; + ungetc(c, yyin); +} +/******************************************************************************* + * Fonction principale de l'analyseur lexical, lit les caractères de yyin et + * renvoie les tokens sous forme d'entier. Le code de chaque unité est défini + * dans symboles.h sinon (mot clé, idententifiant, etc.). Pour les tokens de + * type ID_FCT, ID_VAR et NOMBRE la valeur du token est dans yytext, visible + * dans l'analyseur syntaxique. + ******************************************************************************/ +int inTag = 0; + +int yylex(void) +{ + char c; + yytext[yyleng = 0] = '\0'; + + /* Si j'ai trouvé la fin du fichier en lisant des espaces ... */ + if( !inTag && mangeEspaces() == -1 ) { + return FIN; /* Renvoie le marqueur de fin d'entrée */ + } + + c = lireCar(); + if(c == '>'){ + if(DEBUG) { printf("CHEVRON_FERMANT\n"); } + //inTag = 0; + return CHEVRON_FERMANT; + } + if(c == '<'){ + inTag = 1; + c = lireCar(); + if(c == '/'){ + if(DEBUG) { printf("DEBUT_BF\n"); } + return DEBUT_BF; + } + else{ + delireCar(); + if(DEBUG) { printf("DEBUT_BO\n"); } + return DEBUT_BO; + } + } + do{ + c = lireCar(); + inTag = 0; + }while((c!= '<') && (c!= '>') && !feof(yyin) && !(ISSPACE(c))); + delireCar(); + if(DEBUG) { printf("CHAINE\n"); } + + return CHAINE; + } + + + /******************************************************************************* + * Fonction auxiliaire appelée par l'analyseur syntaxique tout simplement pour + * afficher des messages d'erreur et l'arbre XML + ******************************************************************************/ +void nom_token( int token, char *nom, char *valeur ) { + //int i; + + strcpy( nom, "symbole" ); + if(token == CHEVRON_FERMANT) strcpy( valeur, "CHEVRON_FERMANT"); + else if(token == DEBUT_BF) strcpy( valeur, "DEBUT_BF"); + else if(token == DEBUT_BO) strcpy( valeur, "DEBUT_BO"); + else if(token == CHAINE) strcpy( valeur, "CHAINE"); +} + +/* analyse syntaxique */ + +noeud *B(void); +void LB(noeud *pere); +char *BO(void); +char *BF(void); +void LCHAINE(void); + +void erreur(char *msg){ + fprintf(stderr, "Ligne %d : erreur : %s\n", nb_ligne, msg); + exit(1); +} + + + +/* B -> BO LCHAINE LB LCHAINE BF */ +noeud *B(void){ + char *nom_bo; + char *nom_bf; + noeud *n; + if(DEBUG) { printf("\n"); } + if(cc == DEBUT_BO){ + nom_bo = BO(); + n = cree_noeud(nom_bo); + LCHAINE(); + LB(n); + LCHAINE(); + nom_bf = BF(); + if(strcmp(nom_bo, nom_bf)){ + fprintf(stderr, "Ligne %d : arbre mal forme: balise ouvrante : \"%s\" balise fermante : \"%s\"\n", nb_ligne, nom_bo, nom_bf); + exit(1); + } + free(nom_bf); + if(DEBUG) { printf("\n"); } + return n; + } + erreur("B"); + return NULL; +} + +/* LCHAINE -> CHAINE LCHAINE */ +/* | */ + +void LCHAINE(void){ + if(cc == CHAINE){ + cc = yylex(); + LCHAINE(); + return; + } + if((cc == DEBUT_BO) ||(cc == DEBUT_BF)){ + return; + } + erreur("LCHAINE"); +} + +/* LB -> B LB + | */ + +void LB(noeud *pere) +{ + noeud *fils = NULL; + if(cc == DEBUT_BO){ + fils = B(); + ajoute_fils(pere, fils); + LB(pere); + return; + } + if(cc == DEBUT_BF){ + return; + } + erreur("LB"); +} + +/* BO -> DEBUT_BO CHAINE CHEVRON_FERMANT */ +char *BO(void) +{ + char *nom = NULL; + if(DEBUG) { printf("\n"); } + if(cc == DEBUT_BO){ + cc = yylex(); + if(cc == CHAINE){ + nom = strdup(yytext); + cc = yylex(); + if(cc == CHEVRON_FERMANT){ + cc = yylex(); + if(DEBUG) { printf("\n"); } + return nom; + } + } + } + erreur("BO"); + return NULL; +} + +/* BF -> DEBUT_BF CHAINE CHEVRON_FERMANT */ +char *BF(void) +{ + char *nom = NULL; + if(cc == DEBUT_BF){ + cc = yylex(); + if(cc == CHAINE){ + nom = strdup(yytext); + cc = yylex(); + if(cc == CHEVRON_FERMANT){ + cc = yylex(); + return nom; + } + } + } + erreur("BF"); + return NULL; +} + +noeud *analyseur_xml(void) +{ + nb_ligne = 0; + cc = yylex(); + return B(); +} + + diff --git a/eval-partiel/analyseur_xml.h b/eval-partiel/analyseur_xml.h new file mode 100644 index 0000000..1ec5aa1 --- /dev/null +++ b/eval-partiel/analyseur_xml.h @@ -0,0 +1,25 @@ +#ifndef __ANALYSEUR_XML__ +#define __ANALYSEUR_XML__ + +/* structures de donnees et fonctions pour arbre abstrait */ + +typedef struct n noeud; + +struct n{ + char *nom; + struct n *premier_fils; + struct n *dernier_fils; + struct n *suiv; +}; + +FILE *yyin; + + +void affiche_arbre(noeud *racine); +int compare_arbres(noeud *racine1, noeud *racine2, int verbose); +void libere_arbre(noeud *r); + +/* analyseur */ + +noeud *analyseur_xml(void); +#endif diff --git a/eval-partiel/compare_arbres_xml b/eval-partiel/compare_arbres_xml new file mode 100755 index 0000000..8849245 Binary files /dev/null and b/eval-partiel/compare_arbres_xml differ diff --git a/eval-partiel/compare_arbres_xml.c b/eval-partiel/compare_arbres_xml.c new file mode 100644 index 0000000..1231486 --- /dev/null +++ b/eval-partiel/compare_arbres_xml.c @@ -0,0 +1,63 @@ +#include +#include +#include"analyseur_xml.h" + +int main(int argc, char *argv[]) + { + noeud *racine1; + noeud *racine2; + int resultat; + int verbose; + + if((argc != 3) && (argc != 4)){ + fprintf(stderr, "usage: %s fichier_xml fichier_xml [v]\n", argv[0]); + exit(1); + + } + verbose = (argc == 4); + + yyin = fopen(argv[1], "r"); + if(yyin == NULL){ + fprintf(stderr, "impossible d'ouvrir le fichier %s\n", argv[1]); + exit(1); + } + + fprintf(stderr, "analyse du fichier : %s\n", argv[1]); + racine1 = analyseur_xml(); + + + fclose(yyin); + + yyin = fopen(argv[2], "r"); + if(yyin == NULL){ + fprintf(stderr, "impossible d'ouvrir le fichier %s\n", argv[2]); + exit(1); + } + + fprintf(stderr, "analyse du fichier : %s\n", argv[2]); + racine2 = analyseur_xml(); + + fclose(yyin); + + + + /* affiche_arbre(racine1); + printf("\n"); + affiche_arbre(racine2);*/ + + fprintf(stderr, "comparaison des arbres\n"); + resultat = compare_arbres(racine1, racine2, verbose); + libere_arbre(racine1); + libere_arbre(racine2); + + + if(resultat){ + printf("arbres egaux\n"); + return 0; + } + else{ + printf("arbres différents\n"); + return 1; + } + + } diff --git a/eval-partiel/fiche_eval_partiel_2016.pdf b/eval-partiel/fiche_eval_partiel_2016.pdf new file mode 100644 index 0000000..ee00776 Binary files /dev/null and b/eval-partiel/fiche_eval_partiel_2016.pdf differ diff --git a/eval-partiel/input/affect-err.l b/eval-partiel/input/affect-err.l new file mode 100644 index 0000000..f142572 --- /dev/null +++ b/eval-partiel/input/affect-err.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +$a = 5; +ecrire( $a ); +} +$extra = 0; diff --git a/eval-partiel/input/affect.l b/eval-partiel/input/affect.l new file mode 100644 index 0000000..576dc8d --- /dev/null +++ b/eval-partiel/input/affect.l @@ -0,0 +1,6 @@ +entier $a; +main() +{ +$a = 1; +ecrire($a); +} diff --git a/eval-partiel/input/boucle.l b/eval-partiel/input/boucle.l new file mode 100644 index 0000000..4821457 --- /dev/null +++ b/eval-partiel/input/boucle.l @@ -0,0 +1,11 @@ +entier $i, entier $carre; +main() +{ + $i = 0; + tantque $i < 10 faire + { + $carre = $i * $i; + ecrire( $carre ); + $i = $i + 1; + } +} diff --git a/eval-partiel/input/eval1.l b/eval-partiel/input/eval1.l new file mode 100644 index 0000000..2bcd814 --- /dev/null +++ b/eval-partiel/input/eval1.l @@ -0,0 +1,25 @@ +add (entier $a, entier $b) +{ + retour $a + $b; +} + +mult (entier $a, entier $b) +{ + retour $a * $b; +} + +main() +entier $a, entier $b, entier $op; +{ + $a = lire(); + $b = lire(); + $op = lire(); + si $op = 1 alors { + ecrire(add($a, $b)); + } + sinon { + si $op = 2 alors { + ecrire(mult($a, $b)); + } + } +} diff --git a/eval-partiel/input/eval1err.l b/eval-partiel/input/eval1err.l new file mode 100644 index 0000000..b1d4456 --- /dev/null +++ b/eval-partiel/input/eval1err.l @@ -0,0 +1 @@ +33a diff --git a/eval-partiel/input/eval2.l b/eval-partiel/input/eval2.l new file mode 100644 index 0000000..6008853 --- /dev/null +++ b/eval-partiel/input/eval2.l @@ -0,0 +1,14 @@ +fibo( entier $n ) +{ + si $n < 2 alors { + retour 1; + } + sinon { + retour fibo( $n - 1 ) + fibo( $n - 2 ); + } +} + +main() +{ + ecrire( fibo( lire() ) ); +} diff --git a/eval-partiel/input/eval2err.l b/eval-partiel/input/eval2err.l new file mode 100644 index 0000000..f142572 --- /dev/null +++ b/eval-partiel/input/eval2err.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +$a = 5; +ecrire( $a ); +} +$extra = 0; diff --git a/eval-partiel/input/eval3.l b/eval-partiel/input/eval3.l new file mode 100644 index 0000000..816745e --- /dev/null +++ b/eval-partiel/input/eval3.l @@ -0,0 +1,12 @@ +entier $i, entier $j, entier $k, entier $somme; +main() { + $somme = 0; + pour $i = 0; $i < 10; $i = $i + 1; faire { + pour $j = 0; $j < $i; $j = $j + 1; faire { + pour $k = 0; $k < $j; $k = $k + 1; faire { + $somme = $somme + $i + $j + $k; + } + } + } + ecrire ( $somme ); +} diff --git a/eval-partiel/input/eval3err.l b/eval-partiel/input/eval3err.l new file mode 100644 index 0000000..645279c --- /dev/null +++ b/eval-partiel/input/eval3err.l @@ -0,0 +1,12 @@ +entier $i; +main() +{ + entier $carre; + $i = 0; + tantque $i < 10 faire + { + $carre = $i * $i; + ecrire( $carre ); + $i = $i + 1; + } +} diff --git a/eval-partiel/input/eval4.l b/eval-partiel/input/eval4.l new file mode 100644 index 0000000..7b37cf3 --- /dev/null +++ b/eval-partiel/input/eval4.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +si 1 alors +{ecrire(1); +} +} diff --git a/eval-partiel/input/eval4err.l b/eval-partiel/input/eval4err.l new file mode 100644 index 0000000..155d4ab --- /dev/null +++ b/eval-partiel/input/eval4err.l @@ -0,0 +1 @@ +entier entier entier diff --git a/eval-partiel/input/eval5.l b/eval-partiel/input/eval5.l new file mode 100644 index 0000000..beeda13 --- /dev/null +++ b/eval-partiel/input/eval5.l @@ -0,0 +1,9 @@ +entier $a; +main() +{ +si 0 alors +{ecrire(1); +} +sinon +{ecrire(0);} +} diff --git a/eval-partiel/input/eval5err.l b/eval-partiel/input/eval5err.l new file mode 100644 index 0000000..964acba --- /dev/null +++ b/eval-partiel/input/eval5err.l @@ -0,0 +1 @@ +entier ? diff --git a/eval-partiel/input/eval6.l b/eval-partiel/input/eval6.l new file mode 100644 index 0000000..01c44dc --- /dev/null +++ b/eval-partiel/input/eval6.l @@ -0,0 +1,11 @@ +entier $a[10], entier $b; +main() { + $a[0] = 10; + $b = 5; + ecrire( $a ); # erreur de type ou ecrit 10? + ecrire( $a + 1 ); # erreur de type ou ecrit 11? + ecrire( $b[0] ); # erreur de type ou ecrit 5? + ecrire( $a[10] ); # erreur de type ou ecrit 5? + retour 0; + ecrire( $b ); # ecrit 5 ou pas? +} diff --git a/eval-partiel/input/eval7.l b/eval-partiel/input/eval7.l new file mode 100644 index 0000000..e69de29 diff --git a/eval-partiel/input/eval8.l b/eval-partiel/input/eval8.l new file mode 100644 index 0000000..4f35eff --- /dev/null +++ b/eval-partiel/input/eval8.l @@ -0,0 +1,9 @@ +entier $a; +main() +{ +$a = 0; +tantque $a < 10 faire{ +ecrire($a); +$a = $a + 1; +} +} diff --git a/eval-partiel/input/expression.l b/eval-partiel/input/expression.l new file mode 100644 index 0000000..a33fb9e --- /dev/null +++ b/eval-partiel/input/expression.l @@ -0,0 +1,5 @@ +entier $a; +main() +{ +ecrire(5 * 2); +} diff --git a/eval-partiel/input/max.l b/eval-partiel/input/max.l new file mode 100644 index 0000000..ef3e9c8 --- /dev/null +++ b/eval-partiel/input/max.l @@ -0,0 +1,23 @@ +max( entier $a, entier $b ) +{ + si $a < $b alors { + retour $b; + } + retour $a; +} + +main() +entier $v_1, entier $v_2; +{ + $v_1 = lire(); + $v_2 = lire(); + si max( $v_1, $v_2 ) = $v_1 alors + { + ecrire( $v_1 ); + } + sinon + { + ecrire( $v_2 ); + } + +} diff --git a/eval-partiel/input/test1.l b/eval-partiel/input/test1.l new file mode 100644 index 0000000..058f2b5 --- /dev/null +++ b/eval-partiel/input/test1.l @@ -0,0 +1,8 @@ +entier $a; +main() +{ +pour $a=1; $a<10; $a = $a + 1; faire +{ +ecrire( $a ); +} +} diff --git a/eval-partiel/input/test1err.l b/eval-partiel/input/test1err.l new file mode 100644 index 0000000..e436203 --- /dev/null +++ b/eval-partiel/input/test1err.l @@ -0,0 +1,6 @@ +entier $i; +main() { + pour $i = 5; $i < 10; $i faire { + ecrire ( $i ); + } +} diff --git a/eval-partiel/input/test2.l b/eval-partiel/input/test2.l new file mode 100644 index 0000000..058f2b5 --- /dev/null +++ b/eval-partiel/input/test2.l @@ -0,0 +1,8 @@ +entier $a; +main() +{ +pour $a=1; $a<10; $a = $a + 1; faire +{ +ecrire( $a ); +} +} diff --git a/eval-partiel/input/test3.l b/eval-partiel/input/test3.l new file mode 100644 index 0000000..058f2b5 --- /dev/null +++ b/eval-partiel/input/test3.l @@ -0,0 +1,8 @@ +entier $a; +main() +{ +pour $a=1; $a<10; $a = $a + 1; faire +{ +ecrire( $a ); +} +} diff --git a/eval-partiel/input/tri.l b/eval-partiel/input/tri.l new file mode 100644 index 0000000..a39cba6 --- /dev/null +++ b/eval-partiel/input/tri.l @@ -0,0 +1,57 @@ +entier $tab[ 10 ]; + +initialiser() +{ + $tab[0] = 8; $tab[1] = 6; $tab[2] = 9; + $tab[3] = 9; $tab[4] = 4; $tab[5] = 2; + $tab[6] = 3; $tab[7] = 1; $tab[8] = 4; + $tab[9] = 5; +} + +afficher( entier $n ) +entier $i; +{ + $i = 0; + tantque $i < $n faire { + ecrire( $tab[ $i ] ); + $i = $i + 1; + } + ecrire( 0 ); # marqueur fin de tableau +} + +echanger( entier $i, entier $j ) +entier $temp; +{ + $temp = $tab[ $j ]; + $tab[ $j ] = $tab[ $i ]; + $tab[ $i ] = $temp; +} + +trier( entier $n ) +entier $echange, entier $j, entier $m; +{ + $m = $n; + $echange = 1; + tantque $echange = 1 faire + { + $echange = 0; + $j = 0; + tantque $j < $m - 1 faire + { + si $tab[ $j + 1 ] < $tab[ $j ] alors { + echanger( $j, $j + 1 ); + $echange = 1; + } + $j = $j + 1; + } + $m = $m - 1; + } +} + +main() +{ + initialiser(); + afficher( 10 ); + trier( 10 ); + afficher( 10 ); +} diff --git a/eval-partiel/main.css b/eval-partiel/main.css new file mode 100755 index 0000000..fed6e77 --- /dev/null +++ b/eval-partiel/main.css @@ -0,0 +1,196 @@ +body{ + font-family: "Trebuchet MS", arial, helvetica, sans-serif; + margin: 0; +} + +#header{ + color: #ffffff; + background-color: #c01010; + width: 100%; + height: 70px; +} + +#header h1{ + margin: 0; + font-size: 140%; + padding: 20px 0 0 20px; +} + +#header ul{ + margin: 0; + padding: 0; +} + +#lang_bar{ + list-style-type: none; +} + +#lang_bar li{ + float: right; +} + +#lang_bar a{ + color: #dddddd; + padding: 0 7px; + font-weight: bold; + font-size: 80%; +} + +#lang_bar a:hover{ + color: #dddddd; + background-color: #c01010; +} + +#main_menu{ + margin: 0; + padding: 0; + list-style-type: none; + clear: right; + width: 100%; + background-color: #330000; + height: 32px; +} + +#main_menu li{ + float: left; +} + +#main_menu a{ + float: left; + background-color: #dddddd; + padding: 5px 10px; + font-size: 90%; + font-style: italic; + font-weight: bold; + text-align: center; + color: #990000; + margin: 2px 1px; +} + +#main_menu a:hover{ + background-color: #c01010; + color: #ff0000; +} + +#main_menu a.active{ + background-color: #c01010; + color: #ffffff; +} + + +#links li{ + list-style-type: none; + color: #990000; + padding: 0; +} + +#links ul{ + margin: 0; + padding: 0; +} + +#links img{ + height: 40px; + border: 0; +} + +#links{ + border: solid 2px #FFA273; + margin: 5px; + text-align: center; + float: right; +} + +#links h1{ + font-size: 100%; + color: #a63800; + margin: 5px; +} + +a{ + text-decoration: none; + color: #c01010; +} + +#page_body a:hover{ + text-decoration: none; + color: #ff0000; +} + +#page_body p{ + color: #000000; +} + +#page_body{ + font-size: 90%; + margin: 10px 20px 0 40px; + +} + +#page_body h1{ + font-size: 130%; + margin: 15px 0 5px -30px; + color: #c01010; +} + +#page_body h2{ + font-size: 110%; + margin: 8px 0 5px -15px; + color: #c01010; +} + +#page_body li{ + margin: 5px 0 0 20px; +} + +#page_body ul{ + margin: 0; + padding: 5px 0 0 40px; +} + +#page_body li p{ + margin: 0; +} + +#page_body img.left{ + float: left; + margin: 5px 20px 5px 0; +} + +#page_body img.right{ + float: right; + margin: 5px 0 5px 20px; +} + +.codefrag{ + font-family: "courier", "sans"; + font-weight: bold; + margin: 0; + text-indent: 20pt; +} + +.indent1{ + text-indent: 40pt; +} + +.indent2{ + text-indent: 60pt; +} + +.indent3{ + text-indent: 80pt; +} + +.indent4{ + text-indent: 100pt; +} + +.indent5{ + text-indent: 180pt; +} + +.nobullet{ + list-style-type: none; +} + + diff --git a/eval-partiel/output/affect-err.synt.xml b/eval-partiel/output/affect-err.synt.xml new file mode 100644 index 0000000..011887f --- /dev/null +++ b/eval-partiel/output/affect-err.synt.xml @@ -0,0 +1,110 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + diff --git a/eval-partiel/output/affect.lex b/eval-partiel/output/affect.lex new file mode 100644 index 0000000..fb828db --- /dev/null +++ b/eval-partiel/output/affect.lex @@ -0,0 +1,18 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/affect.synt b/eval-partiel/output/affect.synt new file mode 100644 index 0000000..038df30 --- /dev/null +++ b/eval-partiel/output/affect.synt @@ -0,0 +1,113 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/boucle.lex b/eval-partiel/output/boucle.lex new file mode 100644 index 0000000..cbdea9f --- /dev/null +++ b/eval-partiel/output/boucle.lex @@ -0,0 +1,40 @@ +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$carre id_variable $carre +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$i id_variable $i +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$carre id_variable $carre += symbole EGAL +$i id_variable $i +* symbole FOIS +$i id_variable $i +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$carre id_variable $carre +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/boucle.synt b/eval-partiel/output/boucle.synt new file mode 100644 index 0000000..c3cf0f2 --- /dev/null +++ b/eval-partiel/output/boucle.synt @@ -0,0 +1,283 @@ + + + + + entier + $i + + + + + VIRGULE + + entier + $carre + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $carre + + + + EGAL + + + + + + + + + $i + + + + + + FOIS + + + $i + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $carre + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/eval1.lex b/eval-partiel/output/eval1.lex new file mode 100644 index 0000000..fbfdd45 --- /dev/null +++ b/eval-partiel/output/eval1.lex @@ -0,0 +1,100 @@ +add id_fonction add +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$a id_variable $a ++ symbole PLUS +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +mult id_fonction mult +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$a id_variable $a +* symbole FOIS +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +, symbole VIRGULE +entier mot_clef entier +$op id_variable $op +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$b id_variable $b += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$op id_variable $op += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +si mot_clef si +$op id_variable $op += symbole EGAL +1 nombre 1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +add id_fonction add +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +, symbole VIRGULE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$op id_variable $op += symbole EGAL +2 nombre 2 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +mult id_fonction mult +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +, symbole VIRGULE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval1.synt b/eval-partiel/output/eval1.synt new file mode 100644 index 0000000..d0afcbb --- /dev/null +++ b/eval-partiel/output/eval1.synt @@ -0,0 +1,681 @@ + + + + + + add + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $a + + + + + + + + + PLUS + + + + $b + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + mult + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $a + + + + + + FOIS + + + $b + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + VIRGULE + + entier + $op + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $op + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $op + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + add + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $op + + + + + + + + + + + + EGAL + + + + 2 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + mult + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + diff --git a/eval-partiel/output/eval1err.synt.xml b/eval-partiel/output/eval1err.synt.xml new file mode 100644 index 0000000..5553b61 --- /dev/null +++ b/eval-partiel/output/eval1err.synt.xml @@ -0,0 +1 @@ + diff --git a/eval-partiel/output/eval2.lex b/eval-partiel/output/eval2.lex new file mode 100644 index 0000000..40e933b --- /dev/null +++ b/eval-partiel/output/eval2.lex @@ -0,0 +1,51 @@ +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$n id_variable $n +< symbole INFERIEUR +2 nombre 2 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +1 nombre 1 +) symbole PARENTHESE_FERMANTE ++ symbole PLUS +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval2.synt b/eval-partiel/output/eval2.synt new file mode 100644 index 0000000..1ca6407 --- /dev/null +++ b/eval-partiel/output/eval2.synt @@ -0,0 +1,360 @@ + + + + + + fibo + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $n + + + + + + + + + + + + INFERIEUR + + + + 2 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + PLUS + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 2 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-partiel/output/eval2err.synt.xml b/eval-partiel/output/eval2err.synt.xml new file mode 100644 index 0000000..011887f --- /dev/null +++ b/eval-partiel/output/eval2err.synt.xml @@ -0,0 +1,110 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + diff --git a/eval-partiel/output/eval3.lex b/eval-partiel/output/eval3.lex new file mode 100644 index 0000000..53881f7 --- /dev/null +++ b/eval-partiel/output/eval3.lex @@ -0,0 +1,91 @@ +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +, symbole VIRGULE +entier mot_clef entier +$k id_variable $k +, symbole VIRGULE +entier mot_clef entier +$somme id_variable $somme +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$somme id_variable $somme += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +pour mot_clef pour +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$i id_variable $i +< symbole INFERIEUR +10 nombre 10 +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$j id_variable $j += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$j id_variable $j +< symbole INFERIEUR +$i id_variable $i +; symbole POINT_VIRGULE +$j id_variable $j += symbole EGAL +$j id_variable $j ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$k id_variable $k += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$k id_variable $k +< symbole INFERIEUR +$j id_variable $j +; symbole POINT_VIRGULE +$k id_variable $k += symbole EGAL +$k id_variable $k ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$somme id_variable $somme += symbole EGAL +$somme id_variable $somme ++ symbole PLUS +$i id_variable $i ++ symbole PLUS +$j id_variable $j ++ symbole PLUS +$k id_variable $k +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$somme id_variable $somme +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval3.synt b/eval-partiel/output/eval3.synt new file mode 100644 index 0000000..295b490 --- /dev/null +++ b/eval-partiel/output/eval3.synt @@ -0,0 +1,652 @@ + + + + + entier + $i + + + + + VIRGULE + + entier + $j + + + + + VIRGULE + + entier + $k + + + + + VIRGULE + + entier + $somme + + + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $somme + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + pour + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + pour + + + $j + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $j + + + + + + + + + + + + INFERIEUR + + + + + $i + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $j + + + + EGAL + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + pour + + + $k + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $k + + + + + + + + + + + + INFERIEUR + + + + + $j + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $k + + + + EGAL + + + + + + + + + $k + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + + $somme + + + + EGAL + + + + + + + + + $somme + + + + + + + + + PLUS + + + + $i + + + + + + + + + PLUS + + + + $j + + + + + + + + + PLUS + + + + $k + + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $somme + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/eval3err.synt.xml b/eval-partiel/output/eval3err.synt.xml new file mode 100644 index 0000000..cbfea55 --- /dev/null +++ b/eval-partiel/output/eval3err.synt.xml @@ -0,0 +1,28 @@ + + + + + entier + $i + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + diff --git a/eval-partiel/output/eval4.lex b/eval-partiel/output/eval4.lex new file mode 100644 index 0000000..a51d4f1 --- /dev/null +++ b/eval-partiel/output/eval4.lex @@ -0,0 +1,19 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +1 nombre 1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval4.synt b/eval-partiel/output/eval4.synt new file mode 100644 index 0000000..c855a07 --- /dev/null +++ b/eval-partiel/output/eval4.synt @@ -0,0 +1,112 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 1 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/eval4err.synt.xml b/eval-partiel/output/eval4err.synt.xml new file mode 100644 index 0000000..fa79479 --- /dev/null +++ b/eval-partiel/output/eval4err.synt.xml @@ -0,0 +1,5 @@ + + + + + entier diff --git a/eval-partiel/output/eval5.lex b/eval-partiel/output/eval5.lex new file mode 100644 index 0000000..a40b0de --- /dev/null +++ b/eval-partiel/output/eval5.lex @@ -0,0 +1,27 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval5.synt b/eval-partiel/output/eval5.synt new file mode 100644 index 0000000..f049cf1 --- /dev/null +++ b/eval-partiel/output/eval5.synt @@ -0,0 +1,154 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 0 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/eval5err.synt.xml b/eval-partiel/output/eval5err.synt.xml new file mode 100644 index 0000000..fa79479 --- /dev/null +++ b/eval-partiel/output/eval5err.synt.xml @@ -0,0 +1,5 @@ + + + + + entier diff --git a/eval-partiel/output/eval6.lex b/eval-partiel/output/eval6.lex new file mode 100644 index 0000000..df16673 --- /dev/null +++ b/eval-partiel/output/eval6.lex @@ -0,0 +1,62 @@ +entier mot_clef entier +$a id_variable $a +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT += symbole EGAL +10 nombre 10 +; symbole POINT_VIRGULE +$b id_variable $b += symbole EGAL +5 nombre 5 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a ++ symbole PLUS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +retour mot_clef retour +0 nombre 0 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval6.synt b/eval-partiel/output/eval6.synt new file mode 100644 index 0000000..0eeef81 --- /dev/null +++ b/eval-partiel/output/eval6.synt @@ -0,0 +1,443 @@ + + + + + entier + $a + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + VIRGULE + + entier + $b + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 10 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $b + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + CROCHET_OUVRANT + + + + + + + + 10 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + retour + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/eval7.lex b/eval-partiel/output/eval7.lex new file mode 100644 index 0000000..2fb15f9 --- /dev/null +++ b/eval-partiel/output/eval7.lex @@ -0,0 +1 @@ + symbole FIN diff --git a/eval-partiel/output/eval7.synt b/eval-partiel/output/eval7.synt new file mode 100644 index 0000000..56784dd --- /dev/null +++ b/eval-partiel/output/eval7.synt @@ -0,0 +1,6 @@ + + + + + + diff --git a/eval-partiel/output/eval8.lex b/eval-partiel/output/eval8.lex new file mode 100644 index 0000000..fb449a8 --- /dev/null +++ b/eval-partiel/output/eval8.lex @@ -0,0 +1,31 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/eval8.synt b/eval-partiel/output/eval8.synt new file mode 100644 index 0000000..812c711 --- /dev/null +++ b/eval-partiel/output/eval8.synt @@ -0,0 +1,222 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/expression.lex b/eval-partiel/output/expression.lex new file mode 100644 index 0000000..a569a71 --- /dev/null +++ b/eval-partiel/output/expression.lex @@ -0,0 +1,16 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +* symbole FOIS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/expression.synt b/eval-partiel/output/expression.synt new file mode 100644 index 0000000..4d058f0 --- /dev/null +++ b/eval-partiel/output/expression.synt @@ -0,0 +1,77 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + FOIS + + 2 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/output/max.lex b/eval-partiel/output/max.lex new file mode 100644 index 0000000..5b96821 --- /dev/null +++ b/eval-partiel/output/max.lex @@ -0,0 +1,72 @@ +max id_fonction max +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$a id_variable $a +< symbole INFERIEUR +$b id_variable $b +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +retour mot_clef retour +$a id_variable $a +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$v_1 id_variable $v_1 +, symbole VIRGULE +entier mot_clef entier +$v_2 id_variable $v_2 +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$v_1 id_variable $v_1 += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$v_2 id_variable $v_2 += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +si mot_clef si +max id_fonction max +( symbole PARENTHESE_OUVRANTE +$v_1 id_variable $v_1 +, symbole VIRGULE +$v_2 id_variable $v_2 +) symbole PARENTHESE_FERMANTE += symbole EGAL +$v_1 id_variable $v_1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$v_1 id_variable $v_1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$v_2 id_variable $v_2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/max.synt b/eval-partiel/output/max.synt new file mode 100644 index 0000000..08f06d7 --- /dev/null +++ b/eval-partiel/output/max.synt @@ -0,0 +1,513 @@ + + + + + + max + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + + $b + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + retour + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $v_1 + + + + + VIRGULE + + entier + $v_2 + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $v_1 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $v_2 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + max + PARENTHESE_OUVRANTE + + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + EGAL + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-partiel/output/tri.lex b/eval-partiel/output/tri.lex new file mode 100644 index 0000000..457125e --- /dev/null +++ b/eval-partiel/output/tri.lex @@ -0,0 +1,271 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +initialiser id_fonction initialiser +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT += symbole EGAL +8 nombre 8 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +1 nombre 1 +] symbole CROCHET_FERMANT += symbole EGAL +6 nombre 6 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +2 nombre 2 +] symbole CROCHET_FERMANT += symbole EGAL +9 nombre 9 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +3 nombre 3 +] symbole CROCHET_FERMANT += symbole EGAL +9 nombre 9 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +5 nombre 5 +] symbole CROCHET_FERMANT += symbole EGAL +2 nombre 2 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +6 nombre 6 +] symbole CROCHET_FERMANT += symbole EGAL +3 nombre 3 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +7 nombre 7 +] symbole CROCHET_FERMANT += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +8 nombre 8 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +9 nombre 9 +] symbole CROCHET_FERMANT += symbole EGAL +5 nombre 5 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$i id_variable $i +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$i id_variable $i +< symbole INFERIEUR +$n id_variable $n +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +echanger id_fonction echanger +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$temp id_variable $temp +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$temp id_variable $temp += symbole EGAL +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT += symbole EGAL +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT += symbole EGAL +$temp id_variable $temp +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +trier id_fonction trier +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$echange id_variable $echange +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +, symbole VIRGULE +entier mot_clef entier +$m id_variable $m +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$m id_variable $m += symbole EGAL +$n id_variable $n +; symbole POINT_VIRGULE +$echange id_variable $echange += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$echange id_variable $echange += symbole EGAL +1 nombre 1 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$echange id_variable $echange += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$j id_variable $j += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$j id_variable $j +< symbole INFERIEUR +$m id_variable $m +- symbole MOINS +1 nombre 1 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j ++ symbole PLUS +1 nombre 1 +] symbole CROCHET_FERMANT +< symbole INFERIEUR +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +echanger id_fonction echanger +( symbole PARENTHESE_OUVRANTE +$j id_variable $j +, symbole VIRGULE +$j id_variable $j ++ symbole PLUS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$echange id_variable $echange += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$j id_variable $j += symbole EGAL +$j id_variable $j ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$m id_variable $m += symbole EGAL +$m id_variable $m +- symbole MOINS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +initialiser id_fonction initialiser +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +trier id_fonction trier +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/output/tri.synt b/eval-partiel/output/tri.synt new file mode 100644 index 0000000..77a518b --- /dev/null +++ b/eval-partiel/output/tri.synt @@ -0,0 +1,2146 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + initialiser + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 8 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 1 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 6 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 2 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 3 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 5 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 2 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 6 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 3 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 7 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 8 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 9 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + afficher + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $i + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + + $n + + + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + echanger + + PARENTHESE_OUVRANTE + + + + entier + $i + + + + + VIRGULE + + entier + $j + + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $temp + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $temp + + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $temp + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + trier + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $echange + + + + + VIRGULE + + entier + $j + + + + + VIRGULE + + entier + $m + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $m + + + + EGAL + + + + + + + + + $n + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $echange + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $echange + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $j + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $j + + + + + + + + + + + + INFERIEUR + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + INFERIEUR + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + + echanger + PARENTHESE_OUVRANTE + + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + $j + + + + EGAL + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + $m + + + + EGAL + + + + + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + initialiser + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + trier + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + diff --git a/eval-partiel/ref-lex/affect.lex b/eval-partiel/ref-lex/affect.lex new file mode 100644 index 0000000..fb828db --- /dev/null +++ b/eval-partiel/ref-lex/affect.lex @@ -0,0 +1,18 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/boucle.lex b/eval-partiel/ref-lex/boucle.lex new file mode 100644 index 0000000..cbdea9f --- /dev/null +++ b/eval-partiel/ref-lex/boucle.lex @@ -0,0 +1,40 @@ +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$carre id_variable $carre +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$i id_variable $i +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$carre id_variable $carre += symbole EGAL +$i id_variable $i +* symbole FOIS +$i id_variable $i +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$carre id_variable $carre +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval1.lex b/eval-partiel/ref-lex/eval1.lex new file mode 100644 index 0000000..fbfdd45 --- /dev/null +++ b/eval-partiel/ref-lex/eval1.lex @@ -0,0 +1,100 @@ +add id_fonction add +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$a id_variable $a ++ symbole PLUS +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +mult id_fonction mult +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$a id_variable $a +* symbole FOIS +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +, symbole VIRGULE +entier mot_clef entier +$op id_variable $op +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$b id_variable $b += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$op id_variable $op += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +si mot_clef si +$op id_variable $op += symbole EGAL +1 nombre 1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +add id_fonction add +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +, symbole VIRGULE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$op id_variable $op += symbole EGAL +2 nombre 2 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +mult id_fonction mult +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +, symbole VIRGULE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval2.lex b/eval-partiel/ref-lex/eval2.lex new file mode 100644 index 0000000..40e933b --- /dev/null +++ b/eval-partiel/ref-lex/eval2.lex @@ -0,0 +1,51 @@ +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$n id_variable $n +< symbole INFERIEUR +2 nombre 2 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +1 nombre 1 +) symbole PARENTHESE_FERMANTE ++ symbole PLUS +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +$n id_variable $n +- symbole MOINS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +fibo id_fonction fibo +( symbole PARENTHESE_OUVRANTE +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval3.lex b/eval-partiel/ref-lex/eval3.lex new file mode 100644 index 0000000..53881f7 --- /dev/null +++ b/eval-partiel/ref-lex/eval3.lex @@ -0,0 +1,91 @@ +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +, symbole VIRGULE +entier mot_clef entier +$k id_variable $k +, symbole VIRGULE +entier mot_clef entier +$somme id_variable $somme +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$somme id_variable $somme += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +pour mot_clef pour +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$i id_variable $i +< symbole INFERIEUR +10 nombre 10 +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$j id_variable $j += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$j id_variable $j +< symbole INFERIEUR +$i id_variable $i +; symbole POINT_VIRGULE +$j id_variable $j += symbole EGAL +$j id_variable $j ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$k id_variable $k += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$k id_variable $k +< symbole INFERIEUR +$j id_variable $j +; symbole POINT_VIRGULE +$k id_variable $k += symbole EGAL +$k id_variable $k ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$somme id_variable $somme += symbole EGAL +$somme id_variable $somme ++ symbole PLUS +$i id_variable $i ++ symbole PLUS +$j id_variable $j ++ symbole PLUS +$k id_variable $k +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$somme id_variable $somme +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval4.lex b/eval-partiel/ref-lex/eval4.lex new file mode 100644 index 0000000..a51d4f1 --- /dev/null +++ b/eval-partiel/ref-lex/eval4.lex @@ -0,0 +1,19 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +1 nombre 1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval5.lex b/eval-partiel/ref-lex/eval5.lex new file mode 100644 index 0000000..a40b0de --- /dev/null +++ b/eval-partiel/ref-lex/eval5.lex @@ -0,0 +1,27 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval6.lex b/eval-partiel/ref-lex/eval6.lex new file mode 100644 index 0000000..df16673 --- /dev/null +++ b/eval-partiel/ref-lex/eval6.lex @@ -0,0 +1,62 @@ +entier mot_clef entier +$a id_variable $a +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT += symbole EGAL +10 nombre 10 +; symbole POINT_VIRGULE +$b id_variable $b += symbole EGAL +5 nombre 5 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a ++ symbole PLUS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +retour mot_clef retour +0 nombre 0 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/eval7.lex b/eval-partiel/ref-lex/eval7.lex new file mode 100644 index 0000000..2fb15f9 --- /dev/null +++ b/eval-partiel/ref-lex/eval7.lex @@ -0,0 +1 @@ + symbole FIN diff --git a/eval-partiel/ref-lex/eval8.lex b/eval-partiel/ref-lex/eval8.lex new file mode 100644 index 0000000..fb449a8 --- /dev/null +++ b/eval-partiel/ref-lex/eval8.lex @@ -0,0 +1,31 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$a id_variable $a += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/expression.lex b/eval-partiel/ref-lex/expression.lex new file mode 100644 index 0000000..a569a71 --- /dev/null +++ b/eval-partiel/ref-lex/expression.lex @@ -0,0 +1,16 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +* symbole FOIS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/max.lex b/eval-partiel/ref-lex/max.lex new file mode 100644 index 0000000..5b96821 --- /dev/null +++ b/eval-partiel/ref-lex/max.lex @@ -0,0 +1,72 @@ +max id_fonction max +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$a id_variable $a +< symbole INFERIEUR +$b id_variable $b +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +retour mot_clef retour +$a id_variable $a +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$v_1 id_variable $v_1 +, symbole VIRGULE +entier mot_clef entier +$v_2 id_variable $v_2 +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$v_1 id_variable $v_1 += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$v_2 id_variable $v_2 += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +si mot_clef si +max id_fonction max +( symbole PARENTHESE_OUVRANTE +$v_1 id_variable $v_1 +, symbole VIRGULE +$v_2 id_variable $v_2 +) symbole PARENTHESE_FERMANTE += symbole EGAL +$v_1 id_variable $v_1 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$v_1 id_variable $v_1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$v_2 id_variable $v_2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/test1.lex b/eval-partiel/ref-lex/test1.lex new file mode 100644 index 0000000..466ec61 --- /dev/null +++ b/eval-partiel/ref-lex/test1.lex @@ -0,0 +1,32 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$a id_variable $a += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/test2.lex b/eval-partiel/ref-lex/test2.lex new file mode 100644 index 0000000..466ec61 --- /dev/null +++ b/eval-partiel/ref-lex/test2.lex @@ -0,0 +1,32 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$a id_variable $a += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/test3.lex b/eval-partiel/ref-lex/test3.lex new file mode 100644 index 0000000..466ec61 --- /dev/null +++ b/eval-partiel/ref-lex/test3.lex @@ -0,0 +1,32 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +pour mot_clef pour +$a id_variable $a += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-lex/tri.lex b/eval-partiel/ref-lex/tri.lex new file mode 100644 index 0000000..457125e --- /dev/null +++ b/eval-partiel/ref-lex/tri.lex @@ -0,0 +1,271 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +initialiser id_fonction initialiser +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +0 nombre 0 +] symbole CROCHET_FERMANT += symbole EGAL +8 nombre 8 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +1 nombre 1 +] symbole CROCHET_FERMANT += symbole EGAL +6 nombre 6 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +2 nombre 2 +] symbole CROCHET_FERMANT += symbole EGAL +9 nombre 9 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +3 nombre 3 +] symbole CROCHET_FERMANT += symbole EGAL +9 nombre 9 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +5 nombre 5 +] symbole CROCHET_FERMANT += symbole EGAL +2 nombre 2 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +6 nombre 6 +] symbole CROCHET_FERMANT += symbole EGAL +3 nombre 3 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +7 nombre 7 +] symbole CROCHET_FERMANT += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +8 nombre 8 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +9 nombre 9 +] symbole CROCHET_FERMANT += symbole EGAL +5 nombre 5 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$i id_variable $i +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$i id_variable $i += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$i id_variable $i +< symbole INFERIEUR +$n id_variable $n +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$i id_variable $i += symbole EGAL +$i id_variable $i ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +echanger id_fonction echanger +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$i id_variable $i +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$temp id_variable $temp +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$temp id_variable $temp += symbole EGAL +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT += symbole EGAL +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$i id_variable $i +] symbole CROCHET_FERMANT += symbole EGAL +$temp id_variable $temp +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +trier id_fonction trier +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$n id_variable $n +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$echange id_variable $echange +, symbole VIRGULE +entier mot_clef entier +$j id_variable $j +, symbole VIRGULE +entier mot_clef entier +$m id_variable $m +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$m id_variable $m += symbole EGAL +$n id_variable $n +; symbole POINT_VIRGULE +$echange id_variable $echange += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$echange id_variable $echange += symbole EGAL +1 nombre 1 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +$echange id_variable $echange += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +$j id_variable $j += symbole EGAL +0 nombre 0 +; symbole POINT_VIRGULE +tantque mot_clef tantque +$j id_variable $j +< symbole INFERIEUR +$m id_variable $m +- symbole MOINS +1 nombre 1 +faire mot_clef faire +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j ++ symbole PLUS +1 nombre 1 +] symbole CROCHET_FERMANT +< symbole INFERIEUR +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$j id_variable $j +] symbole CROCHET_FERMANT +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +echanger id_fonction echanger +( symbole PARENTHESE_OUVRANTE +$j id_variable $j +, symbole VIRGULE +$j id_variable $j ++ symbole PLUS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$echange id_variable $echange += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$j id_variable $j += symbole EGAL +$j id_variable $j ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$m id_variable $m += symbole EGAL +$m id_variable $m +- symbole MOINS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +initialiser id_fonction initialiser +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +trier id_fonction trier +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +afficher id_fonction afficher +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-partiel/ref-synt/affect.synt b/eval-partiel/ref-synt/affect.synt new file mode 100644 index 0000000..038df30 --- /dev/null +++ b/eval-partiel/ref-synt/affect.synt @@ -0,0 +1,113 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/boucle.synt b/eval-partiel/ref-synt/boucle.synt new file mode 100644 index 0000000..c3cf0f2 --- /dev/null +++ b/eval-partiel/ref-synt/boucle.synt @@ -0,0 +1,283 @@ + + + + + entier + $i + + + + + VIRGULE + + entier + $carre + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $carre + + + + EGAL + + + + + + + + + $i + + + + + + FOIS + + + $i + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $carre + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/eval1.synt b/eval-partiel/ref-synt/eval1.synt new file mode 100644 index 0000000..d0afcbb --- /dev/null +++ b/eval-partiel/ref-synt/eval1.synt @@ -0,0 +1,681 @@ + + + + + + add + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $a + + + + + + + + + PLUS + + + + $b + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + mult + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $a + + + + + + FOIS + + + $b + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + VIRGULE + + entier + $op + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $op + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $op + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + add + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $op + + + + + + + + + + + + EGAL + + + + 2 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + mult + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + diff --git a/eval-partiel/ref-synt/eval2.synt b/eval-partiel/ref-synt/eval2.synt new file mode 100644 index 0000000..1ca6407 --- /dev/null +++ b/eval-partiel/ref-synt/eval2.synt @@ -0,0 +1,360 @@ + + + + + + fibo + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $n + + + + + + + + + + + + INFERIEUR + + + + 2 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + PLUS + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + + $n + + + + + + + + + MOINS + + + 2 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + fibo + PARENTHESE_OUVRANTE + + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-partiel/ref-synt/eval3.synt b/eval-partiel/ref-synt/eval3.synt new file mode 100644 index 0000000..295b490 --- /dev/null +++ b/eval-partiel/ref-synt/eval3.synt @@ -0,0 +1,652 @@ + + + + + entier + $i + + + + + VIRGULE + + entier + $j + + + + + VIRGULE + + entier + $k + + + + + VIRGULE + + entier + $somme + + + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $somme + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + pour + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + pour + + + $j + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $j + + + + + + + + + + + + INFERIEUR + + + + + $i + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $j + + + + EGAL + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + pour + + + $k + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $k + + + + + + + + + + + + INFERIEUR + + + + + $j + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $k + + + + EGAL + + + + + + + + + $k + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + + $somme + + + + EGAL + + + + + + + + + $somme + + + + + + + + + PLUS + + + + $i + + + + + + + + + PLUS + + + + $j + + + + + + + + + PLUS + + + + $k + + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $somme + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/eval4.synt b/eval-partiel/ref-synt/eval4.synt new file mode 100644 index 0000000..c855a07 --- /dev/null +++ b/eval-partiel/ref-synt/eval4.synt @@ -0,0 +1,112 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 1 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/eval5.synt b/eval-partiel/ref-synt/eval5.synt new file mode 100644 index 0000000..f049cf1 --- /dev/null +++ b/eval-partiel/ref-synt/eval5.synt @@ -0,0 +1,154 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 0 + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/eval6.synt b/eval-partiel/ref-synt/eval6.synt new file mode 100644 index 0000000..0eeef81 --- /dev/null +++ b/eval-partiel/ref-synt/eval6.synt @@ -0,0 +1,443 @@ + + + + + entier + $a + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + VIRGULE + + entier + $b + + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 10 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $b + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + CROCHET_OUVRANT + + + + + + + + 10 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + retour + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/eval7.synt b/eval-partiel/ref-synt/eval7.synt new file mode 100644 index 0000000..56784dd --- /dev/null +++ b/eval-partiel/ref-synt/eval7.synt @@ -0,0 +1,6 @@ + + + + + + diff --git a/eval-partiel/ref-synt/eval8.synt b/eval-partiel/ref-synt/eval8.synt new file mode 100644 index 0000000..812c711 --- /dev/null +++ b/eval-partiel/ref-synt/eval8.synt @@ -0,0 +1,222 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/expression.synt b/eval-partiel/ref-synt/expression.synt new file mode 100644 index 0000000..4d058f0 --- /dev/null +++ b/eval-partiel/ref-synt/expression.synt @@ -0,0 +1,77 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + FOIS + + 2 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/max.synt b/eval-partiel/ref-synt/max.synt new file mode 100644 index 0000000..08f06d7 --- /dev/null +++ b/eval-partiel/ref-synt/max.synt @@ -0,0 +1,513 @@ + + + + + + max + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + + $b + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + retour + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $v_1 + + + + + VIRGULE + + entier + $v_2 + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $v_1 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $v_2 + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + max + PARENTHESE_OUVRANTE + + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + EGAL + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_1 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $v_2 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-partiel/ref-synt/test1.synt b/eval-partiel/ref-synt/test1.synt new file mode 100644 index 0000000..52042e9 --- /dev/null +++ b/eval-partiel/ref-synt/test1.synt @@ -0,0 +1,215 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + pour + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/test2.synt b/eval-partiel/ref-synt/test2.synt new file mode 100644 index 0000000..52042e9 --- /dev/null +++ b/eval-partiel/ref-synt/test2.synt @@ -0,0 +1,215 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + pour + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/test3.synt b/eval-partiel/ref-synt/test3.synt new file mode 100644 index 0000000..52042e9 --- /dev/null +++ b/eval-partiel/ref-synt/test3.synt @@ -0,0 +1,215 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + pour + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-partiel/ref-synt/tri.synt b/eval-partiel/ref-synt/tri.synt new file mode 100644 index 0000000..77a518b --- /dev/null +++ b/eval-partiel/ref-synt/tri.synt @@ -0,0 +1,2146 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + initialiser + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 0 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 8 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 1 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 6 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 2 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 3 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 9 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 5 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 2 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 6 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 3 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 7 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 8 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 9 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 5 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + afficher + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $i + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $i + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $i + + + + + + + + + + + + INFERIEUR + + + + + $n + + + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $i + + + + EGAL + + + + + + + + + $i + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + echanger + + PARENTHESE_OUVRANTE + + + + entier + $i + + + + + VIRGULE + + entier + $j + + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $temp + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $temp + + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $i + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $temp + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + trier + + PARENTHESE_OUVRANTE + + + + entier + $n + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $echange + + + + + VIRGULE + + entier + $j + + + + + VIRGULE + + entier + $m + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $m + + + + EGAL + + + + + + + + + $n + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $echange + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $echange + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $j + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $j + + + + + + + + + + + + INFERIEUR + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + INFERIEUR + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + + echanger + PARENTHESE_OUVRANTE + + + + + + + + + + $j + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + $echange + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + $j + + + + EGAL + + + + + + + + + $j + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + $m + + + + EGAL + + + + + + + + + $m + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + initialiser + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + trier + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + afficher + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + diff --git a/eval-partiel/runEval.sh b/eval-partiel/runEval.sh new file mode 100755 index 0000000..ddd17c9 --- /dev/null +++ b/eval-partiel/runEval.sh @@ -0,0 +1,157 @@ +#!/bin/bash + +################################################################################ +# Script d'évaluation automatique des compilateurs du projet. +# Compile le programme source et compare avec la référence. +# Comprend analyse lexicale, syntaxique, arbre abstrait, table des symboles et +# code MIPS. +################################################################################ + +# MODIFIEZ LES VARIABLES CI-DESSOUS AVEC LE CHEMIN/OPTIONS DE VOTRE COMPILATEUR + +MYCOMPILO="../compilateur-l" +MYCOMPILOLEX="${MYCOMPILO} -l" +MYCOMPILOSYNT="${MYCOMPILO} -s" +#MYCOMPILOASYNT="${MYCOMPILO} -a" +#MYCOMPILOTAB="${MYCOMPILO} -t" +#MYCOMPILOMIPS="${MYCOMPILO} -m" + +################################################################################ + +XMLDIFF="./compare_arbres_xml" +REGDIFF="diff -q -w" +EXITONFAIL=1 +declare -A testname +testname["lex"]="Analyse lexicale" +testname["synt"]="Analyse syntaxique" +#testname["asynt"]="Arbre abstrait" +#testname["tab"]="Table des symboles" +#testname["mips"]="Code machine MIPS" + +################################################################################ + +function diff_prog() { + diffprog=$1 + input=$2 + suffix=$3 + echo -e "\033[35m > ${testname[${suffix}]} (.${suffix})\033[0m" + if [ -f ref-${suffix}/$input.${suffix} ]; then + ${diffprog} output/${input}.${suffix} ref-${suffix}/${input}.${suffix} 2> /dev/null + if [ $? != 0 ]; then + echo -e "\033[31mTEST ${testname[${suffix}]} ÉCHOUÉ\033[0m" + echo -e "Pour connaître les différences, exécutez :" + echo -e " diff output/${input}.${suffix} ref-${suffix}/${input}.${suffix}" + if [ $EXITONFAIL = 1 ]; then exit 1; fi + else + echo -e "\033[32mTEST ${testname[${suffix}]} OK\033[0m" + fi + else + echo -e "\033[34mRéférence ref-${suffix}/${input}.${suffix} absente\033[0m" + fi +} + +################################################################################ + +function test_fichier_ok() { + input=$1 + echo -e "\n\033[4m ---- Test input/$input.l ----\033[0m" + if [ -f input/$input.l ]; then + echo -e "\033[35m > Reconnaissance (accepte l'entrée)\033[0m" + ${MYCOMPILOSYNT} input/$input.l > output/$input.synt + if [ $? != 0 ]; then + echo -e "\033[31mTEST Reconnaissance ÉCHOUÉ\033[0m" + echo -e "Le programme $input.l n'a pas été compilé correctement" + if [ $EXITONFAIL = 1 ]; then exit 1; fi + else + echo -e "\033[32mTEST Reconnaissance OK\033[0m" + fi + ${MYCOMPILOLEX} input/$input.l > output/$input.lex + diff_prog "${REGDIFF}" $input lex + diff_prog ${XMLDIFF} $input synt + #${MYCOMPILOASYNT} input/$input.l > output/$input.asynt + #diff_prog ${XMLDIFF} $input asynt + #${MYCOMPILOTAB} input/$input.l > output/$input.tab + #diff_prog "${REGDIFF}" $input tab + #${MYCOMPILOMIPS} input/$input.l > output/$input.mips + #diff_prog "${REGDIFF}" $input mips + else + echo -e "\033[31minput/$input.l non trouvé\033[0m" + echo -e "\033[31mTest impossible\033[0m" + fi +} + +################################################################################ + +function test_fichier_fail() { + input=$1 + echo -e "\n\033[4m ---- Test input/$input.l ----\033[0m" + ${MYCOMPILOSYNT} input/$input.l > output/$input.synt.xml + if [ $? = 0 ]; then + echo -e "\033[31mTEST REJET ÉCHOUÉ\033[0m" + echo -e "Le programme $input.l a été accepté alors qu'il aurait dû être rejeté" + if [ $EXITONFAIL = 1 ]; then exit 1; fi + else + echo -e "\033[32mTEST REJET OK\033[0m" + fi +} + +################################################################################ + +mkdir -p output +make + +echo -e "Votre compilateur : ${MYCOMPILO}" +if [ ! -f ${MYCOMPILO} ]; then + echo -e "\033[31mCompilateur introuvable" + echo -e "Modifiez la variable MYCOMPILO avant de lancer l'éval\033[0m" + exit 1 +fi + +################################################################################ + +echo -e "\033[1m\n>> 1) Tests connus OK\033[0m" + +test_fichier_ok affect +test_fichier_ok boucle +test_fichier_ok expression +test_fichier_ok max +test_fichier_ok tri + +################################################################################ + +echo -e "\033[1m\n>> 1) Tests connus FAIL\033[0m" + +test_fichier_fail affect-err + +################################################################################ + +echo -e "\033[1m\n>> 1) Tests nouveaux OK\033[0m" + +test_fichier_ok eval1 +test_fichier_ok eval2 +test_fichier_ok eval3 +test_fichier_ok eval4 +test_fichier_ok eval5 +test_fichier_ok eval6 +test_fichier_ok eval7 +test_fichier_ok eval8 + +# Decommenter +# test_fichier_ok test1 +# test_fichier_ok test2 +# test_fichier_ok test3 + +################################################################################ + +echo -e "\033[1m\n>> 1) Tests nouveaux FAIL\033[0m" + +test_fichier_fail eval1err +test_fichier_fail eval2err +test_fichier_fail eval3err +test_fichier_fail eval4err +test_fichier_fail eval5err + +# Decommenter +# test_fichier_fail test1err + +################################################################################ diff --git a/header/analyseur_syntaxyque.h b/header/analyseur_syntaxyque.h index c386614..c281509 100644 --- a/header/analyseur_syntaxyque.h +++ b/header/analyseur_syntaxyque.h @@ -37,6 +37,7 @@ void instructionTantque (void); void instructionAppel (void); void instructionRetour (void); void instructionEcriture (void); +void instructionPour (void); void instructionVide (void); void expression (void); void expressionBis (void); diff --git a/header/symboles.h b/header/symboles.h index e478bc1..2501b9a 100644 --- a/header/symboles.h +++ b/header/symboles.h @@ -2,7 +2,7 @@ #define EPSILON 0 -#define NB_NON_TERMINAUX 42 +#define NB_NON_TERMINAUX 43 #define _listeDecVariables_ 1 #define _listeDecFonctions_ 2 @@ -44,11 +44,12 @@ #define _expressionBis_ 39 #define _instructionFaire_ 40 #define _optListeDecVariables_ 41 +#define _instructionPour_ 42 /* symboles terminaux */ -#define NB_TERMINAUX 31 +#define NB_TERMINAUX 32 #define POINT_VIRGULE 1 #define PLUS 2 @@ -80,5 +81,4 @@ #define NOMBRE 28 #define FIN 29 #define VIRGULE 30 - - +#define POUR 31 \ No newline at end of file diff --git a/src/analyseur_lexical.c b/src/analyseur_lexical.c index 2812771..334860e 100644 --- a/src/analyseur_lexical.c +++ b/src/analyseur_lexical.c @@ -31,16 +31,16 @@ int codeSymbole[] = { }; char *tableMotsClefs[] = { - "si", "alors", "sinon", "tantque", "faire", "entier", "retour", "lire", "ecrire", '\0' + "si", "alors", "sinon", "tantque", "faire", "entier", "retour", "lire", "ecrire", "pour", '\0' }; int codeMotClefs[] = { - SI, ALORS, SINON, TANTQUE, FAIRE, ENTIER, RETOUR, LIRE, ECRIRE + SI, ALORS, SINON, TANTQUE, FAIRE, ENTIER, RETOUR, LIRE, ECRIRE, POUR }; char yytext[YYTEXT_MAX]; int yyleng; -int nbMotsClefs = 9; +int nbMotsClefs = 10; /* Compter les lignes pour afficher les messages d'erreur avec numero ligne */ int nb_ligne = 1; diff --git a/src/analyseur_syntaxyque.c b/src/analyseur_syntaxyque.c index 0b58dda..db72dc6 100644 --- a/src/analyseur_syntaxyque.c +++ b/src/analyseur_syntaxyque.c @@ -44,11 +44,11 @@ void syntaxErrorMsg( const char * msg ) void programme() { openSection( __func__ ); - if( est_premier( _optDecVariables_, uniteCourante ) || est_premier( _listeDecFonctions_, uniteCourante )) { + if( !est_premier( _optDecVariables_, uniteCourante ) && !est_premier( _listeDecFonctions_, uniteCourante ) && !est_suivant( _listeDecFonctions_, uniteCourante )) { + syntaxError(); + } else { optDecVariables(); listeDecFonctions(); - } else if ( !est_suivant( _listeDecFonctions_, uniteCourante ) ) { - syntaxError(); } closeSection( __func__ ); @@ -234,6 +234,8 @@ void instruction() { instructionRetour(); } else if( est_premier( _instructionEcriture_, uniteCourante ) ) { instructionEcriture(); + } else if( est_premier( _instructionPour_, uniteCourante ) ) { + instructionPour(); } else if( est_premier( _instructionVide_, uniteCourante ) ) { instructionVide(); } else { @@ -447,6 +449,42 @@ void instructionEcriture() { closeSection( __func__ ); } +void instructionPour() { + openSection( __func__ ); + + if( uniteCourante == POUR ) { + elementConsome(); + uniteCourante = yylex(); + + instructionAffect(); + expression(); + + if( uniteCourante == POINT_VIRGULE ) { + elementConsome(); + uniteCourante = yylex(); + + instructionAffect(); + + if( uniteCourante == FAIRE ) { + elementConsome(); + uniteCourante = yylex(); + + instructionBloc(); + + } else { + syntaxErrorMsg( "'faire' été attendu" ); + } + + } else { + syntaxErrorMsg( "';' été attendu" ); + } + } else { + syntaxErrorMsg( "'pour' été attendu" ); + } + + closeSection( __func__ ); +} + void instructionVide() { openSection( __func__ ); diff --git a/src/premiers.c b/src/premiers.c index e9b17ca..a9b7292 100644 --- a/src/premiers.c +++ b/src/premiers.c @@ -44,6 +44,7 @@ void initialise_premiers(void){ premiers[_instruction_][RETOUR] = 1; premiers[_instruction_][ECRIRE] = 1; premiers[_instruction_][POINT_VIRGULE] = 1; + premiers[_instruction_][POUR] = 1; premiers[_instructionAffect_][ID_VAR] = 1; @@ -58,6 +59,7 @@ void initialise_premiers(void){ premiers[_listeInstructions_][ECRIRE] = 1; premiers[_listeInstructions_][POINT_VIRGULE] = 1; premiers[_listeInstructions_][EPSILON] = 1; + premiers[_listeInstructions_][POUR] = 1; premiers[_instructionSi_][SI] = 1; @@ -72,6 +74,8 @@ void initialise_premiers(void){ premiers[_instructionEcriture_][ECRIRE] = 1; + premiers[_instructionPour_][POUR] = 1; + premiers[_instructionVide_][POINT_VIRGULE] = 1; premiers[_expression_][NON] = 1; diff --git a/src/suivants.c b/src/suivants.c index 60d1e2a..c158faa 100644 --- a/src/suivants.c +++ b/src/suivants.c @@ -48,6 +48,7 @@ void initialise_suivants(void){ suivants[_instruction_][RETOUR] = 1; suivants[_instruction_][ECRIRE] = 1; suivants[_instruction_][POINT_VIRGULE] = 1; + suivants[_instruction_][POUR] = 1; suivants[_instructionAffect_][ID_VAR] = 1; suivants[_instructionAffect_][ACCOLADE_FERMANTE] = 1; @@ -58,6 +59,7 @@ void initialise_suivants(void){ suivants[_instructionAffect_][RETOUR] = 1; suivants[_instructionAffect_][ECRIRE] = 1; suivants[_instructionAffect_][POINT_VIRGULE] = 1; + suivants[_instructionAffect_][POUR] = 1; suivants[_instructionBloc_][FIN] = 1; suivants[_instructionBloc_][ID_VAR] = 1; @@ -70,6 +72,7 @@ void initialise_suivants(void){ suivants[_instructionBloc_][ECRIRE] = 1; suivants[_instructionBloc_][POINT_VIRGULE] = 1; suivants[_instructionBloc_][SINON] = 1; + suivants[_instructionBloc_][POUR] = 1; suivants[_listeInstructions_][ACCOLADE_FERMANTE] = 1; @@ -82,6 +85,7 @@ void initialise_suivants(void){ suivants[_instructionSi_][RETOUR] = 1; suivants[_instructionSi_][ECRIRE] = 1; suivants[_instructionSi_][POINT_VIRGULE] = 1; + suivants[_instructionSi_][POUR] = 1; suivants[_optSinon_][ID_VAR] = 1; suivants[_optSinon_][ACCOLADE_OUVRANTE] = 1; @@ -92,6 +96,7 @@ void initialise_suivants(void){ suivants[_optSinon_][RETOUR] = 1; suivants[_optSinon_][ECRIRE] = 1; suivants[_optSinon_][POINT_VIRGULE] = 1; + suivants[_optSinon_][POUR] = 1; suivants[_instructionTantque_][ID_VAR] = 1; suivants[_instructionTantque_][ACCOLADE_OUVRANTE] = 1; @@ -102,6 +107,7 @@ void initialise_suivants(void){ suivants[_instructionTantque_][RETOUR] = 1; suivants[_instructionTantque_][ECRIRE] = 1; suivants[_instructionTantque_][POINT_VIRGULE] = 1; + suivants[_instructionTantque_][POUR] = 1; suivants[_instructionAppel_][ID_VAR] = 1; suivants[_instructionAppel_][ACCOLADE_OUVRANTE] = 1; @@ -112,6 +118,7 @@ void initialise_suivants(void){ suivants[_instructionAppel_][RETOUR] = 1; suivants[_instructionAppel_][ECRIRE] = 1; suivants[_instructionAppel_][POINT_VIRGULE] = 1; + suivants[_instructionAppel_][POUR] = 1; suivants[_instructionRetour_][ID_VAR] = 1; suivants[_instructionRetour_][ACCOLADE_OUVRANTE] = 1; @@ -122,6 +129,7 @@ void initialise_suivants(void){ suivants[_instructionRetour_][RETOUR] = 1; suivants[_instructionRetour_][ECRIRE] = 1; suivants[_instructionRetour_][POINT_VIRGULE] = 1; + suivants[_instructionRetour_][POUR] = 1; suivants[_instructionEcriture_][ID_VAR] = 1; suivants[_instructionEcriture_][ACCOLADE_OUVRANTE] = 1; @@ -132,6 +140,18 @@ void initialise_suivants(void){ suivants[_instructionEcriture_][RETOUR] = 1; suivants[_instructionEcriture_][ECRIRE] = 1; suivants[_instructionEcriture_][POINT_VIRGULE] = 1; + suivants[_instructionEcriture_][POUR] = 1; + + suivants[_instructionPour_][ID_VAR] = 1; + suivants[_instructionPour_][ACCOLADE_OUVRANTE] = 1; + suivants[_instructionPour_][ACCOLADE_FERMANTE] = 1; + suivants[_instructionPour_][SI] = 1; + suivants[_instructionPour_][TANTQUE] = 1; + suivants[_instructionPour_][ID_FCT] = 1; + suivants[_instructionPour_][RETOUR] = 1; + suivants[_instructionPour_][ECRIRE] = 1; + suivants[_instructionPour_][POINT_VIRGULE] = 1; + suivants[_instructionPour_][POUR] = 1; suivants[_instructionVide_][ID_VAR] = 1; suivants[_instructionVide_][ACCOLADE_OUVRANTE] = 1; @@ -142,6 +162,7 @@ void initialise_suivants(void){ suivants[_instructionVide_][RETOUR] = 1; suivants[_instructionVide_][ECRIRE] = 1; suivants[_instructionVide_][POINT_VIRGULE] = 1; + suivants[_instructionVide_][POUR] = 1; suivants[_expression_][POINT_VIRGULE] = 1; suivants[_expression_][ALORS] = 1;