diff --git a/eval-final-projet/Makefile b/eval-final-projet/Makefile new file mode 100644 index 0000000..9022348 --- /dev/null +++ b/eval-final-projet/Makefile @@ -0,0 +1,17 @@ +CC = gcc + +LIBS = -lm +CCFLAGS = -Wall -ggdb + +all: compare_arbres_xml + +compare_arbres_xml: compare_arbres_xml.c analyseur_xml.o + $(CC) $(CCFLAGS) -o compare_arbres_xml compare_arbres_xml.c analyseur_xml.o + +analyseur_xml.o: analyseur_xml.c + $(CC) $(CCFLAGS) -c analyseur_xml.c + +.PHONY : clean + +clean: + - rm -f *.o compare_arbres_xml diff --git a/eval-final-projet/Mars4_5.jar b/eval-final-projet/Mars4_5.jar new file mode 100644 index 0000000..0021281 Binary files /dev/null and b/eval-final-projet/Mars4_5.jar differ diff --git a/eval-final-projet/README.html b/eval-final-projet/README.html new file mode 100644 index 0000000..f6af45a --- /dev/null +++ b/eval-final-projet/README.html @@ -0,0 +1,95 @@ + + + + + Carlos Ramisch - personal page + + + + +
+

Évaluation finale du compilateur 2015/2016

+ +

0 - Compilation du compilateur

+ +Compilez votre compilateur à l'aide d'un Makefile. + +

1 - Exécution sur des exemples existants

+ + +

Modifiez le script testAll.sh fourni (version d'évaluation) en modifiant le chemin vers l'exécutable de votre compilateur. Ouvrez le script et lisez attentivement les instructions pour modifier également les options/chemins qui permettent de générer du XML arbre abstrait, table des symboles et mips. Ensuite, exécutez-le pour effectuer les tests ci-dessous 100% automatiquement

+ +

Analysez les programmes suivants (il s'agit des exemples connus, fournis comme base de tests minimale):

+ + + + + + + + +
eval1.l
eval2.l
eval3.l
eval4.l
eval5.l
eval1-err.l
+ +

2 - Exécution sur de nouveaux exemples

+ +

2.1 Exemples compilés OK

+ +

Compilez à l'aide de votre compilateur, les programmes suivants, et vérifiez que tout se passe bien :

+ + + + + + + + + + + + +
eval6.leval16.l
eval7.leval17.l
eval8.leval18.l
eval9.leval19.l
eval10.leval20.l
eval11.leval21.l
eval12.leval22.l
eval13.leval23.l
eval14.leval24.l
eval15.l
+ +

2.2 Exemples pas compilés

+ +

Vérifiez que les programmes suivants ne compilent pas :

+ + + + + + + + + + + + + +
eval2-err.l
eval3-err.l
eval4-err.l
eval5-err.l
eval6-err.l
eval7-err.l
eval8-err.l
eval9-err.l
eval10-err.l
eval11-err.l
eval12-err.l
+ +

3 - Ajout de l'expression conditionnelle ?:

+ +

On désire ajouter à notre langage une expression conditionnelle à l'aide des opérateurs ? et : dont voici la syntaxe:

+ +

expression -> condition '?' expressionvrai ':' expressionfaux | condition

+ +

Cette expression donne la valeur de expressionvrai si la valeur de condition est vraie, et la valeur de expressionfaux si la valeur de condition est fausse. Autrement dit, c'est comme une instruction si qui, au lieu de choisir entre deux blocs d'instructions, choisit entre les valeurs de deux expressions. Par exemple, $a > 10 ? 1 : 0 vaut 1 si $a = 11, 12, 13... et zéro pour toute valeur de $a inférieure ou égale à 10.

+ +

Sa précédence est la moins importante de toutes, inférieures à celle du ou. Vous devez donc la rajouter au niveau du non-terminal expression dans la grammaire. Contrairement aux autres expressions du langage L, cette expression est associative droite, c'est-à-dire, 1 ? 0 : 1 ? 0 : 1 doit être interprété comme 1 ? 0 : (1 ? 0 : 1) et vaut 0.

+ +

Modifiez l'analyseur lexical, l'analyseur syntaxique, la structure de +l'arbre abstrait, et la génération de code afin de prendre en compte cette nouvelle instruction.

+ +

Vous testerez votre nouvel analyseur sur les programmes suivants:

+ + + + + + +
eval25.l
eval26.l
eval27.l
eval13-err.l - ne doit pas compiler
+
+
+ + + diff --git a/eval-final-projet/analyseur_xml.c b/eval-final-projet/analyseur_xml.c new file mode 100644 index 0000000..164345b --- /dev/null +++ b/eval-final-projet/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-final-projet/analyseur_xml.h b/eval-final-projet/analyseur_xml.h new file mode 100644 index 0000000..1ec5aa1 --- /dev/null +++ b/eval-final-projet/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-final-projet/compare_arbres_xml.c b/eval-final-projet/compare_arbres_xml.c new file mode 100644 index 0000000..1231486 --- /dev/null +++ b/eval-final-projet/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-final-projet/fiche_eval2016_aixfinal.pdf b/eval-final-projet/fiche_eval2016_aixfinal.pdf new file mode 100644 index 0000000..a68276e Binary files /dev/null and b/eval-final-projet/fiche_eval2016_aixfinal.pdf differ diff --git a/eval-final-projet/fiche_eval2016_aixfinal.tex b/eval-final-projet/fiche_eval2016_aixfinal.tex new file mode 100644 index 0000000..abcfb5a --- /dev/null +++ b/eval-final-projet/fiche_eval2016_aixfinal.tex @@ -0,0 +1,147 @@ +\documentclass[12pt,a4paper]{article} +\usepackage[utf8]{inputenc} +\usepackage[french]{babel} +\usepackage{fancyheadings} +\usepackage{color} +\usepackage{graphicx} +\usepackage{epsfig} +\usepackage[top=1.9cm]{geometry} +%\usepackage{fguill} +\usepackage{tipa} +\usepackage{longtable} +\newcommand{\gui}[1]{\og{#1}\fg} +\newcommand{\ouf}{\vspace{3mm}} + +\newcounter{serie} \setcounter{serie}1 +\newcounter{numexo} +\newcommand{\exonum}{Q.\theserie.\addtocounter{numexo}{1}\thenumexo.} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\title{\vspace{-1em}Evaluation finale du compilateur 2015/2016\vspace{-1em}} +%\author{} +\date{} +%\date{4 janvier 2009} + +\begin{document} +\setlength{\parindent}{0cm} + +\maketitle + +\lhead{\emph{Université Aix Marseille - L3 Informatique}} +\rhead{\emph{Compilation}} +%\setlength{\headrulewidth}{0.25pt} +\thispagestyle{fancy} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +NOM~:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~PRENOM~:\\ +NOM~:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~PRENOM~:\\ + + +%Le sujet de l'évaluation se trouve à l'adresse suivante~:\\ +%{\tt http://pageperso.lif.univ-mrs.fr/\~{}alexis.nasr/Ens/Compilation/eval\_2012.html}\\ + + +\subsection*{0 Compilation du compilateur} + +\begin{longtable}{|l|l|} \hline +Arbre abstrait & ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~\\ +& \\\hline +Table des symboles & \\ +& \\\hline +Génération de code & \\ +& \\\hline +Extensions/améliorations & \\ +& \\\hline +\end{longtable} + +\subsection*{1 Exécution sur des exemples existants} + +\begin{longtable}{|p{2.5cm}|l|l|l|l|} \hline +source & reco & syntabs & tab & mips \\ \hline +\endhead +{\tt eval1.l} &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ \\ \hline +{\tt eval2.l} & & & & \\ \hline +{\tt eval3.l} & & & & \\ \hline +{\tt eval4.l} & & & & \\ \hline +{\tt eval5.l} & & & & \\ \hline \hline +{\tt eval1-err.l} & & ------------ & ------------ & ------------ \\ \hline +\end{longtable} + +\subsection*{2 Exécution sur de nouveaux exemples} + +\subsubsection*{2.1 Exemples compilés OK} + + +\begin{longtable}{|p{2.5cm}|l|l|l|l|} \hline +source & reco & syntabs & tab & mips \\ \hline +\endhead +{\tt eval6.l} &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ \\ \hline +{\tt eval7.l} & & & & \\ \hline +{\tt eval8.l} & & & & \\ \hline +{\tt eval9.l} & & & & \\ \hline +{\tt eval10.l} & & & & \\ \hline +{\tt eval11.l} & & & & \\ \hline +{\tt eval12.l} & & & & \\ \hline +{\tt eval13.l} & & & & \\ \hline +{\tt eval14.l} & & & & \\ \hline +{\tt eval15.l} & & & & \\ \hline +{\tt eval16.l} & & & & \\ \hline +{\tt eval17.l} & & & & \\ \hline +{\tt eval18.l} & & & & \\ \hline +{\tt eval19.l} & & & & \\ \hline +{\tt eval20.l} & & & & \\ \hline +{\tt eval21.l} & & & & \\ \hline +{\tt eval22.l} & & & & \\ \hline +{\tt eval23.l} & & & & \\ \hline +{\tt eval24.l} & & & & \\ \hline +\end{longtable} + +%\begin{tabular}{|l|l|l|} \hline +%fichier de test & compilation & exécution \\ \hline +%{\tt eval4.l} & & & & & \\ \hline +%{\tt eval5.l} & & & & & \\ \hline +%{\tt eval6.l} & & & & & \\ \hline +%\end{tabular} + +\subsubsection*{2.2 Exemples pas compilés} + +\begin{longtable}{|p{2.5cm}|l|} \hline +source & reco \\ \hline +{\tt eval2-err.l} &~~~~~~~~~~~~~~~~ \\ \hline +{\tt eval3-err.l} & \\ \hline +{\tt eval4-err.l} & \\ \hline +{\tt eval5-err.l} & \\ \hline +{\tt eval6-err.l} & \\ \hline +{\tt eval7-err.l} & \\ \hline +{\tt eval8-err.l} & \\ \hline +{\tt eval9-err.l} & \\ \hline +{\tt eval10-err.l} & \\ \hline +{\tt eval11-err.l} & \\ \hline +{\tt eval12-err.l} & \\ \hline + +\end{longtable} + +\subsection*{3 Nouvelle fonctionnalité} + +\begin{longtable}{|p{2.5cm}|l|l|l|l|} \hline +source & reco & syntabs & tab & mips \\ \hline +{\tt eval25.l} &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ &~~~~~~~~~~~~~~~~ \\ \hline +{\tt eval26.l} & & & & \\ \hline +{\tt eval27.l} & & & & \\ \hline +{\tt eval13-err.l} & & ------------ & ------------ & ------------ \\ \hline +\end{longtable} + +\subsubsection*{Remarques} + +\begin{longtable}{|p{3cm}|p{11cm}|} \hline +& \\ +programmation & \\ +& \\\hline +& \\ +compilation & \\ +& \\\hline +\end{longtable} + + +\end{document} diff --git a/eval-final-projet/input/eval1-err.l b/eval-final-projet/input/eval1-err.l new file mode 100644 index 0000000..f142572 --- /dev/null +++ b/eval-final-projet/input/eval1-err.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +$a = 5; +ecrire( $a ); +} +$extra = 0; diff --git a/eval-final-projet/input/eval1.l b/eval-final-projet/input/eval1.l new file mode 100644 index 0000000..576dc8d --- /dev/null +++ b/eval-final-projet/input/eval1.l @@ -0,0 +1,6 @@ +entier $a; +main() +{ +$a = 1; +ecrire($a); +} diff --git a/eval-final-projet/input/eval10-err.l b/eval-final-projet/input/eval10-err.l new file mode 100644 index 0000000..b1d4456 --- /dev/null +++ b/eval-final-projet/input/eval10-err.l @@ -0,0 +1 @@ +33a diff --git a/eval-final-projet/input/eval10.l b/eval-final-projet/input/eval10.l new file mode 100644 index 0000000..4b4e67c --- /dev/null +++ b/eval-final-projet/input/eval10.l @@ -0,0 +1,11 @@ +procedure() +{ +retour 1; +} + +main() +{ +ecrire(procedure()); +} + + diff --git a/eval-final-projet/input/eval11-err.l b/eval-final-projet/input/eval11-err.l new file mode 100644 index 0000000..01c44dc --- /dev/null +++ b/eval-final-projet/input/eval11-err.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-final-projet/input/eval11.l b/eval-final-projet/input/eval11.l new file mode 100644 index 0000000..4744caa --- /dev/null +++ b/eval-final-projet/input/eval11.l @@ -0,0 +1,13 @@ +procedure() +entier $a; +{ +$a = 1; +ecrire($a); +} + +main() +{ +procedure(); +} + + diff --git a/eval-final-projet/input/eval12-err.l b/eval-final-projet/input/eval12-err.l new file mode 100644 index 0000000..e69de29 diff --git a/eval-final-projet/input/eval12.l b/eval-final-projet/input/eval12.l new file mode 100644 index 0000000..7b37cf3 --- /dev/null +++ b/eval-final-projet/input/eval12.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +si 1 alors +{ecrire(1); +} +} diff --git a/eval-final-projet/input/eval13-err.l b/eval-final-projet/input/eval13-err.l new file mode 100644 index 0000000..9c1bfc9 --- /dev/null +++ b/eval-final-projet/input/eval13-err.l @@ -0,0 +1,4 @@ +main() +{ + ecrire( 1 ? 0 ? 1 : 1 ? 0 ); +} diff --git a/eval-final-projet/input/eval13.l b/eval-final-projet/input/eval13.l new file mode 100644 index 0000000..beeda13 --- /dev/null +++ b/eval-final-projet/input/eval13.l @@ -0,0 +1,9 @@ +entier $a; +main() +{ +si 0 alors +{ecrire(1); +} +sinon +{ecrire(0);} +} diff --git a/eval-final-projet/input/eval14.l b/eval-final-projet/input/eval14.l new file mode 100644 index 0000000..bf2915b --- /dev/null +++ b/eval-final-projet/input/eval14.l @@ -0,0 +1,18 @@ +entier $tab[10]; + +main() +entier $a; +{ +$a=0; +tantque $a < 10 faire{ +$tab[$a] = $a; +$a = $a + 1; +} +$a = 0; +tantque $a < 10 faire{ +ecrire($tab[$a]); +$a = $a + 1; +} +} + + diff --git a/eval-final-projet/input/eval15.l b/eval-final-projet/input/eval15.l new file mode 100644 index 0000000..e02a65e --- /dev/null +++ b/eval-final-projet/input/eval15.l @@ -0,0 +1,9 @@ +entier $tab[10]; + +main() +{ +$tab[4] = 4; +ecrire($tab[4]); +} + + diff --git a/eval-final-projet/input/eval16.l b/eval-final-projet/input/eval16.l new file mode 100644 index 0000000..6728644 --- /dev/null +++ b/eval-final-projet/input/eval16.l @@ -0,0 +1,7 @@ +entier $a; +main() +{ +tantque 0 faire{ +ecrire(1); +} +} diff --git a/eval-final-projet/input/eval17.l b/eval-final-projet/input/eval17.l new file mode 100644 index 0000000..4f35eff --- /dev/null +++ b/eval-final-projet/input/eval17.l @@ -0,0 +1,9 @@ +entier $a; +main() +{ +$a = 0; +tantque $a < 10 faire{ +ecrire($a); +$a = $a + 1; +} +} diff --git a/eval-final-projet/input/eval18.l b/eval-final-projet/input/eval18.l new file mode 100644 index 0000000..4cea0eb --- /dev/null +++ b/eval-final-projet/input/eval18.l @@ -0,0 +1,23 @@ +entier $t0, +entier $t1, +entier $123, +entier $, +entier $$, +entier $$$, +entier $f, +entier $_; + +f(entier $$) +entier $$$, +entier $f, +entier $_; +{ + $ = $123 + $_ + $$; + ecrire($); +} + +main() { + $t0 = 1; + $123 = $t0 + 0; + f($123); +} diff --git a/eval-final-projet/input/eval19.l b/eval-final-projet/input/eval19.l new file mode 100644 index 0000000..c6f5ed1 --- /dev/null +++ b/eval-final-projet/input/eval19.l @@ -0,0 +1,3 @@ +main(){ + ecrire(1 & 2); +} diff --git a/eval-final-projet/input/eval2-err.l b/eval-final-projet/input/eval2-err.l new file mode 100644 index 0000000..c1ec32b --- /dev/null +++ b/eval-final-projet/input/eval2-err.l @@ -0,0 +1,13 @@ +add(entier $a, entier $b) +{ +retour($a + $b); +} + +main() +entier $x, entier $y, entier $z; +{ +$x = 1; +$y = 2; +$z = 3; +ecrire(add($x,$y,$z)); +} diff --git a/eval-final-projet/input/eval2.l b/eval-final-projet/input/eval2.l new file mode 100644 index 0000000..4821457 --- /dev/null +++ b/eval-final-projet/input/eval2.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-final-projet/input/eval20.l b/eval-final-projet/input/eval20.l new file mode 100644 index 0000000..979c2d0 --- /dev/null +++ b/eval-final-projet/input/eval20.l @@ -0,0 +1,16 @@ +fact( entier $f ) +{ + si $f = 1 | $f = 0 alors { + retour 1; + } + sinon { + retour fact( $f - 1 ) * $f ; + } +} + +main() +entier $a; +{ + $a = lire(); + ecrire( fact( $a ) ); +} diff --git a/eval-final-projet/input/eval21.l b/eval-final-projet/input/eval21.l new file mode 100644 index 0000000..6008853 --- /dev/null +++ b/eval-final-projet/input/eval21.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-final-projet/input/eval22.l b/eval-final-projet/input/eval22.l new file mode 100644 index 0000000..e58deba --- /dev/null +++ b/eval-final-projet/input/eval22.l @@ -0,0 +1,16 @@ +entier $a, entier $b; + +pgcd( entier $a, entier $b ) +entier $c; +{ + $c = $a - ( $a / $b ) * $b; + si $c = 0 alors{ retour $b; } + sinon{ retour pgcd( $b, $c ); } +} + +main() { + $a = lire(); + $b = lire(); + si $b < $a alors{ ecrire( pgcd( $a, $b ) ); } + sinon{ ecrire( pgcd( $b, $a ) ); } +} diff --git a/eval-final-projet/input/eval23.l b/eval-final-projet/input/eval23.l new file mode 100644 index 0000000..bf6744d --- /dev/null +++ b/eval-final-projet/input/eval23.l @@ -0,0 +1,5 @@ +main() { + si 1 | lire() alors { + ecrire(5); + } +} diff --git a/eval-final-projet/input/eval24.l b/eval-final-projet/input/eval24.l new file mode 100644 index 0000000..8f4a376 --- /dev/null +++ b/eval-final-projet/input/eval24.l @@ -0,0 +1,8 @@ +main() { + ecrire(3 | 4); + ecrire(3 & 6); + ecrire(3 | lire()); + ecrire(3 & lire()); + ecrire(0 | lire()); + ecrire(0 & lire()); +} diff --git a/eval-final-projet/input/eval25.l b/eval-final-projet/input/eval25.l new file mode 100644 index 0000000..67ae97e --- /dev/null +++ b/eval-final-projet/input/eval25.l @@ -0,0 +1,6 @@ +entier $a; +main() +{ + $a = lire(); + ecrire( $a < 10 ? 0 : 1); +} diff --git a/eval-final-projet/input/eval26.l b/eval-final-projet/input/eval26.l new file mode 100644 index 0000000..67e433f --- /dev/null +++ b/eval-final-projet/input/eval26.l @@ -0,0 +1,11 @@ +main() +entier $temp, entier $g, entier $l, entier $v; +{ + $temp = lire(); # temperature de l'eau + $g = $temp < 0 | $temp = 0 ? 1 : 0; # glace ? + $l = $temp < 100 & 0 < $temp ? 1 : 0; # liquide ? + $v = !$g & !$l ? 1 : 0; # vapeur ? + ecrire($g); + ecrire($l); + ecrire($v); +} diff --git a/eval-final-projet/input/eval27.l b/eval-final-projet/input/eval27.l new file mode 100644 index 0000000..b07dadc --- /dev/null +++ b/eval-final-projet/input/eval27.l @@ -0,0 +1,6 @@ +main() +{ + ecrire( 1 ? 0 : 1 ? 0 : 1 ); + ecrire( ( 1 ? 0 : 1 ) ? 0 : 1 ); + ecrire( 1 ? 0 : ( 1 ? 0 : 1 ) ); +} diff --git a/eval-final-projet/input/eval3-err.l b/eval-final-projet/input/eval3-err.l new file mode 100644 index 0000000..5aa96d7 --- /dev/null +++ b/eval-final-projet/input/eval3-err.l @@ -0,0 +1,4 @@ +main() +{ +procedure(); +} diff --git a/eval-final-projet/input/eval3.l b/eval-final-projet/input/eval3.l new file mode 100644 index 0000000..a33fb9e --- /dev/null +++ b/eval-final-projet/input/eval3.l @@ -0,0 +1,5 @@ +entier $a; +main() +{ +ecrire(5 * 2); +} diff --git a/eval-final-projet/input/eval4-err.l b/eval-final-projet/input/eval4-err.l new file mode 100644 index 0000000..3130633 --- /dev/null +++ b/eval-final-projet/input/eval4-err.l @@ -0,0 +1,4 @@ +main() +{ +$a = 1; +} diff --git a/eval-final-projet/input/eval4.l b/eval-final-projet/input/eval4.l new file mode 100644 index 0000000..ef3e9c8 --- /dev/null +++ b/eval-final-projet/input/eval4.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-final-projet/input/eval5-err.l b/eval-final-projet/input/eval5-err.l new file mode 100644 index 0000000..0bfe9c4 --- /dev/null +++ b/eval-final-projet/input/eval5-err.l @@ -0,0 +1,5 @@ +entier $a, entier $a; +main() +{ +$a = 1; +} diff --git a/eval-final-projet/input/eval5.l b/eval-final-projet/input/eval5.l new file mode 100644 index 0000000..a39cba6 --- /dev/null +++ b/eval-final-projet/input/eval5.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-final-projet/input/eval6-err.l b/eval-final-projet/input/eval6-err.l new file mode 100644 index 0000000..5334889 --- /dev/null +++ b/eval-final-projet/input/eval6-err.l @@ -0,0 +1,9 @@ +main() +{ +$a = 1; +} + +main() +{ +$a = 1; +} diff --git a/eval-final-projet/input/eval6.l b/eval-final-projet/input/eval6.l new file mode 100644 index 0000000..4141d30 --- /dev/null +++ b/eval-final-projet/input/eval6.l @@ -0,0 +1,13 @@ +entier $a; + +procedure() +{ +ecrire(1); +} + +main() +{ +procedure(); +} + + diff --git a/eval-final-projet/input/eval7-err.l b/eval-final-projet/input/eval7-err.l new file mode 100644 index 0000000..150eb55 --- /dev/null +++ b/eval-final-projet/input/eval7-err.l @@ -0,0 +1,8 @@ +procedure() +{ +} + +main() +{ +procedure(1); +} diff --git a/eval-final-projet/input/eval7.l b/eval-final-projet/input/eval7.l new file mode 100644 index 0000000..3b7888b --- /dev/null +++ b/eval-final-projet/input/eval7.l @@ -0,0 +1,5 @@ +entier $a; +main() +{ +ecrire(5 - 3 + 2); +} diff --git a/eval-final-projet/input/eval8-err.l b/eval-final-projet/input/eval8-err.l new file mode 100644 index 0000000..43b674c --- /dev/null +++ b/eval-final-projet/input/eval8-err.l @@ -0,0 +1,6 @@ +entier $a; + +main() +{ +ecrire($a[1]); +} diff --git a/eval-final-projet/input/eval8.l b/eval-final-projet/input/eval8.l new file mode 100644 index 0000000..ffc10c5 --- /dev/null +++ b/eval-final-projet/input/eval8.l @@ -0,0 +1,11 @@ +procedure(entier $a) +{ +ecrire($a); +} + +main() +{ +procedure(10); +} + + diff --git a/eval-final-projet/input/eval9-err.l b/eval-final-projet/input/eval9-err.l new file mode 100644 index 0000000..155d4ab --- /dev/null +++ b/eval-final-projet/input/eval9-err.l @@ -0,0 +1 @@ +entier entier entier diff --git a/eval-final-projet/input/eval9.l b/eval-final-projet/input/eval9.l new file mode 100644 index 0000000..dd38db7 --- /dev/null +++ b/eval-final-projet/input/eval9.l @@ -0,0 +1,11 @@ +procedure() +{ +ecrire(1); +} + +main() +{ +procedure(); +} + + diff --git a/eval-final-projet/ref-asynt/eval1.asynt b/eval-final-projet/ref-asynt/eval1.asynt new file mode 100644 index 0000000..f92de39 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval1.asynt @@ -0,0 +1,23 @@ + + + $a + + + + main + + + $a + 1 + + + + + $a + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval10.asynt b/eval-final-projet/ref-asynt/eval10.asynt new file mode 100644 index 0000000..4ff357e --- /dev/null +++ b/eval-final-projet/ref-asynt/eval10.asynt @@ -0,0 +1,28 @@ + + + + procedure + + + 1 + + + + + + main + + + + + procedure + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval11.asynt b/eval-final-projet/ref-asynt/eval11.asynt new file mode 100644 index 0000000..cef5db4 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval11.asynt @@ -0,0 +1,37 @@ + + + + procedure + + $a + + + + $a + 1 + + + + + $a + + + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval12.asynt b/eval-final-projet/ref-asynt/eval12.asynt new file mode 100644 index 0000000..f4b25e7 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval12.asynt @@ -0,0 +1,20 @@ + + + $a + + + + main + + + 1 + + + 1 + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval13.asynt b/eval-final-projet/ref-asynt/eval13.asynt new file mode 100644 index 0000000..68c8ccf --- /dev/null +++ b/eval-final-projet/ref-asynt/eval13.asynt @@ -0,0 +1,25 @@ + + + $a + + + + main + + + 0 + + + 1 + + + + + 0 + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval14.asynt b/eval-final-projet/ref-asynt/eval14.asynt new file mode 100644 index 0000000..96fad91 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval14.asynt @@ -0,0 +1,96 @@ + + + $tab[10] + + + + main + + $a + + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + $tab + + $a + + + + $a + + + + + $a + + plus + + $a + + 1 + + + + + + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + + $tab + + $a + + + + + + + $a + + plus + + $a + + 1 + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval15.asynt b/eval-final-projet/ref-asynt/eval15.asynt new file mode 100644 index 0000000..80cfd53 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval15.asynt @@ -0,0 +1,29 @@ + + + $tab[10] + + + + main + + + + $tab + 4 + + 4 + + + + + + $tab + 4 + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval16.asynt b/eval-final-projet/ref-asynt/eval16.asynt new file mode 100644 index 0000000..4b68dd0 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval16.asynt @@ -0,0 +1,20 @@ + + + $a + + + + main + + + 0 + + + 1 + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval17.asynt b/eval-final-projet/ref-asynt/eval17.asynt new file mode 100644 index 0000000..370907a --- /dev/null +++ b/eval-final-projet/ref-asynt/eval17.asynt @@ -0,0 +1,46 @@ + + + $a + + + + main + + + $a + 0 + + + + + inf + + $a + + 10 + + + + + $a + + + + + $a + + plus + + $a + + 1 + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval18.asynt b/eval-final-projet/ref-asynt/eval18.asynt new file mode 100644 index 0000000..eae93f6 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval18.asynt @@ -0,0 +1,107 @@ + + + $t0 + + $t1 + + $123 + + $ + + $$ + + $$$ + + $f + + $_ + + + + + + + + + + + f + + $$ + + + $$$ + + $f + + $_ + + + + + + $ + + plus + + plus + + $123 + + + $_ + + + + $$ + + + + + + + $ + + + + + + + + main + + + $t0 + 1 + + + + $123 + + plus + + $t0 + + 0 + + + + + + f + + + $123 + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval19.asynt b/eval-final-projet/ref-asynt/eval19.asynt new file mode 100644 index 0000000..edf971b --- /dev/null +++ b/eval-final-projet/ref-asynt/eval19.asynt @@ -0,0 +1,16 @@ + + + + main + + + + et + 1 + 2 + + + + + + diff --git a/eval-final-projet/ref-asynt/eval2.asynt b/eval-final-projet/ref-asynt/eval2.asynt new file mode 100644 index 0000000..3f2aace --- /dev/null +++ b/eval-final-projet/ref-asynt/eval2.asynt @@ -0,0 +1,63 @@ + + + $i + + $carre + + + + + main + + + $i + 0 + + + + + inf + + $i + + 10 + + + + $carre + + fois + + $i + + + $i + + + + + + + $carre + + + + + $i + + plus + + $i + + 1 + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval20.asynt b/eval-final-projet/ref-asynt/eval20.asynt new file mode 100644 index 0000000..de7c576 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval20.asynt @@ -0,0 +1,93 @@ + + + + fact + + $f + + + + + ou + + egal + + $f + + 1 + + + egal + + $f + + 0 + + + + + 1 + + + + + + fois + + + fact + + + moins + + $f + + 1 + + + + + + + + $f + + + + + + + + + + main + + $a + + + + $a + + + + + + + + fact + + + $a + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval21.asynt b/eval-final-projet/ref-asynt/eval21.asynt new file mode 100644 index 0000000..292ebb7 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval21.asynt @@ -0,0 +1,85 @@ + + + + fibo + + $n + + + + + inf + + $n + + 2 + + + + 1 + + + + + + plus + + + fibo + + + moins + + $n + + 1 + + + + + + + + + fibo + + + moins + + $n + + 2 + + + + + + + + + + + + + + + main + + + + + fibo + + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval22.asynt b/eval-final-projet/ref-asynt/eval22.asynt new file mode 100644 index 0000000..efeef4e --- /dev/null +++ b/eval-final-projet/ref-asynt/eval22.asynt @@ -0,0 +1,161 @@ + + + $a + + $b + + + + + pgcd + + $a + + $b + + + + $c + + + + $c + + moins + + $a + + + fois + + divise + + $a + + + $b + + + + $b + + + + + + + + egal + + $c + + 0 + + + + + $b + + + + + + + + pgcd + + + $b + + + + $c + + + + + + + + + + + + + + + + main + + + $a + + + + + + $b + + + + + + + inf + + $b + + + $a + + + + + + + pgcd + + + $a + + + + $b + + + + + + + + + + + + + + pgcd + + + $b + + + + $a + + + + + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval23.asynt b/eval-final-projet/ref-asynt/eval23.asynt new file mode 100644 index 0000000..c46432c --- /dev/null +++ b/eval-final-projet/ref-asynt/eval23.asynt @@ -0,0 +1,22 @@ + + + + main + + + + ou + 1 + + + + + + 5 + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval24.asynt b/eval-final-projet/ref-asynt/eval24.asynt new file mode 100644 index 0000000..7f3b530 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval24.asynt @@ -0,0 +1,65 @@ + + + + main + + + + ou + 3 + 4 + + + + + + et + 3 + 6 + + + + + + ou + 3 + + + + + + + + et + 3 + + + + + + + + ou + 0 + + + + + + + + et + 0 + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval25.asynt b/eval-final-projet/ref-asynt/eval25.asynt new file mode 100644 index 0000000..0c1876f --- /dev/null +++ b/eval-final-projet/ref-asynt/eval25.asynt @@ -0,0 +1,33 @@ + + + $a + + + + main + + + $a + + + + + + + condexp + + inf + + $a + + 10 + + 0 + 1 + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval26.asynt b/eval-final-projet/ref-asynt/eval26.asynt new file mode 100644 index 0000000..161447c --- /dev/null +++ b/eval-final-projet/ref-asynt/eval26.asynt @@ -0,0 +1,126 @@ + + + + main + + $temp + + $g + + $l + + $v + + + + + + + $temp + + + + + + $g + + condexp + + ou + + inf + + $temp + + 0 + + + egal + + $temp + + 0 + + + 1 + 0 + + + + + $l + + condexp + + et + + inf + + $temp + + 100 + + + inf + 0 + + $temp + + + + 1 + 0 + + + + + $v + + condexp + + et + + non + + $g + + + + non + + $l + + + + 1 + 0 + + + + + + $g + + + + + + $l + + + + + + $v + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval27.asynt b/eval-final-projet/ref-asynt/eval27.asynt new file mode 100644 index 0000000..40ef8a3 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval27.asynt @@ -0,0 +1,52 @@ + + + + main + + + + condexp + 1 + 0 + + condexp + 1 + 0 + 1 + + + + + + + condexp + + condexp + 1 + 0 + 1 + + 0 + 1 + + + + + + condexp + 1 + 0 + + condexp + 1 + 0 + 1 + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval3.asynt b/eval-final-projet/ref-asynt/eval3.asynt new file mode 100644 index 0000000..5a3244d --- /dev/null +++ b/eval-final-projet/ref-asynt/eval3.asynt @@ -0,0 +1,19 @@ + + + $a + + + + main + + + + fois + 5 + 2 + + + + + + diff --git a/eval-final-projet/ref-asynt/eval4.asynt b/eval-final-projet/ref-asynt/eval4.asynt new file mode 100644 index 0000000..e419965 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval4.asynt @@ -0,0 +1,106 @@ + + + + max + + $a + + $b + + + + + + inf + + $a + + + $b + + + + + + $b + + + + + + + + $a + + + + + + + + main + + $v_1 + + $v_2 + + + + + $v_1 + + + + + + $v_2 + + + + + + + egal + + + max + + + $v_1 + + + + $v_2 + + + + + + + + + $v_1 + + + + + + $v_1 + + + + + + + $v_2 + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval5.asynt b/eval-final-projet/ref-asynt/eval5.asynt new file mode 100644 index 0000000..f1106e5 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval5.asynt @@ -0,0 +1,418 @@ + + + $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 + + $n + + + $i + + + + $i + 0 + + + + + inf + + $i + + + $n + + + + + + + $tab + + $i + + + + + + + $i + + plus + + $i + + 1 + + + + + + + + 0 + + + + + + + + echanger + + $i + + $j + + + + $temp + + + + $temp + + + $tab + + $j + + + + + + + + $tab + + $j + + + + + $tab + + $i + + + + + + + + $tab + + $i + + + + $temp + + + + + + + + + trier + + $n + + + $echange + + $j + + $m + + + + + + $m + + $n + + + + + $echange + 1 + + + + + egal + + $echange + + 1 + + + + $echange + 0 + + + + $j + 0 + + + + + inf + + $j + + + moins + + $m + + 1 + + + + + + inf + + + $tab + + plus + + $j + + 1 + + + + + + $tab + + $j + + + + + + + + echanger + + + $j + + + + plus + + $j + + 1 + + + + + + + + + + $echange + 1 + + + + + + + $j + + plus + + $j + + 1 + + + + + + + + $m + + moins + + $m + + 1 + + + + + + + + + + + + + + main + + + + initialiser + + + + + + + + afficher + + 10 + + + + + + + + + trier + + 10 + + + + + + + + + afficher + + 10 + + + + + + + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval6.asynt b/eval-final-projet/ref-asynt/eval6.asynt new file mode 100644 index 0000000..c9f82a0 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval6.asynt @@ -0,0 +1,29 @@ + + + $a + + + + procedure + + + 1 + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval7.asynt b/eval-final-projet/ref-asynt/eval7.asynt new file mode 100644 index 0000000..95531e5 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval7.asynt @@ -0,0 +1,23 @@ + + + $a + + + + main + + + + plus + + moins + 5 + 3 + + 2 + + + + + + diff --git a/eval-final-projet/ref-asynt/eval8.asynt b/eval-final-projet/ref-asynt/eval8.asynt new file mode 100644 index 0000000..3c3faf2 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval8.asynt @@ -0,0 +1,34 @@ + + + + procedure + + $a + + + + + $a + + + + + + + main + + + + procedure + + 10 + + + + + + + + + + diff --git a/eval-final-projet/ref-asynt/eval9.asynt b/eval-final-projet/ref-asynt/eval9.asynt new file mode 100644 index 0000000..7e82dc0 --- /dev/null +++ b/eval-final-projet/ref-asynt/eval9.asynt @@ -0,0 +1,26 @@ + + + + procedure + + + 1 + + + + + + main + + + + procedure + + + + + + + + + diff --git a/eval-final-projet/ref-lex/eval1.lex b/eval-final-projet/ref-lex/eval1.lex new file mode 100644 index 0000000..fb828db --- /dev/null +++ b/eval-final-projet/ref-lex/eval1.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-final-projet/ref-lex/eval10.lex b/eval-final-projet/ref-lex/eval10.lex new file mode 100644 index 0000000..5577cab --- /dev/null +++ b/eval-final-projet/ref-lex/eval10.lex @@ -0,0 +1,21 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval11.lex b/eval-final-projet/ref-lex/eval11.lex new file mode 100644 index 0000000..d2991f9 --- /dev/null +++ b/eval-final-projet/ref-lex/eval11.lex @@ -0,0 +1,27 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +{ 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 +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval12.lex b/eval-final-projet/ref-lex/eval12.lex new file mode 100644 index 0000000..a51d4f1 --- /dev/null +++ b/eval-final-projet/ref-lex/eval12.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-final-projet/ref-lex/eval13.lex b/eval-final-projet/ref-lex/eval13.lex new file mode 100644 index 0000000..a40b0de --- /dev/null +++ b/eval-final-projet/ref-lex/eval13.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-final-projet/ref-lex/eval14.lex b/eval-final-projet/ref-lex/eval14.lex new file mode 100644 index 0000000..3c9e1b9 --- /dev/null +++ b/eval-final-projet/ref-lex/eval14.lex @@ -0,0 +1,64 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +{ 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 +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$a id_variable $a +] symbole CROCHET_FERMANT += symbole EGAL +$a id_variable $a +; symbole POINT_VIRGULE +$a id_variable $a += symbole EGAL +$a id_variable $a ++ symbole PLUS +1 nombre 1 +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +$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 +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +$a id_variable $a +] symbole CROCHET_FERMANT +) 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-final-projet/ref-lex/eval15.lex b/eval-final-projet/ref-lex/eval15.lex new file mode 100644 index 0000000..d3d8f9d --- /dev/null +++ b/eval-final-projet/ref-lex/eval15.lex @@ -0,0 +1,27 @@ +entier mot_clef entier +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +10 nombre 10 +] symbole CROCHET_FERMANT +; symbole POINT_VIRGULE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT += symbole EGAL +4 nombre 4 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$tab id_variable $tab +[ symbole CROCHET_OUVRANT +4 nombre 4 +] symbole CROCHET_FERMANT +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval16.lex b/eval-final-projet/ref-lex/eval16.lex new file mode 100644 index 0000000..911ee5b --- /dev/null +++ b/eval-final-projet/ref-lex/eval16.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 +tantque mot_clef tantque +0 nombre 0 +faire mot_clef faire +{ 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-final-projet/ref-lex/eval17.lex b/eval-final-projet/ref-lex/eval17.lex new file mode 100644 index 0000000..fb449a8 --- /dev/null +++ b/eval-final-projet/ref-lex/eval17.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-final-projet/ref-lex/eval18.lex b/eval-final-projet/ref-lex/eval18.lex new file mode 100644 index 0000000..628d3be --- /dev/null +++ b/eval-final-projet/ref-lex/eval18.lex @@ -0,0 +1,74 @@ +entier mot_clef entier +$t0 id_variable $t0 +, symbole VIRGULE +entier mot_clef entier +$t1 id_variable $t1 +, symbole VIRGULE +entier mot_clef entier +$123 id_variable $123 +, symbole VIRGULE +entier mot_clef entier +$ id_variable $ +, symbole VIRGULE +entier mot_clef entier +$$ id_variable $$ +, symbole VIRGULE +entier mot_clef entier +$$$ id_variable $$$ +, symbole VIRGULE +entier mot_clef entier +$f id_variable $f +, symbole VIRGULE +entier mot_clef entier +$_ id_variable $_ +; symbole POINT_VIRGULE +f id_fonction f +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$$ id_variable $$ +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$$$ id_variable $$$ +, symbole VIRGULE +entier mot_clef entier +$f id_variable $f +, symbole VIRGULE +entier mot_clef entier +$_ id_variable $_ +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$ id_variable $ += symbole EGAL +$123 id_variable $123 ++ symbole PLUS +$_ id_variable $_ ++ symbole PLUS +$$ id_variable $$ +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$ id_variable $ +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +$t0 id_variable $t0 += symbole EGAL +1 nombre 1 +; symbole POINT_VIRGULE +$123 id_variable $123 += symbole EGAL +$t0 id_variable $t0 ++ symbole PLUS +0 nombre 0 +; symbole POINT_VIRGULE +f id_fonction f +( symbole PARENTHESE_OUVRANTE +$123 id_variable $123 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval19.lex b/eval-final-projet/ref-lex/eval19.lex new file mode 100644 index 0000000..b89d57d --- /dev/null +++ b/eval-final-projet/ref-lex/eval19.lex @@ -0,0 +1,13 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +& symbole ET +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval2.lex b/eval-final-projet/ref-lex/eval2.lex new file mode 100644 index 0000000..cbdea9f --- /dev/null +++ b/eval-final-projet/ref-lex/eval2.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-final-projet/ref-lex/eval20.lex b/eval-final-projet/ref-lex/eval20.lex new file mode 100644 index 0000000..bd86f66 --- /dev/null +++ b/eval-final-projet/ref-lex/eval20.lex @@ -0,0 +1,57 @@ +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$f id_variable $f +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +$f id_variable $f += symbole EGAL +1 nombre 1 +| symbole OU +$f id_variable $f += symbole EGAL +0 nombre 0 +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 +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +$f id_variable $f +- symbole MOINS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +* symbole FOIS +$f id_variable $f +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$a id_variable $a +; 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 +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +fact id_fonction fact +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval21.lex b/eval-final-projet/ref-lex/eval21.lex new file mode 100644 index 0000000..40e933b --- /dev/null +++ b/eval-final-projet/ref-lex/eval21.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-final-projet/ref-lex/eval22.lex b/eval-final-projet/ref-lex/eval22.lex new file mode 100644 index 0000000..d4220d6 --- /dev/null +++ b/eval-final-projet/ref-lex/eval22.lex @@ -0,0 +1,100 @@ +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +; symbole POINT_VIRGULE +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +, symbole VIRGULE +entier mot_clef entier +$b id_variable $b +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$c id_variable $c +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$c id_variable $c += symbole EGAL +$a id_variable $a +- symbole MOINS +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +/ symbole DIVISE +$b id_variable $b +) symbole PARENTHESE_FERMANTE +* symbole FOIS +$b id_variable $b +; symbole POINT_VIRGULE +si mot_clef si +$c id_variable $c += symbole EGAL +0 nombre 0 +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +$b id_variable $b +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +sinon mot_clef sinon +{ symbole ACCOLADE_OUVRANTE +retour mot_clef retour +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +, symbole VIRGULE +$c id_variable $c +) 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 +$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 +si mot_clef si +$b id_variable $b +< symbole INFERIEUR +$a id_variable $a +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +pgcd id_fonction pgcd +( 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 +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +pgcd id_fonction pgcd +( symbole PARENTHESE_OUVRANTE +$b id_variable $b +, symbole VIRGULE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval23.lex b/eval-final-projet/ref-lex/eval23.lex new file mode 100644 index 0000000..d384bb1 --- /dev/null +++ b/eval-final-projet/ref-lex/eval23.lex @@ -0,0 +1,20 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +si mot_clef si +1 nombre 1 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +alors mot_clef alors +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval24.lex b/eval-final-projet/ref-lex/eval24.lex new file mode 100644 index 0000000..a840965 --- /dev/null +++ b/eval-final-projet/ref-lex/eval24.lex @@ -0,0 +1,56 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +| symbole OU +4 nombre 4 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +& symbole ET +6 nombre 6 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +3 nombre 3 +& symbole ET +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +| symbole OU +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +0 nombre 0 +& symbole ET +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval25.lex b/eval-final-projet/ref-lex/eval25.lex new file mode 100644 index 0000000..6eb4a13 --- /dev/null +++ b/eval-final-projet/ref-lex/eval25.lex @@ -0,0 +1,26 @@ +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 +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +< symbole INFERIEUR +10 nombre 10 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval26.lex b/eval-final-projet/ref-lex/eval26.lex new file mode 100644 index 0000000..022387b --- /dev/null +++ b/eval-final-projet/ref-lex/eval26.lex @@ -0,0 +1,79 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +entier mot_clef entier +$temp id_variable $temp +, symbole VIRGULE +entier mot_clef entier +$g id_variable $g +, symbole VIRGULE +entier mot_clef entier +$l id_variable $l +, symbole VIRGULE +entier mot_clef entier +$v id_variable $v +; symbole POINT_VIRGULE +{ symbole ACCOLADE_OUVRANTE +$temp id_variable $temp += symbole EGAL +lire mot_clef lire +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +$g id_variable $g += symbole EGAL +$temp id_variable $temp +< symbole INFERIEUR +0 nombre 0 +| symbole OU +$temp id_variable $temp += symbole EGAL +0 nombre 0 +? symbole INTERROGATION +1 nombre 1 +: symbole DEUXPOINTS +0 nombre 0 +; symbole POINT_VIRGULE +$l id_variable $l += symbole EGAL +$temp id_variable $temp +< symbole INFERIEUR +100 nombre 100 +& symbole ET +0 nombre 0 +< symbole INFERIEUR +$temp id_variable $temp +? symbole INTERROGATION +1 nombre 1 +: symbole DEUXPOINTS +0 nombre 0 +; symbole POINT_VIRGULE +$v id_variable $v += symbole EGAL +! symbole NON +$g id_variable $g +& symbole ET +! symbole NON +$l id_variable $l +? symbole INTERROGATION +1 nombre 1 +: symbole DEUXPOINTS +0 nombre 0 +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$g id_variable $g +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$l id_variable $l +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$v id_variable $v +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval27.lex b/eval-final-projet/ref-lex/eval27.lex new file mode 100644 index 0000000..f92a2e9 --- /dev/null +++ b/eval-final-projet/ref-lex/eval27.lex @@ -0,0 +1,49 @@ +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +? symbole INTERROGATION +0 nombre 0 +: symbole DEUXPOINTS +1 nombre 1 +) symbole PARENTHESE_FERMANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval3.lex b/eval-final-projet/ref-lex/eval3.lex new file mode 100644 index 0000000..a569a71 --- /dev/null +++ b/eval-final-projet/ref-lex/eval3.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-final-projet/ref-lex/eval4.lex b/eval-final-projet/ref-lex/eval4.lex new file mode 100644 index 0000000..5b96821 --- /dev/null +++ b/eval-final-projet/ref-lex/eval4.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-final-projet/ref-lex/eval5.lex b/eval-final-projet/ref-lex/eval5.lex new file mode 100644 index 0000000..457125e --- /dev/null +++ b/eval-final-projet/ref-lex/eval5.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-final-projet/ref-lex/eval6.lex b/eval-final-projet/ref-lex/eval6.lex new file mode 100644 index 0000000..f54672c --- /dev/null +++ b/eval-final-projet/ref-lex/eval6.lex @@ -0,0 +1,23 @@ +entier mot_clef entier +$a id_variable $a +; symbole POINT_VIRGULE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval7.lex b/eval-final-projet/ref-lex/eval7.lex new file mode 100644 index 0000000..c59c081 --- /dev/null +++ b/eval-final-projet/ref-lex/eval7.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 +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +5 nombre 5 +- symbole MOINS +3 nombre 3 ++ symbole PLUS +2 nombre 2 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval8.lex b/eval-final-projet/ref-lex/eval8.lex new file mode 100644 index 0000000..631b37d --- /dev/null +++ b/eval-final-projet/ref-lex/eval8.lex @@ -0,0 +1,23 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +entier mot_clef entier +$a id_variable $a +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +$a id_variable $a +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +10 nombre 10 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-lex/eval9.lex b/eval-final-projet/ref-lex/eval9.lex new file mode 100644 index 0000000..95dbd62 --- /dev/null +++ b/eval-final-projet/ref-lex/eval9.lex @@ -0,0 +1,20 @@ +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +ecrire mot_clef ecrire +( symbole PARENTHESE_OUVRANTE +1 nombre 1 +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE +main id_fonction main +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +{ symbole ACCOLADE_OUVRANTE +procedure id_fonction procedure +( symbole PARENTHESE_OUVRANTE +) symbole PARENTHESE_FERMANTE +; symbole POINT_VIRGULE +} symbole ACCOLADE_FERMANTE + symbole FIN diff --git a/eval-final-projet/ref-mips/eval1.mips b/eval-final-projet/ref-mips/eval1.mips new file mode 100644 index 0000000..f417b35 --- /dev/null +++ b/eval-final-projet/ref-mips/eval1.mips @@ -0,0 +1,35 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$a # stocke variable + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval10.mips b/eval-final-projet/ref-mips/eval10.mips new file mode 100644 index 0000000..5fbac6e --- /dev/null +++ b/eval-final-projet/ref-mips/eval10.mips @@ -0,0 +1,49 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_procedure: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 4($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + jal f_procedure + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval11.mips b/eval-final-projet/ref-mips/eval11.mips new file mode 100644 index 0000000..a2c65fa --- /dev/null +++ b/eval-final-projet/ref-mips/eval11.mips @@ -0,0 +1,50 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_procedure: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + jal f_procedure + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval12.mips b/eval-final-projet/ref-mips/eval12.mips new file mode 100644 index 0000000..0e3408e --- /dev/null +++ b/eval-final-projet/ref-mips/eval12.mips @@ -0,0 +1,36 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval13.mips b/eval-final-projet/ref-mips/eval13.mips new file mode 100644 index 0000000..526b3b4 --- /dev/null +++ b/eval-final-projet/ref-mips/eval13.mips @@ -0,0 +1,48 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e0 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + j i_e1 +i_e0: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval14.mips b/eval-final-projet/ref-mips/eval14.mips new file mode 100644 index 0000000..6a6cc3a --- /dev/null +++ b/eval-final-projet/ref-mips/eval14.mips @@ -0,0 +1,139 @@ + .data +v$tab: .space 40 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable +i_e0: + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + j i_e0 +i_e1: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable +i_e3: + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e5 + li $t2, 0 +i_e5: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e4 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + j i_e3 +i_e4: + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval15.mips b/eval-final-projet/ref-mips/eval15.mips new file mode 100644 index 0000000..fda99b2 --- /dev/null +++ b/eval-final-projet/ref-mips/eval15.mips @@ -0,0 +1,49 @@ + .data +v$tab: .space 40 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval16.mips b/eval-final-projet/ref-mips/eval16.mips new file mode 100644 index 0000000..7beecdb --- /dev/null +++ b/eval-final-projet/ref-mips/eval16.mips @@ -0,0 +1,38 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) +i_e0: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + j i_e0 +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval17.mips b/eval-final-projet/ref-mips/eval17.mips new file mode 100644 index 0000000..77daeb9 --- /dev/null +++ b/eval-final-projet/ref-mips/eval17.mips @@ -0,0 +1,73 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$a # stocke variable +i_e0: + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$a # stocke variable + j i_e0 +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval18.mips b/eval-final-projet/ref-mips/eval18.mips new file mode 100644 index 0000000..e286e4d --- /dev/null +++ b/eval-final-projet/ref-mips/eval18.mips @@ -0,0 +1,105 @@ + .data +v$t0: .space 4 +v$t1: .space 4 +v$123: .space 4 +v$: .space 4 +v$$: .space 4 +v$$$: .space 4 +v$f: .space 4 +v$_: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_f: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 12 # allocation variables locales + lw $t1, v$123 # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, -16($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$ # stocke variable + lw $t1, v$ # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + addi $sp, $sp, 12 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$t0 # stocke variable + lw $t1, v$t0 # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$123 # stocke variable + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, v$123 # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_f + addi $sp, $sp, 4 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval19.mips b/eval-final-projet/ref-mips/eval19.mips new file mode 100644 index 0000000..ddde64a --- /dev/null +++ b/eval-final-projet/ref-mips/eval19.mips @@ -0,0 +1,44 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc0 + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc0: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval2.mips b/eval-final-projet/ref-mips/eval2.mips new file mode 100644 index 0000000..0a7bbe1 --- /dev/null +++ b/eval-final-projet/ref-mips/eval2.mips @@ -0,0 +1,91 @@ + .data +v$i: .space 4 +v$carre: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$i # stocke variable +i_e0: + lw $t1, v$i # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + lw $t1, v$i # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, v$i # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + mult $t0, $t1 + mflo $t2 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$carre # stocke variable + lw $t1, v$carre # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, v$i # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$i # stocke variable + j i_e0 +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval20.mips b/eval-final-projet/ref-mips/eval20.mips new file mode 100644 index 0000000..2d355e5 --- /dev/null +++ b/eval-final-projet/ref-mips/eval20.mips @@ -0,0 +1,150 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_fact: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc3 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e4 + li $t2, 0 +i_e4: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc3: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e0 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 8($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra + j i_e1 +i_e0: + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + jal f_fact + addi $sp, $sp, 4 # desallocation parametres + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + mult $t0, $t1 + mflo $t2 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 8($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_fact + addi $sp, $sp, 4 # desallocation parametres + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval21.mips b/eval-final-projet/ref-mips/eval21.mips new file mode 100644 index 0000000..43a9535 --- /dev/null +++ b/eval-final-projet/ref-mips/eval21.mips @@ -0,0 +1,126 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_fibo: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e0 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 8($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra + j i_e1 +i_e0: + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + jal f_fibo + addi $sp, $sp, 4 # desallocation parametres + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + jal f_fibo + addi $sp, $sp, 4 # desallocation parametres + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 8($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + jal f_fibo + addi $sp, $sp, 4 # desallocation parametres + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval22.mips b/eval-final-projet/ref-mips/eval22.mips new file mode 100644 index 0000000..949cecf --- /dev/null +++ b/eval-final-projet/ref-mips/eval22.mips @@ -0,0 +1,197 @@ + .data +v$a: .space 4 +v$b: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_pgcd: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + div $t0, $t1 + mflo $t2 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + mult $t0, $t1 + mflo $t2 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e0 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 12($fp) # ecriture de la valeur de retour + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra + j i_e1 +i_e0: + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + # empile arg 1 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_pgcd + addi $sp, $sp, 8 # desallocation parametres + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 12($fp) # ecriture de la valeur de retour + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +i_e1: + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$a # stocke variable + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$b # stocke variable + lw $t1, v$b # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e5 + li $t2, 0 +i_e5: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e3 + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + # empile arg 1 + lw $t1, v$b # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_pgcd + addi $sp, $sp, 8 # desallocation parametres + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + j i_e4 +i_e3: + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, v$b # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + # empile arg 1 + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_pgcd + addi $sp, $sp, 8 # desallocation parametres + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char +i_e4: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval23.mips b/eval-final-projet/ref-mips/eval23.mips new file mode 100644 index 0000000..e9d25fb --- /dev/null +++ b/eval-final-projet/ref-mips/eval23.mips @@ -0,0 +1,52 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc2 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc2: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + li $t0, 5 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char +i_e1: + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval24.mips b/eval-final-projet/ref-mips/eval24.mips new file mode 100644 index 0000000..29f8b56 --- /dev/null +++ b/eval-final-projet/ref-mips/eval24.mips @@ -0,0 +1,178 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc0 + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc0: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc1 + li $t0, 6 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc1: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc2 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc2: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc3 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc3: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc4 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc4: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc5 + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc5: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval25.mips b/eval-final-projet/ref-mips/eval25.mips new file mode 100644 index 0000000..f62bbdb --- /dev/null +++ b/eval-final-projet/ref-mips/eval25.mips @@ -0,0 +1,61 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$a # stocke variable + lw $t1, v$a # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e0 + li $t2, 0 +i_e0: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f2 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s1 +i_condexp_f2: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s1: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval26.mips b/eval-final-projet/ref-mips/eval26.mips new file mode 100644 index 0000000..ddca96b --- /dev/null +++ b/eval-final-projet/ref-mips/eval26.mips @@ -0,0 +1,221 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 16 # allocation variables locales + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e0 + li $t2, 0 +i_e0: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + bne $t0, $zero, i_cc1 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + or $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc1: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f4 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s3 +i_condexp_f4: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s3: + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -12($fp) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 100 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e5 + li $t2, 0 +i_e5: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc6 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e7 + li $t2, 0 +i_e7: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc6: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f9 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s8 +i_condexp_f9: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s8: + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -16($fp) # stocke variable + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + not $t1, $t0 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + beq $t0, $zero, i_cc10 + lw $t1, -16($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + not $t1, $t0 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + and $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) +i_cc10: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f12 + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s11 +i_condexp_f12: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s11: + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -20($fp) # stocke variable + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, -16($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, -20($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + addi $sp, $sp, 16 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval27.mips b/eval-final-projet/ref-mips/eval27.mips new file mode 100644 index 0000000..6777b5a --- /dev/null +++ b/eval-final-projet/ref-mips/eval27.mips @@ -0,0 +1,120 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f1 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s0 +i_condexp_f1: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f3 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s2 +i_condexp_f3: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s2: +i_condexp_s0: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f5 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s4 +i_condexp_f5: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s4: + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f7 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s6 +i_condexp_f7: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s6: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f9 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s8 +i_condexp_f9: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_condexp_f11 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + j i_condexp_s10 +i_condexp_f11: + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) +i_condexp_s10: +i_condexp_s8: + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval3.mips b/eval-final-projet/ref-mips/eval3.mips new file mode 100644 index 0000000..af7268e --- /dev/null +++ b/eval-final-projet/ref-mips/eval3.mips @@ -0,0 +1,40 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 5 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + mult $t0, $t1 + mflo $t2 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval4.mips b/eval-final-projet/ref-mips/eval4.mips new file mode 100644 index 0000000..3393c0c --- /dev/null +++ b/eval-final-projet/ref-mips/eval4.mips @@ -0,0 +1,137 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_max: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 12($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +i_e1: + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t0, 12($fp) # ecriture de la valeur de retour + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 8 # allocation variables locales + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + li $v0, 5 + syscall # lecture + subi $sp, $sp, 4 # empile registre + sw $v0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -12($fp) # stocke variable + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + # empile arg 1 + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + jal f_max + addi $sp, $sp, 8 # desallocation parametres + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e5 + li $t2, 0 +i_e5: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e3 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + j i_e4 +i_e3: + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char +i_e4: + addi $sp, $sp, 8 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval5.mips b/eval-final-projet/ref-mips/eval5.mips new file mode 100644 index 0000000..442bf1b --- /dev/null +++ b/eval-final-projet/ref-mips/eval5.mips @@ -0,0 +1,525 @@ + .data +v$tab: .space 40 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_initialiser: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 8 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 6 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 9 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 9 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 5 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 6 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 7 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 4 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 8 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + li $t0, 5 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 9 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_afficher: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable +i_e0: + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e2 + li $t2, 0 +i_e2: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e1 + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + j i_e0 +i_e1: + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_echanger: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation variables locales + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, v$tab($t0) # stocke variable + addi $sp, $sp, 4 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_trier: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 12 # allocation variables locales + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -16($fp) # stocke variable + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable +i_e3: + lw $t1, -8($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # egal + beq $t0, $t1, i_e5 + li $t2, 0 +i_e5: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e4 + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable + li $t0, 0 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -12($fp) # stocke variable +i_e6: + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, -16($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e8 + li $t2, 0 +i_e8: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e7 + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t0, $t0, $t0 + add $t0, $t0, $t0 + lw $t1, v$tab($t0) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $t2, -1 # inf + blt $t0, $t1, i_e11 + li $t2, 0 +i_e11: + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + beq $t0, $zero, i_e10 + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + # empile arg 1 + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + jal f_echanger + addi $sp, $sp, 8 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -8($fp) # stocke variable +i_e10: + lw $t1, -12($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -12($fp) # stocke variable + j i_e6 +i_e7: + lw $t1, -16($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sw $t1, -16($fp) # stocke variable + j i_e3 +i_e4: + addi $sp, $sp, 12 # desallocation variables locales + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + jal f_initialiser + addi $sp, $sp, 4 # valeur de retour ignoree + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + jal f_afficher + addi $sp, $sp, 4 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + jal f_trier + addi $sp, $sp, 4 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + jal f_afficher + addi $sp, $sp, 4 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval6.mips b/eval-final-projet/ref-mips/eval6.mips new file mode 100644 index 0000000..107049d --- /dev/null +++ b/eval-final-projet/ref-mips/eval6.mips @@ -0,0 +1,43 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_procedure: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + jal f_procedure + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval7.mips b/eval-final-projet/ref-mips/eval7.mips new file mode 100644 index 0000000..91e52af --- /dev/null +++ b/eval-final-projet/ref-mips/eval7.mips @@ -0,0 +1,49 @@ + .data +v$a: .space 4 + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 5 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + li $t0, 3 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + sub $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + li $t0, 2 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $t1, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $t0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + add $t2, $t0, $t1 + subi $sp, $sp, 4 # empile registre + sw $t2, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval8.mips b/eval-final-projet/ref-mips/eval8.mips new file mode 100644 index 0000000..4ee0d5a --- /dev/null +++ b/eval-final-projet/ref-mips/eval8.mips @@ -0,0 +1,47 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_procedure: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + lw $t1, 4($fp) # lit variable dans $t1 + subi $sp, $sp, 4 # empile registre + sw $t1, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + # empile arg 0 + li $t0, 10 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + jal f_procedure + addi $sp, $sp, 4 # desallocation parametres + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-mips/eval9.mips b/eval-final-projet/ref-mips/eval9.mips new file mode 100644 index 0000000..00f64b2 --- /dev/null +++ b/eval-final-projet/ref-mips/eval9.mips @@ -0,0 +1,42 @@ + .data + + .text +___start: + jal f_main + li $v0, 10 + syscall # stoppe l'execution du processus +f_procedure: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + li $t0, 1 + subi $sp, $sp, 4 # empile registre + sw $t0, 0($sp) + lw $a0, 0($sp) # depile vers registre + addi $sp, $sp, 4 + li $v0, 1 + syscall # ecriture + li $a0, '\n' + li $v0, 11 + syscall # ecrire char + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra +f_main: + subi $sp, $sp, 4 # empile registre + sw $fp, 0($sp) + move $fp, $sp # nouvelle valeur de $fp + subi $sp, $sp, 4 # empile registre + sw $ra, 0($sp) + subi $sp, $sp, 4 # allocation valeur de retour + jal f_procedure + addi $sp, $sp, 4 # valeur de retour ignoree + lw $ra, 0($sp) # depile vers registre + addi $sp, $sp, 4 + lw $fp, 0($sp) # depile vers registre + addi $sp, $sp, 4 + jr $ra diff --git a/eval-final-projet/ref-synt/eval1.synt b/eval-final-projet/ref-synt/eval1.synt new file mode 100644 index 0000000..038df30 --- /dev/null +++ b/eval-final-projet/ref-synt/eval1.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-final-projet/ref-synt/eval10.synt b/eval-final-projet/ref-synt/eval10.synt new file mode 100644 index 0000000..5a20a3e --- /dev/null +++ b/eval-final-projet/ref-synt/eval10.synt @@ -0,0 +1,118 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval11.synt b/eval-final-projet/ref-synt/eval11.synt new file mode 100644 index 0000000..9147791 --- /dev/null +++ b/eval-final-projet/ref-synt/eval11.synt @@ -0,0 +1,146 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval12.synt b/eval-final-projet/ref-synt/eval12.synt new file mode 100644 index 0000000..c855a07 --- /dev/null +++ b/eval-final-projet/ref-synt/eval12.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-final-projet/ref-synt/eval13.synt b/eval-final-projet/ref-synt/eval13.synt new file mode 100644 index 0000000..f049cf1 --- /dev/null +++ b/eval-final-projet/ref-synt/eval13.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-final-projet/ref-synt/eval14.synt b/eval-final-projet/ref-synt/eval14.synt new file mode 100644 index 0000000..d0d0c20 --- /dev/null +++ b/eval-final-projet/ref-synt/eval14.synt @@ -0,0 +1,487 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + $a + + + + EGAL + + + + + + + + 0 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + tantque + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + $a + + + + EGAL + + + + + + + + + $a + + + + + + + + + PLUS + + + 1 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval15.synt b/eval-final-projet/ref-synt/eval15.synt new file mode 100644 index 0000000..f09da36 --- /dev/null +++ b/eval-final-projet/ref-synt/eval15.synt @@ -0,0 +1,170 @@ + + + + + entier + $tab + + CROCHET_OUVRANT + 10 + CROCHET_FERMANT + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + EGAL + + + + + + + + 4 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $tab + + CROCHET_OUVRANT + + + + + + + + 4 + + + + + + + + + + + + + + + + + + CROCHET_FERMANT + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval16.synt b/eval-final-projet/ref-synt/eval16.synt new file mode 100644 index 0000000..7dcd9b3 --- /dev/null +++ b/eval-final-projet/ref-synt/eval16.synt @@ -0,0 +1,110 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + tantque + + + + + + + + 0 + + + + + + + + + + + + + + + + + + faire + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval17.synt b/eval-final-projet/ref-synt/eval17.synt new file mode 100644 index 0000000..812c711 --- /dev/null +++ b/eval-final-projet/ref-synt/eval17.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-final-projet/ref-synt/eval18.synt b/eval-final-projet/ref-synt/eval18.synt new file mode 100644 index 0000000..0adb6ca --- /dev/null +++ b/eval-final-projet/ref-synt/eval18.synt @@ -0,0 +1,401 @@ + + + + + entier + $t0 + + + + + VIRGULE + + entier + $t1 + + + + + VIRGULE + + entier + $123 + + + + + VIRGULE + + entier + $ + + + + + VIRGULE + + entier + $$ + + + + + VIRGULE + + entier + $$$ + + + + + VIRGULE + + entier + $f + + + + + VIRGULE + + entier + $_ + + + + + + + + + + + + + + POINT_VIRGULE + + + + f + + PARENTHESE_OUVRANTE + + + + entier + $$ + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $$$ + + + + + VIRGULE + + entier + $f + + + + + VIRGULE + + entier + $_ + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $ + + + + EGAL + + + + + + + + + $123 + + + + + + + + + PLUS + + + + $_ + + + + + + + + + PLUS + + + + $$ + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $ + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $t0 + + + + EGAL + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $123 + + + + EGAL + + + + + + + + + $t0 + + + + + + + + + PLUS + + + 0 + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + f + PARENTHESE_OUVRANTE + + + + + + + + + + $123 + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval19.synt b/eval-final-projet/ref-synt/eval19.synt new file mode 100644 index 0000000..3f15bda --- /dev/null +++ b/eval-final-projet/ref-synt/eval19.synt @@ -0,0 +1,80 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + ET + + + + + + 2 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval2.synt b/eval-final-projet/ref-synt/eval2.synt new file mode 100644 index 0000000..c3cf0f2 --- /dev/null +++ b/eval-final-projet/ref-synt/eval2.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-final-projet/ref-synt/eval20.synt b/eval-final-projet/ref-synt/eval20.synt new file mode 100644 index 0000000..8c37de9 --- /dev/null +++ b/eval-final-projet/ref-synt/eval20.synt @@ -0,0 +1,408 @@ + + + + + + fact + + PARENTHESE_OUVRANTE + + + + entier + $f + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + + $f + + + + + + + + + + + + EGAL + + + + 1 + + + + + + + + + + + + + + + + + OU + + + + + + + + $f + + + + + + + + + + + + EGAL + + + + 0 + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + 1 + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + fact + PARENTHESE_OUVRANTE + + + + + + + + + + $f + + + + + + + + + MOINS + + + 1 + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + FOIS + + + $f + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + fact + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval21.synt b/eval-final-projet/ref-synt/eval21.synt new file mode 100644 index 0000000..1ca6407 --- /dev/null +++ b/eval-final-projet/ref-synt/eval21.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-final-projet/ref-synt/eval22.synt b/eval-final-projet/ref-synt/eval22.synt new file mode 100644 index 0000000..9f90605 --- /dev/null +++ b/eval-final-projet/ref-synt/eval22.synt @@ -0,0 +1,759 @@ + + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + POINT_VIRGULE + + + + pgcd + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + VIRGULE + + entier + $b + + + + + + + + + PARENTHESE_FERMANTE + + + + + entier + $c + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $c + + + + EGAL + + + + + + + + + $a + + + + + + + + + MOINS + + + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + DIVISE + + + $b + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + FOIS + + + $b + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $c + + + + + + + + + + + + EGAL + + + + 0 + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + retour + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $c + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $b + + + + EGAL + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + si + + + + + + + + + $b + + + + + + + + + + + + INFERIEUR + + + + + $a + + + + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + sinon + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + pgcd + PARENTHESE_OUVRANTE + + + + + + + + + + $b + + + + + + + + + + + + + + + + + + + + + + VIRGULE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval23.synt b/eval-final-projet/ref-synt/eval23.synt new file mode 100644 index 0000000..08c8ac7 --- /dev/null +++ b/eval-final-projet/ref-synt/eval23.synt @@ -0,0 +1,127 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + si + + + + + + + + 1 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + alors + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval24.synt b/eval-final-projet/ref-synt/eval24.synt new file mode 100644 index 0000000..d08fc77 --- /dev/null +++ b/eval-final-projet/ref-synt/eval24.synt @@ -0,0 +1,375 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + + + + OU + + + + + + + 4 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + ET + + + + + + 6 + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 3 + + + + + + + + + + + + + ET + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + + + + OU + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 0 + + + + + + + + + + + + + ET + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval25.synt b/eval-final-projet/ref-synt/eval25.synt new file mode 100644 index 0000000..6792f8c --- /dev/null +++ b/eval-final-projet/ref-synt/eval25.synt @@ -0,0 +1,197 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + $a + + + + EGAL + + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + + $a + + + + + + + + + + + + INFERIEUR + + + + 10 + + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval26.synt b/eval-final-projet/ref-synt/eval26.synt new file mode 100644 index 0000000..d8ba9dd --- /dev/null +++ b/eval-final-projet/ref-synt/eval26.synt @@ -0,0 +1,688 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + entier + $temp + + + + + VIRGULE + + entier + $g + + + + + VIRGULE + + entier + $l + + + + + VIRGULE + + entier + $v + + + + + + + + + + POINT_VIRGULE + + + ACCOLADE_OUVRANTE + + + + + $temp + + + + EGAL + + + + + + + + + lire + PARENTHESE_OUVRANTE + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $g + + + + EGAL + + + + + + + + + + $temp + + + + + + + + + + + + INFERIEUR + + + + 0 + + + + + + + + + + + + + + + + + OU + + + + + + + + $temp + + + + + + + + + + + + EGAL + + + + 0 + + + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $l + + + + EGAL + + + + + + + + + + $temp + + + + + + + + + + + + INFERIEUR + + + + 100 + + + + + + + + + + + + + + ET + + + + + + 0 + + + + + + + + + INFERIEUR + + + + + $temp + + + + + + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + + $v + + + + EGAL + + + + + NON + + + + + + $g + + + + + + + + + + + + + + + + ET + + NON + + + + + + $l + + + + + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + + + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + + $g + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + + $l + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + + $v + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval27.synt b/eval-final-projet/ref-synt/eval27.synt new file mode 100644 index 0000000..66e9878 --- /dev/null +++ b/eval-final-projet/ref-synt/eval27.synt @@ -0,0 +1,562 @@ + + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + PARENTHESE_OUVRANTE + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + PARENTHESE_OUVRANTE + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + INTERROGATION + + + + + + + + + 0 + + + + + + + + + + + + + + + + + + + + + DEUXPOINTS + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval3.synt b/eval-final-projet/ref-synt/eval3.synt new file mode 100644 index 0000000..4d058f0 --- /dev/null +++ b/eval-final-projet/ref-synt/eval3.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-final-projet/ref-synt/eval4.synt b/eval-final-projet/ref-synt/eval4.synt new file mode 100644 index 0000000..08f06d7 --- /dev/null +++ b/eval-final-projet/ref-synt/eval4.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-final-projet/ref-synt/eval5.synt b/eval-final-projet/ref-synt/eval5.synt new file mode 100644 index 0000000..77a518b --- /dev/null +++ b/eval-final-projet/ref-synt/eval5.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-final-projet/ref-synt/eval6.synt b/eval-final-projet/ref-synt/eval6.synt new file mode 100644 index 0000000..8451b47 --- /dev/null +++ b/eval-final-projet/ref-synt/eval6.synt @@ -0,0 +1,104 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval7.synt b/eval-final-projet/ref-synt/eval7.synt new file mode 100644 index 0000000..62e65c9 --- /dev/null +++ b/eval-final-projet/ref-synt/eval7.synt @@ -0,0 +1,91 @@ + + + + + entier + $a + + + + + + + POINT_VIRGULE + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 5 + + + + + + MOINS + + + 3 + + + + + + PLUS + + + 2 + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + diff --git a/eval-final-projet/ref-synt/eval8.synt b/eval-final-projet/ref-synt/eval8.synt new file mode 100644 index 0000000..ab621d9 --- /dev/null +++ b/eval-final-projet/ref-synt/eval8.synt @@ -0,0 +1,134 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + + entier + $a + + + + + + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + + $a + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + + + + + + + 10 + + + + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-synt/eval9.synt b/eval-final-projet/ref-synt/eval9.synt new file mode 100644 index 0000000..cf9f1f3 --- /dev/null +++ b/eval-final-projet/ref-synt/eval9.synt @@ -0,0 +1,93 @@ + + + + + + procedure + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + ecrire + PARENTHESE_OUVRANTE + + + + + + + + 1 + + + + + + + + + + + + + + + + + + PARENTHESE_FERMANTE + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + main + + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + + + + ACCOLADE_OUVRANTE + + + + + procedure + PARENTHESE_OUVRANTE + + + PARENTHESE_FERMANTE + + POINT_VIRGULE + + + + + + ACCOLADE_FERMANTE + + + + + + + diff --git a/eval-final-projet/ref-tab/eval1.tab b/eval-final-projet/ref-tab/eval1.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval1.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval10.tab b/eval-final-projet/ref-tab/eval10.tab new file mode 100644 index 0000000..a780954 --- /dev/null +++ b/eval-final-projet/ref-tab/eval10.tab @@ -0,0 +1,11 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval11.tab b/eval-final-projet/ref-tab/eval11.tab new file mode 100644 index 0000000..75b866f --- /dev/null +++ b/eval-final-projet/ref-tab/eval11.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 $a LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval12.tab b/eval-final-projet/ref-tab/eval12.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval12.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval13.tab b/eval-final-projet/ref-tab/eval13.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval13.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval14.tab b/eval-final-projet/ref-tab/eval14.tab new file mode 100644 index 0000000..6ef7c9a --- /dev/null +++ b/eval-final-projet/ref-tab/eval14.tab @@ -0,0 +1,7 @@ +------------------------------------------ +base = 2 +sommet = 3 +0 $tab GLOBALE TABLEAU 0 10 +1 main GLOBALE FONCTION 0 0 +2 $a LOCALE ENTIER 0 -1 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval15.tab b/eval-final-projet/ref-tab/eval15.tab new file mode 100644 index 0000000..de4eeb4 --- /dev/null +++ b/eval-final-projet/ref-tab/eval15.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $tab GLOBALE TABLEAU 0 10 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval16.tab b/eval-final-projet/ref-tab/eval16.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval16.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval17.tab b/eval-final-projet/ref-tab/eval17.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval17.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval18.tab b/eval-final-projet/ref-tab/eval18.tab new file mode 100644 index 0000000..028ddd4 --- /dev/null +++ b/eval-final-projet/ref-tab/eval18.tab @@ -0,0 +1,31 @@ +------------------------------------------ +base = 9 +sommet = 13 +0 $t0 GLOBALE ENTIER 0 -1 +1 $t1 GLOBALE ENTIER 4 -1 +2 $123 GLOBALE ENTIER 8 -1 +3 $ GLOBALE ENTIER 12 -1 +4 $$ GLOBALE ENTIER 16 -1 +5 $$$ GLOBALE ENTIER 20 -1 +6 $f GLOBALE ENTIER 24 -1 +7 $_ GLOBALE ENTIER 28 -1 +8 f GLOBALE FONCTION 0 1 +9 $$ ARGUMENT ENTIER 0 -1 +10 $$$ LOCALE ENTIER 0 -1 +11 $f LOCALE ENTIER 4 -1 +12 $_ LOCALE ENTIER 8 -1 +------------------------------------------ +------------------------------------------ +base = 10 +sommet = 10 +0 $t0 GLOBALE ENTIER 0 -1 +1 $t1 GLOBALE ENTIER 4 -1 +2 $123 GLOBALE ENTIER 8 -1 +3 $ GLOBALE ENTIER 12 -1 +4 $$ GLOBALE ENTIER 16 -1 +5 $$$ GLOBALE ENTIER 20 -1 +6 $f GLOBALE ENTIER 24 -1 +7 $_ GLOBALE ENTIER 28 -1 +8 f GLOBALE FONCTION 0 1 +9 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval19.tab b/eval-final-projet/ref-tab/eval19.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/ref-tab/eval19.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval2.tab b/eval-final-projet/ref-tab/eval2.tab new file mode 100644 index 0000000..f37700e --- /dev/null +++ b/eval-final-projet/ref-tab/eval2.tab @@ -0,0 +1,7 @@ +------------------------------------------ +base = 3 +sommet = 3 +0 $i GLOBALE ENTIER 0 -1 +1 $carre GLOBALE ENTIER 4 -1 +2 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval20.tab b/eval-final-projet/ref-tab/eval20.tab new file mode 100644 index 0000000..8d8ab1f --- /dev/null +++ b/eval-final-projet/ref-tab/eval20.tab @@ -0,0 +1,13 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 fact GLOBALE FONCTION 0 1 +1 $f ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 3 +0 fact GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +2 $a LOCALE ENTIER 0 -1 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval21.tab b/eval-final-projet/ref-tab/eval21.tab new file mode 100644 index 0000000..9245325 --- /dev/null +++ b/eval-final-projet/ref-tab/eval21.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 fibo GLOBALE FONCTION 0 1 +1 $n ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 fibo GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval22.tab b/eval-final-projet/ref-tab/eval22.tab new file mode 100644 index 0000000..a0255dd --- /dev/null +++ b/eval-final-projet/ref-tab/eval22.tab @@ -0,0 +1,18 @@ +------------------------------------------ +base = 3 +sommet = 6 +0 $a GLOBALE ENTIER 0 -1 +1 $b GLOBALE ENTIER 4 -1 +2 pgcd GLOBALE FONCTION 0 2 +3 $a ARGUMENT ENTIER 0 -1 +4 $b ARGUMENT ENTIER 4 -1 +5 $c LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 4 +sommet = 4 +0 $a GLOBALE ENTIER 0 -1 +1 $b GLOBALE ENTIER 4 -1 +2 pgcd GLOBALE FONCTION 0 2 +3 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval23.tab b/eval-final-projet/ref-tab/eval23.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/ref-tab/eval23.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval24.tab b/eval-final-projet/ref-tab/eval24.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/ref-tab/eval24.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval25.tab b/eval-final-projet/ref-tab/eval25.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval25.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval26.tab b/eval-final-projet/ref-tab/eval26.tab new file mode 100644 index 0000000..39e036b --- /dev/null +++ b/eval-final-projet/ref-tab/eval26.tab @@ -0,0 +1,9 @@ +------------------------------------------ +base = 1 +sommet = 5 +0 main GLOBALE FONCTION 0 0 +1 $temp LOCALE ENTIER 0 -1 +2 $g LOCALE ENTIER 4 -1 +3 $l LOCALE ENTIER 8 -1 +4 $v LOCALE ENTIER 12 -1 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval27.tab b/eval-final-projet/ref-tab/eval27.tab new file mode 100644 index 0000000..2a3c2e8 --- /dev/null +++ b/eval-final-projet/ref-tab/eval27.tab @@ -0,0 +1,5 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval3.tab b/eval-final-projet/ref-tab/eval3.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval3.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval4.tab b/eval-final-projet/ref-tab/eval4.tab new file mode 100644 index 0000000..3d3086c --- /dev/null +++ b/eval-final-projet/ref-tab/eval4.tab @@ -0,0 +1,15 @@ +------------------------------------------ +base = 1 +sommet = 3 +0 max GLOBALE FONCTION 0 2 +1 $a ARGUMENT ENTIER 0 -1 +2 $b ARGUMENT ENTIER 4 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 4 +0 max GLOBALE FONCTION 0 2 +1 main GLOBALE FONCTION 0 0 +2 $v_1 LOCALE ENTIER 0 -1 +3 $v_2 LOCALE ENTIER 4 -1 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval5.tab b/eval-final-projet/ref-tab/eval5.tab new file mode 100644 index 0000000..b248a59 --- /dev/null +++ b/eval-final-projet/ref-tab/eval5.tab @@ -0,0 +1,49 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $tab GLOBALE TABLEAU 0 10 +1 initialiser GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 3 +sommet = 5 +0 $tab GLOBALE TABLEAU 0 10 +1 initialiser GLOBALE FONCTION 0 0 +2 afficher GLOBALE FONCTION 0 1 +3 $n ARGUMENT ENTIER 0 -1 +4 $i LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 4 +sommet = 7 +0 $tab GLOBALE TABLEAU 0 10 +1 initialiser GLOBALE FONCTION 0 0 +2 afficher GLOBALE FONCTION 0 1 +3 echanger GLOBALE FONCTION 0 2 +4 $i ARGUMENT ENTIER 0 -1 +5 $j ARGUMENT ENTIER 4 -1 +6 $temp LOCALE ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 5 +sommet = 9 +0 $tab GLOBALE TABLEAU 0 10 +1 initialiser GLOBALE FONCTION 0 0 +2 afficher GLOBALE FONCTION 0 1 +3 echanger GLOBALE FONCTION 0 2 +4 trier GLOBALE FONCTION 0 1 +5 $n ARGUMENT ENTIER 0 -1 +6 $echange LOCALE ENTIER 0 -1 +7 $j LOCALE ENTIER 4 -1 +8 $m LOCALE ENTIER 8 -1 +------------------------------------------ +------------------------------------------ +base = 6 +sommet = 6 +0 $tab GLOBALE TABLEAU 0 10 +1 initialiser GLOBALE FONCTION 0 0 +2 afficher GLOBALE FONCTION 0 1 +3 echanger GLOBALE FONCTION 0 2 +4 trier GLOBALE FONCTION 0 1 +5 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval6.tab b/eval-final-projet/ref-tab/eval6.tab new file mode 100644 index 0000000..52a6119 --- /dev/null +++ b/eval-final-projet/ref-tab/eval6.tab @@ -0,0 +1,13 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 3 +sommet = 3 +0 $a GLOBALE ENTIER 0 -1 +1 procedure GLOBALE FONCTION 0 0 +2 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval7.tab b/eval-final-projet/ref-tab/eval7.tab new file mode 100644 index 0000000..91bc69d --- /dev/null +++ b/eval-final-projet/ref-tab/eval7.tab @@ -0,0 +1,6 @@ +------------------------------------------ +base = 2 +sommet = 2 +0 $a GLOBALE ENTIER 0 -1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval8.tab b/eval-final-projet/ref-tab/eval8.tab new file mode 100644 index 0000000..e831412 --- /dev/null +++ b/eval-final-projet/ref-tab/eval8.tab @@ -0,0 +1,12 @@ +------------------------------------------ +base = 1 +sommet = 2 +0 procedure GLOBALE FONCTION 0 1 +1 $a ARGUMENT ENTIER 0 -1 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 1 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/ref-tab/eval9.tab b/eval-final-projet/ref-tab/eval9.tab new file mode 100644 index 0000000..a780954 --- /dev/null +++ b/eval-final-projet/ref-tab/eval9.tab @@ -0,0 +1,11 @@ +------------------------------------------ +base = 1 +sommet = 1 +0 procedure GLOBALE FONCTION 0 0 +------------------------------------------ +------------------------------------------ +base = 2 +sommet = 2 +0 procedure GLOBALE FONCTION 0 0 +1 main GLOBALE FONCTION 0 0 +------------------------------------------ diff --git a/eval-final-projet/testAll.sh b/eval-final-projet/testAll.sh new file mode 100755 index 0000000..379fe18 --- /dev/null +++ b/eval-final-projet/testAll.sh @@ -0,0 +1,308 @@ +#!/bin/bash +############################################################################## +# +# Script d'évaluation automatique du compilateur. +# Compile le programme source et compare la sortie avec la référence. +# Pour le code MIPS, compare la SORTIE de l'exécution sur Mars +# Comprend +# * analyse lexicale, +# * analyse syntaxique, +# * arbre abstrait, +# * table des symboles et +# * code MIPS. +# +# ATTENTION : pour que le script marche, votre compilateur doit returner 0 em +# cas de succès, autre valeur en cas d'erreur (entrée ne compile pas +# correctement) et doit permettre d'afficher les sorties sur stdout, sauf +# éventuels messages d'erreur, sur stderr. On doit pouvoir, à tout moment, +# changer le type de sortie (lex, synt, asynt, tab, mips) avec des options. +# +############################################################################## +### LLL IIIIIII RRRRRRR EEEEEEEEE |||| +### LLL III RRR RRR EEEEEEEEE |||| +### LLL III RRR RR EEE |||| +### LLL III RRR RRR EEEEEEEE |||| +### LLL III RRRRRRR EEEEEEEE \\\\//// +### LLL III RRR RRR EEE \\\/// +### LLLLLLLL III RRR RRR EEEEEEEE \\// +### LLLLLLLL IIIIIII RRR RRR EEEEEEEEE \/ +############################################################################## + +# 1) MODIFIEZ LA VARIABLE CI-DESSOUS AVEC LE CHEMIN VERS VOTRE COMPILATEUR + +MYCOMPILO="../../TP/src/compilo" + +# 2) DÉCOMMENTEZ + MODIFIEZ LES COMMANDES POUR GÉNÉRER LES DIFFÉRENTES SORTIES + +MYCOMPILODEFAULT="${MYCOMPILO}" # utilisé pour test reconnaissance et erreur +#MYCOMPILOLEX="${MYCOMPILO} -l" # exécuter l'analyseur lexical +#MYCOMPILOSYNT="${MYCOMPILO} -s" # exécuter l'analyseur syntaxique +MYCOMPILOASYNT="${MYCOMPILO} -a" # afficher l'arbre abstrait +MYCOMPILOTAB="${MYCOMPILO} -t" # afficher les tables des symboles +MYCOMPILOMIPS="${MYCOMPILO} -m" # générer code MIPS +EXITONFAIL=1 # mettre à zéro pour continuer après erreurs +MARS="./Mars4_5.jar" # utilisez autre version de Mars si besoin +############################################################################## +# NE PLUS LIRE À PARTIR D'ICI ;-) +############################################################################## + +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" + +############################################################################## +# Fonction pour faire le diff textuel régulier (lex et tab). +# Cette fonction peut être passée en paramètre à la fonction diff_prog. +# @param $1 Fichier 1 +# @param $2 Fichier 2 +# @return 0 si pas de différence, autre sinon + +function REGDIFF() { + diff -q -w $1 $2 +} + +############################################################################## +# Fonction pour faire le diff entre deux fichiers XML (syn et asyn). +# Cette fonction peut être passée en paramètre à la fonction diff_prog. +# @param $1 Fichier XML 1 +# @param $2 Fichier XML 2 +# @return 0 si pas de différence, autre sinon + +function XMLDIFF() { + ./compare_arbres_xml $1 $2 +} + +############################################################################## +# Fonction pour faire le diff entre deux sorties d'exécution Mars (mips). +# Cette fonction peut être passée en paramètre à la fonction diff_prog. +# @param $1 Fichier mips 1 +# @param $2 Fichier mips 2 +# @param $3 Entrée à donner à l'exécution du programme (optionnel) +# @return 0 si pas de différence, autre sinon + +function MARSOUTDIFF() { + diff <(echo -e "$3" | java -jar $MARS $1 | tail -n +2 | sed ':a;N;$!ba;s/[ \n]//g') <(echo -e "$3" | java -jar $MARS $2 | tail -n +2 | sed ':a;N;$!ba;s/[ \n]//g') +} + +############################################################################## +# Fonction pour faire le diff entre deux fichiers, vérifier et afficher le +# résultat avec de belles couleurs. +# @param $1 Nom de la fonction utilisée pour faire le diff (parmi 3 ci-dessus) +# @param $2 Nom du fichier d'entrée à tester sans extension (p. ex. affect) +# @param $3 Extension du fichier à tester (p. ex. synt) +# @param $4 Entrée à donner à l'exécution du programme (optionnel) + +function diff_prog() { + diffprog=$1 + input=$2 + suffix=$3 + values=$4 + refoutput="ref-${suffix}/${input}.${suffix}" + sysoutput="output/${input}.${suffix}" + echo -e "\033[35m > ${testname[${suffix}]} (.${suffix})\033[0m" + echo -e "`wc -l output/${input}.${suffix} | awk '{print $1}'` lignes" + if [ -f ref-${suffix}/$input.${suffix} ]; then + ${diffprog} output/${input}.${suffix} ref-${suffix}/${input}.${suffix} ${values} 2>&1 2> /dev/null + if [ $? != 0 ]; then + echo -e "\033[31mTEST ${testname[${suffix}]} ÉCHOUÉ\033[0m" + echo -e "Différences entre output/${input}.${suffix} ref-${suffix}/${input}.${suffix} en utilisant $diffprog:" + ${diffprog} output/${input}.${suffix} ref-${suffix}/${input}.${suffix} ${values} + 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 +} + +############################################################################## +# Exécute tous les tests (reco, lex, synt, asynt, tab, mips) pour un exemple +# donné qui doit être correctement compilé à tous les niveaux. +# @param $1 Nom du fichier d'entrée à tester sans extension (p. ex. affect) +# @param $2 Entrée à donner à l'exécution du programme (optionnel) + +function test_fichier_ok() { + input=$1 + echo -e "\n\033[4m ---- Test input/$input.l ----\033[0m" + if [ -n "$2" ]; then + echo "Input : $2" + fi + if [ -f input/$input.l ]; then + # Reconnaissance : programme correct doit être accepté + if [ -n "${MYCOMPILODEFAULT}" ]; then + echo -e "\033[35m > Reconnaissance (accepte l'entrée)\033[0m" + ${MYCOMPILODEFAULT} 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 + fi + # Teste analyseur lexical + if [ -n "${MYCOMPILOLEX}" ]; then + ${MYCOMPILOLEX} input/$input.l > output/$input.lex + diff_prog REGDIFF $input lex + fi + # Teste analyseur syntaxique + if [ -n "${MYCOMPILOSYNT}" ]; then + ${MYCOMPILOSYNT} input/$input.l > output/$input.synt + diff_prog XMLDIFF $input synt + fi + # Teste création de l'arbre abstrait + if [ -n "${MYCOMPILOASYNT}" ]; then + ${MYCOMPILOASYNT} input/$input.l > output/$input.asynt + diff_prog XMLDIFF $input asynt + fi + # Teste replissage de la table des symboles + if [ -n "${MYCOMPILOTAB}" ]; then + ${MYCOMPILOTAB} input/$input.l > output/$input.tab + diff_prog REGDIFF $input tab + fi + # Teste génération de code MIPS + if [ -n "${MYCOMPILOMIPS}" ]; then + ${MYCOMPILOMIPS} input/$input.l > output/$input.mips + diff_prog MARSOUTDIFF $input mips "$2" + fi + else + echo -e "\033[31minput/$input.l non trouvé\033[0m" + echo -e "\033[31mTest impossible\033[0m" + fi +} + +############################################################################## +# Vérifie qu'un programme contenant des erreurs n'est pas reconnu/compilé. +# @param $1 Nom du fichier d'entrée à tester sans extension (p. ex. affect) + +function test_fichier_fail() { + input=$1 + echo -e "\n\033[4m ---- Test input/$input.l ----\033[0m" + ${MYCOMPILODEFAULT} input/$input.l > output/$input.synt.xml + if [ $? = 0 ]; then + echo -e "\033[31mTEST REJET ÉCHOUÉ\033[0m" + echo -e "Le programme $input.l est accepté mais il devrait être rejeté" + if [ $EXITONFAIL = 1 ]; then exit 1; fi + else + echo -e "\033[32mTEST REJET OK\033[0m" + fi +} + +############################################################################## +####### ##### ###### ###### ### ##### ############################### +####### ### ##### # ###### #### ### ############################### +####### # #### ### ##### #### ## # ############################### +####### # # ### #### #### ### ############################### +####### ## ## ## ####### ## ### #### ############################### +############################################################################## + +mkdir -p output +make clean +make + +################################################################################ +# Vérifications initiales : MYCOMPILO et MARS bien configurés? + +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 +if [ -n "${MYCOMPILOMIPS}" -a ! -f ${MARS} ]; then + echo -e "\033[31mMARS introuvable" + echo -e "Modifiez la variable MARS avant de lancer l'éval\033[0m" + exit 1 +fi + +################################################################################ + +echo -e "\033[1m\n>> 1.1) Tests connus OK\033[0m" + +test_fichier_ok eval1 +test_fichier_ok eval2 +test_fichier_ok eval3 +# 3 cas de figure selon les entrées tapées +test_fichier_ok eval4 "3\n10\n" +test_fichier_ok eval4 "10\n10\n" +test_fichier_ok eval4 "-3\n-10\n" +test_fichier_ok eval5 + +################################################################################ + +echo -e "\033[1m\n>> 1.2) Tests connus FAIL\033[0m" + +test_fichier_fail eval1-err + +################################################################################ + +echo -e "\033[1m\n>> 2.1) Tests nouveaux OK\033[0m" + +test_fichier_ok eval6 +test_fichier_ok eval7 +test_fichier_ok eval8 +test_fichier_ok eval9 +test_fichier_ok eval10 +test_fichier_ok eval11 +test_fichier_ok eval12 +test_fichier_ok eval13 +test_fichier_ok eval14 +test_fichier_ok eval15 +test_fichier_ok eval16 +test_fichier_ok eval17 +test_fichier_ok eval18 +test_fichier_ok eval19 +test_fichier_ok eval20 "0" +test_fichier_ok eval20 "1" +test_fichier_ok eval20 "10" +test_fichier_ok eval20 "16" +test_fichier_ok eval21 "-1" +test_fichier_ok eval21 "1" +test_fichier_ok eval21 "10" +test_fichier_ok eval21 "16" +test_fichier_ok eval22 "10\n5\n" +test_fichier_ok eval22 "31\n175\n" +test_fichier_ok eval22 "2\n2\n" +test_fichier_ok eval23 "1" +test_fichier_ok eval23 "0" +test_fichier_ok eval24 "7\n7\n7\n7\n" +test_fichier_ok eval24 "0\n7\n0\n7\n" +test_fichier_ok eval24 "7\n0\n7\n0\n" +test_fichier_ok eval24 "0\n0\n0\n0\n" + +################################################################################ + +echo -e "\033[1m\n>> 2.2) Tests nouveaux FAIL\033[0m" + +test_fichier_fail eval2-err +test_fichier_fail eval3-err +test_fichier_fail eval4-err +test_fichier_fail eval5-err +test_fichier_fail eval6-err +test_fichier_fail eval7-err +test_fichier_fail eval8-err +test_fichier_fail eval9-err +test_fichier_fail eval10-err +test_fichier_fail eval11-err +test_fichier_fail eval12-err + +################################################################################ + +echo -e "\033[1m\n>> 3.1) Tests nouvelle fonctionnalité OK\033[0m" + +test_fichier_ok eval25 "9" +test_fichier_ok eval25 "10" +test_fichier_ok eval25 "11" +test_fichier_ok eval26 "-50" +test_fichier_ok eval26 "50" +test_fichier_ok eval26 "150" +test_fichier_ok eval27 + +################################################################################ +echo -e "\033[1m\n>> 3.2) Tests nouvelle fonctionnalité FAIL\033[0m" + +test_fichier_fail eval13-err