C'est un des langages que l'on choisit souvent comme exemple en
analyse syntaxique, car il contient la plupart des difficultés
d'analyse que l'on rencontre dans les langages de programmation. Les
mots engendrés par la grammaire suivante sont toutes les expressions
arithmétiques que l'on peut écrire avec les opérateurs + et
on les appelle parfois expressions arithmétiques infixes. On les
interprète en disant que
est prioritaire vis à vis de +.
,
,
l'axiome est
,
les règles de grammaire sont données par:
Un mot engendré par cette grammaire est par exemple:
Il représente l'expression
dans laquelle tous les nombres ont été remplacés par le
symbole .
Les lettres de l'alphabet auxiliaire ont été choisies pour
rappeler la signification sémantique des mots qu'elles
engendrent. Ainsi et
représentent respectivement les
expressions, termes et facteurs. Dans cette terminologie, on constate
que toute expression est somme de termes et que tout terme est produit
de facteurs. Chaque facteur est ou bien réduit à la variable
ou
bien formé d'une expression entourée de parenthèses. Ceci traduit
les dérivations suivantes de la grammaire.
La convention usuelle de priorité de l'opération sur
l'opération + explique que l'on commence par engendrer des sommes
de termes avant de décomposer les termes en produits de facteurs, en
règle générale pour des opérateurs de priorités quelconques on
commence par engendrer les symboles d'opérations ayant la plus faible
priorité pour terminer par ceux correspondant aux plus fortes.
On peut généraliser la grammaire pour faire intervenir beaucoup plus d'opérateurs. Il suffit d'introduire de nouvelles règles comme par exemple
si l'on souhaite introduire des soustractions et des divisions. Comme
ces deux opérateurs ont la même priorité que l'addition et la
multiplication respectivement, il n'a pas été nécessaire
d'introduire de nouveaux éléments dans . Il faudrait faire
intervenir de nouvelles variables auxiliaires si l'on introduit de
nouvelles priorités.
La grammaire donnée ci-dessous engendre aussi le langage des expressions infixes. On verra que cette dernière permet de faire plus facilement l'analyse syntaxique. Elle n'est pas utilisée en général en raison de questions liées à la non-associativité de certains opérateurs comme par exemple la soustraction et la division. Ceci pose des problèmes lorsqu'on désire généraliser la grammaire et utiliser le résultat de l'analyse syntaxique pour effectuer la génération d'instructions machine.