\input MIAS

\TP 5
\vfill
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
On vous propose de r�aliser, � l'aide de LEX et YACC, un analyseur syntaxique utilisant une table de symboles : les TP pr�c�dents
vous ont pr�par�s � ce travail.
\pars
Voici le sch�ma d'une grammaire engendrant des 
phrases\footnote{${}^*$}{Comme d'habitude, vous �viterez toute lettre accentu�e, \dots} qui expriment des liens de parent� ou posent
des questions � leur sujet.\parm
{\parindent 1cm \bf
Phrase $\donne$ Affirmation $\mid$ Interrogation\par
Affirmation $\donne$ Sujet Verbe Complement\par
Interrogation $\donne$ {\tt qui est} Nom {\tt ?}\par
Sujet $\donne$ Nom\par
\item{} Verbe $\donne$ {\tt est marie a $\mid$ est mariee a $\mid$ est le frere de \par
\itemitem{} $\mid$ est la soeur de $\mid$ est le pere de $\mid$ est la mere de $\mid$ \dots}\par
Complement $\donne$ Nom\par
Nom $\donne$ {\tt IdNom}\par
}
\parm
o� {\tt IdNom} est l'unit� lexicale des cha�nes de caract�res form�es d'une majuscule suivies de minuscules.
\parm
\exo
Ecrivez des programmes LEX et YACC produisant un analyseur syntaxique de phrases, capable de r�aliser les points suivants :
\puce L'analyse d'une phrase affirmative doit alimenter une table, d�finie � cet effet, des renseignements fournis par ladite phrase.
\puce L'analyse d'une phrase interrogative doit afficher tous les renseignements connus sur la personne en question.
\puce Les phrases � analyser sont entr�es au clavier et se terminent par un passage � la ligne : il faut �videmment pouvoir entrer
plusieurs phrases de suite et pr�voir une sortie honorable (par exemple, une phrase ``vide''). 
\puce Les erreurs doivent �tre signal�es par des messages pertinents !
\exo
Enrichissez la grammaire, ainsi que vos programmes LEX et YACC, de telle fa�on 
qu'il soit possible de d�finir le genre d'un pr�nom (�vitez les pr�noms ambigus !)
et d'en tenir compte pour rendre les phrases correctes de ce point de vue.
\exot{ Pour les ``litt�raires'' et les rapides.}
Etendez la grammaire au cas de phrases un peu plus complexes.




\bye



