Les expressions arithmétiques



next up previous contents index
Next: Grammaires sous forme Up: Exemples de Grammaires Previous: Les expressions arithmétiques

Les expressions arithmétiques

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.



next up previous contents index
Next: Grammaires sous forme Up: Exemples de Grammaires Previous: Les expressions arithmétiques