Grammaires sous forme BNF



next up previous contents index
Next: Arbres de dérivation Up: Exemples de Grammaires Previous: Les expressions arithmétiques

Grammaires sous forme BNF

La grammaire d'un langage de programmation est très souvent présentée sous la forme dite grammaire BNF qui n'est autre qu'une version très légèrement différente de notre précédente notation.

Dans la convention d'écriture adoptée pour la forme BNF, les éléments de sont des suites de lettres et symboles en italique par exemple multiplicative-expression, unary-expression. Les règles ayant le même élément dans leur partie gauche sont regroupées et cet élément n'est pas répété pour chacune d'entre elles. Le symbole est remplacé par : suivi d'un passage à la ligne. Quelques conventions particulières permettent de raccourcir l'écriture, ainsi one of permet d'écrire plusieurs règles sur la même ligne. Enfin, les éléments de l'alphabet terminal sont de plusieurs sortes. Il y a ainsi des mots réservés, une trentaine dans chacun des deux exemples, Pascal et C comme begin, end, if, then, else, label, case, record, pour Pascal, struct, int, if, else, break, ...pour le langage C. Il y a aussi dans un certain nombre d'opérateurs et de séparateurs souvent communs à Pascal et C comme + * / - ; , ( ) [ ] = < > . D'autres sont spécifiques à C, il s'agit de { } # & % ! .

Dans les grammaires données en annexe, qui ne sont pas tout à fait complètes (manquent les variables et les nombres par exemple), on compte dans la grammaire de Pascal 69 lettres pour l'alphabet auxiliaire et 180 règles. Dans la grammaire du langage C, il y a 62 lettres auxiliaires et 165 règles. Du fait de leur taille importante, il est hors de question de traiter à titre d'exemples ces langages dans un cours d'analyse syntaxique. On se limitera ici aux exemples donnés plus haut comportant un nombre de règles limité mais dans lequel figurent déjà toutes les difficultés que l'on peut trouver par ailleurs.

On peut noter que l'on trouve la grammaire des expressions arithmétiques sous forme BNF dans les exemples concernant les langages Pascal et C des annexes. On remarque en effet à l'intérieur de la forme BNF de Pascal:

Ceci correspond dans notre notation à

Dans la grammaire du langage C, on retrouve aussi des règles qui rappellent singulièrement les précédentes:



next up previous contents index
Next: Arbres de dérivation Up: Exemples de Grammaires Previous: Les expressions arithmétiques