From 5dbc8438f862b759c01f829afd7b254fec21d655 Mon Sep 17 00:00:00 2001
From: Pixel <Pixel>
Date: Thu, 3 May 2001 00:43:58 +0000
Subject: Blah

---
 doc/description.tex | 45 ++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 40 insertions(+), 5 deletions(-)

(limited to 'doc/description.tex')

diff --git a/doc/description.tex b/doc/description.tex
index 0ad1062..4924468 100644
--- a/doc/description.tex
+++ b/doc/description.tex
@@ -23,15 +23,50 @@ d
 de type tri de monome ). Cet ordre de tri est tr�s pratique pour des algorithmes comme la division ou l'addition.
 Comme dans le module pr�c�dent, nous y avons ajout� une routine de conversion d'un polynome en une chaine de caract�res format�e
 d�pendant notamment de la variable globale smartprint.
-
 \subsection{fonctions.c}
 
 
-\section{module d interpr�tation des lignes de commande}
-parser.c pile.c numbers.c
+
+
+
+
+\section{Module d'interpr�tation des lignes de commande}
+\subsection{parser.c}
+Ce module est la cl� de voute de notre ensemble. Il est d�crit plus en d�tail dans la section suivante. Il s'occupe de lire
+une cha�ne qui lui a �t� pass� par l'interface, et va la d�composer en une s�rie d'appel vers une pile, cod�e dans un autre module.
+Il va simplement d�gager les op�rateurs et les op�randes pour les fournir � la pile sous la forme d'une pile polonaise invers�e.
+\subsection{pile.c}
+Ce module poss�de principalement deux fonctions (push\_pile() et act\_pile()) qui sont appel�es par le parser. La fonction
+push\_pile() va tenter de d�gager une op�rande de l'entr�e qui est faite sous forme d'une string. En particulier, elle va tenter
+d'analyser l'entr�e suivant trois crit�res:
+\begin{itemize}
+\item Est-ce un entier?
+\item Est-ce un flottant?
+\item Est-ce une variable d�j� enregistr�e?
+\end{itemize}
+En cas d'�chec de ces trois crit�res, elle consid�rera qu'il s'agit d'un symbole. La fonction act\_pile() va simplement
+d�piler suffisemment d'op�rande de la pile, effectuer l'op�ration demand�e, et r�ins�rer le r�sultat sur la pile.
+\subsection{numbers.c}
+Ce tout petit module contient des fonctions qui peuvent convertir n'importe quelle cha�ne contenant un nombre en son �quivalent.
+char\_to\_number() est capable de convertir un entier �crit en d�cimal, octal ou h�xad�cimal. char\_to\_rat() se charge de lire
+un nombre flottant et de le stocker directement dans notre structure 'rationnel'.
 
 \section{Modules de saisie et  d'affichage}
-interface.c terminal.c
+\subsection{interface.c}
+Ce module est l'interface de saisie. Les fonctions impl�ment�es ne sont pas portables, au sens o� elles d�pendent du
+terminal utilis�, en particulier pour l'usage des touches droites, gauches, F3, CTRL-C, insert, home et end. Mais dans
+tous les cas, elles seront capable de lire une entr�e "classique", ne pr�sentant aucun caract�re particulier. Une fois la
+touche 'entr�e' enfonc�e, elle va appeler la fonction parse\_line(), provenant du module parser.c.
+\subsection{terminal.c}
+Ces quelques fonctions nous permettent d'initialiser le terminal � notre convenance. Ces fonctions sont typiques UNIX et
+nous servent � imiter le comportement DOS de la fonction getche() en ce qui concerne l'entr�e au clavier. En particulier,
+une fois la fonction initterm() appel�e, il n'y a plus d'�cho � l'�cran des touches enfonc�es, et surtout, chaque touche
+enfonc�e est disponible imm�diatement dans le buffer d'entr�e.
 
 \section{Module de gestion des erreurs}
-exceptions.c
+\subsection{exceptions.c}
+Ce module nous sert � "imiter" le comportement C++ des exceptions. Dans un premier temps, nous pouvons faire appel aux fonctions
+pushcontext() et popcontext() pour empiler ou d�piler un contexte d'erreur. Ensuite, un appel � exception() va se traduire
+par un affichage sur stderr de la pile de contexte en cours, et du message d'erreur donn� en param�tre. Un deuxi�me param�tre
+sert � indiquer le niveau de l'exception (erreur fatale ou non). Si une erreur fatale se produit, le programme sort directement.
+Si une erreur non fatale se produit, toutes les piles sont vid�es et la main est rendue � l'interface.
-- 
cgit v1.2.3

