\documentclass[12pt,a4paper,titlepage,openany, oneside]{report} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage[french]{babel} \usepackage[top=1.5cm, bottom=4cm]{geometry} \usepackage{fancyhdr, graphicx, array, hyperref} \pagestyle{fancy} \title{\textsc{\textbf{Spécifications détaillées\\Interpréteur du langage LIR}}} \date{} \author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and Pierre \textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs \textsc{Vabre} } \begin{document} \lhead{\leftmark} \rhead{ \includegraphics[width=2cm]{./img/logoiut} } \cfoot{\thepage} \headheight = 2cm \headsep = 0.5cm \begin{titlepage} \fontfamily{pag}\selectfont \begin{center}\normalsize \MakeUppercase{IUT de Rodez \hfill Département informatique \hfill INFO1 2020-2021} \end{center} \vspace*{0.1cm} \hrule \vspace*{0.2cm} \begin{flushright} \includegraphics[width=4cm]{./img/logoiut} \end{flushright} \vspace*{2cm} \begin{flushright}\Huge \textsc{\textbf{Spécifications détaillées \\Interpréteur du langage LIR}} \end{flushright} \hrule \begin{flushleft} \MakeUppercase{Projet proposé par Frédérique Barrios} \end{flushleft} \vspace*{2cm} \begin{center}\Large Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\ Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\ Lucàs \textsc{Vabre} \end{center} \vfill \begin{center}\normalsize \MakeUppercase{Projet tuteuré --- Semestre 2} \end{center} \end{titlepage} \renewcommand\rmdefault{pag} \fontfamily{pag}\selectfont \renewcommand{\sfdefault}{pag} % Sommaire \renewcommand{\contentsname}{Sommaire} \tableofcontents \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{./iteration1/userStoryCommande.tex} \newpage \input{./iteration1/userStoryCommandeDebut.tex} \input{./iteration1/userStoryCommandeFin.tex} \input{./iteration1/userStoryCommandeDefs.tex} \input{./iteration1/userStoryCommandeAffiche.tex} \input{./iteration1/userStoryCommandeAfficheExpression.tex} \input{./iteration1/userStoryCommandeVarChaine.tex} \input{./iteration1/userStoryCommandeVarEntier.tex} \input{./iteration1/userStoryConcatenation.tex} \input{./iteration1/userStoryExpressionLogique.tex} \input{./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{./iteration2/userStoryCommandeEfface.tex} \newpage \input{./iteration2/userStoryCommandeLance.tex} \input{./iteration2/userStoryCommandeStop.tex} \input{./iteration2/userStoryEtiquette.tex} \input{./iteration2/userStoryInstruction.tex} \input{./iteration2/userStoryInstructionVaen.tex} \input{./iteration2/userStoryLanceEtiquette.tex} \input{./iteration2/userStoryProcedure.tex} \input{./iteration2/userStoryRetour.tex} \input{./iteration2/userStroryListeArgument.tex} \input{./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{./iteration3/userStoryCommandeSauve.tex} \newpage \input{./iteration3/userStoryCommandeCharge.tex} \input{./iteration3/userStoryInstructionSiVaen.tex} \end{document}