\chapter*{Introduction} \addcontentsline{toc}{chapter}{Introduction} \Large Le projet interpréteur LIR a été réalisé selon un modèle de cycle de vie itératif. Dans ce document des spécifications détaillées du projet seront présentés les fonctionnalités ajoutées à l'interpréteur au cours de chaque itération avec les récits d'utilisation des fonctionnalités ajoutées ou des éléments nécessaires au bon fonctionnement de l'interpréteur LIR. \large \chapter{Première itération} \section*{Contenu de la première itération} Dans cette première itération, l'objectif est d'avoir un prototype de l'interpréteur avec des fonctionnalités de base. Ces premières fonctionnalités sont les commandes et instructions suivantes : \begin{itemize} \item Commande \verb|debut| qui efface toutes les lignes de programme mémorisées ainsi que tous les identificateurs mémorisés. \item Commande \verb|fin| qui quitte l'interpréteur. \item Commande \verb|defs| qui affiche le contexte de l'interpréteur, i.e. affiche la liste des identificateurs définis durant la session avec leur valeur. \item Instruction \verb|affiche| qui évalue la valeur de l'expression et l'affiche sur la sortie texte courante ou alors provoque un saut de ligne sur la sortie texte courante. \item Instruction \verb|var| qui affecte la valeur de l'expression à la variable nommée par l’identificateur. \end{itemize} \footnotesize \chapter*{Récits d'utilisation proposés lors de l'itération 1} \input{fichiers/specifLaTex/iteration1/userStoryCommande.tex} \newpage \input{fichiers/specifLaTex/iteration1/userStoryCommandeDebut.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeFin.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeDefs.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeAffiche.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeAfficheExpression.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeVarChaine.tex} \input{fichiers/specifLaTex/iteration1/userStoryCommandeVarEntier.tex} \input{fichiers/specifLaTex/iteration1/userStoryConcatenation.tex} \input{fichiers/specifLaTex/iteration1/userStoryExpressionLogique.tex} \input{fichiers/specifLaTex/iteration1/userStoryExpressionArithmetique.tex} \large \chapter{Deuxième itération} \section*{Contenu de la deuxième itération} Dans cette deuxième itération, l'objectif est d'ajouter des fonctionnalités permettant l'écriture de programmes simple en LIR, à savoir : \begin{itemize} \item Commande \verb|efface| qui efface toutes les lignes de programme dont le numéro d’étiquette est dans la plage comprise entre \verb|| et \verb||. \item Commande \verb|lance| qui démarre l’exécution d’un programme à partir de son plus petit numéro d’étiquette ou du numéro d'étiquette indiqué par l'utilisateur. \item Commande \verb|liste| qui affiche toutes les lignes de programme mémorisées dans l'ordre croissant des numéros de ligne. \item Instruction \verb|stop| qui arrête l'exécution du programme. \item Instruction \verb|vaen| qui continue l'exécution à partir du numéro spécifié par étiquette. \item Instruction \verb|procedure| qui transfère l'exécution du programme au numéro d’étiquette spécifié et qui reprendra en séquence lorsque la procédure sera terminée. \item Instruction \verb|retour| qui, rencontrée après un appel de procédure, provoque un retour à l'instruction qui suit son appel. \end{itemize} \footnotesize \chapter*{Récits d'utilisation proposés lors de l'itération 2} \input{fichiers/specifLaTex/iteration2/userStoryCommandeEfface.tex} \newpage \input{fichiers/specifLaTex/iteration2/userStoryCommandeLance.tex} \input{fichiers/specifLaTex/iteration2/userStoryCommandeStop.tex} \input{fichiers/specifLaTex/iteration2/userStoryEtiquette.tex} \input{fichiers/specifLaTex/iteration2/userStoryInstruction.tex} \input{fichiers/specifLaTex/iteration2/userStoryInstructionVaen.tex} \input{fichiers/specifLaTex/iteration2/userStoryLanceEtiquette.tex} \input{fichiers/specifLaTex/iteration2/userStoryProcedure.tex} \input{fichiers/specifLaTex/iteration2/userStoryRetour.tex} \input{fichiers/specifLaTex/iteration2/userStroryListeArgument.tex} \input{fichiers/specifLaTex/iteration2/userStroryListeVoid.tex} \large \chapter{Troisième itération} \section*{Contenu de la première itération} Dans cette troisième itération, l'objectif est de couvrir toutes les fonctionnalités attendues. Ces dernières concernent la lecture et l'écriture de fichier et l'ajout d'une structure de contrôle à l'interpréteur : \begin{itemize} \item Commande \verb|sauve| qui sauvegarde les lignes de programme dans le fichier texte indiqué en argument. \item Commande \verb|charge| qui charge dans le contexte les lignes de programme sauvegardées dans le fichier texte indiqué en argument. \item Instruction \verb|si... vaen| : si la condition est vraie alors l'exécution continuera à partir du numéro de ligne spécifié par l’étiquette, sinon l'exécution continuera en séquence. \end{itemize} \footnotesize \chapter*{Récits d'utilisation proposés lors de l'itération 3} \input{fichiers/specifLaTex/iteration3/userStoryCommandeSauve.tex} \newpage \input{fichiers/specifLaTex/iteration3/userStoryCommandeCharge.tex} \input{fichiers/specifLaTex/iteration3/userStoryInstructionSiVaen.tex}