\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