mirror of
https://github.com/LucasVbr/interpreteur-lir.git
synced 2026-05-13 17:21:52 +00:00
186 lines
7.4 KiB
TeX
186 lines
7.4 KiB
TeX
\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|<etiquette_debut>| et
|
||
\verb|<etiquette_fin>|.
|
||
\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}
|