suivant: Forme BNF de la
monter: Grammaire
précédent: Grammaire
  Table des matières
Une grammaire nous était proposée dans le sujet du projet, mais nous l'avons assez largement
modifiée, et ce pour plusieures raisons.
Initialement, une session d'utilisation était découpée en deux phases distinctes : une première
pour traiter un fichier contenant des règles, et la seconde pour traiter des questions entrées
directement au clavier. De plus, deux analyseurs syntaxiques étaient proposés, un pour chaque
phase. Le premier était généré à l'aide de Yacc, et le second était directement écrit en langage C.
Cette dichotomie ne nous paraissait pas satisfaisante, d'autant plus que ces deux analyseurs avaient
de forts points communs. D'autre part, nous voulions pouvoir alterner librement les définitions de
règles et les questions. Nous avons donc tout regroupé en un seul analyseur syntaxique répondant à
ces nouvelles contraintes. Il était dès lors nécessaire d'adapter la grammaire. Cependant, du fait du
fonctionnement de Yacc, il fallait alors, dans un premier temps, choisir entre la lecture d'un fichier
et l'utilisation du clavier. Du fait des spécificités d'Unix, le choix était tout trouvé : l'analyseur
travaille à partir de son entrée standard, et c'est une couche supérieure qui se charge d'envoyer vers
cette entrée le contenu d'un fichier ou ce qui est saisit au clavier. Pour plus de détails à ce sujet, on
se reportera au troisième chapitre.
Nous avons en outre supprimé le symbole non terminal "constante". En effet, que ce soit pour la
compilation ou pour l'interprétation, une constante ne se distinguait en rien d'un foncteur n'ayant
pas d'argument. Cette constatation a donc été prise en compte dans notre grammaire où seul le
symbole non terminal "foncteur" subsiste. Il est suivi d'une suite de termes entre parenthèses
(foncteur "classique"), ou non (constante).
suivant: Forme BNF de la
monter: Grammaire
précédent: Grammaire
  Table des matières
Alexandre DAGAN
2000-07-07