
\input mias

\TP 5
\vfill
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
On vous propose de r\'ealiser, \`a l'aide de LEX et YACC, un analyseur syntaxique utilisant une table de symboles : les TP pr\'ec\'edents
vous ont pr\'epar\'es \`a ce travail.
\pars
Voici le sch\'ema d'une grammaire engendrant des 
phrases\footnote{${}^*$}{Comme d'habitude, vous \'eviterez toute lettre accentu\'ee, \dots} qui expriment des liens de parent\'e ou posent
des questions \`a 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\`u {\tt IdNom} est l'unit\'e lexicale des cha\^\i nes de caract\`eres form\'ees d'une majuscule suivies de minuscules.
\parm
\exo
Ecrivez des programmes LEX et YACC produisant un analyseur syntaxique de phrases, capable de r\'ealiser les points suivants :
\puce L'analyse d'une phrase affirmative doit alimenter une table, d\'efinie \`a 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 \`a analyser sont entr\'ees au clavier et se terminent par un passage \`a la ligne : il faut \'evidemment pouvoir entrer
plusieurs phrases de suite et pr\'evoir une sortie honorable (par exemple, une phrase ``vide''). 
\puce Les erreurs doivent \^etre signal\'ees par des messages pertinents !
\exo
Enrichissez la grammaire, ainsi que vos programmes LEX et YACC, de telle fa\c con 
qu'il soit possible de d\'efinir le genre d'un pr\'enom (\'evitez les pr\'enoms ambigus !)
et d'en tenir compte pour rendre les phrases correctes de ce point de vue.
\exot{ Pour les ``litt\'eraires'' et les rapides.}
Etendez la grammaire au cas de phrases un peu plus complexes.




\bye




