“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 32 — #42
i
i
i
i
i
i
i
i
32
2
• La programmation déclarative
élevée que +, alors l’arbre syntaxique (2*3)+4 sera choisi au lieu de l’alternative
2*(3+4). Si * est plus profond dans l’arbre que +, on dit que * est un opérateur
plus étroit que +.
– L’associativité est une condition sur une expression avec le même opérateur,
comme 2-3-4. Dans ce cas, la précédence ne suffit pas à lever l’ambiguïté parce
que tous les opérateurs ont la même précédence. Nous devons choisir entre les
arbres (2-3)-4 et 2-(3-4). L’associativité détermine si l’opérateur de gauche
ou de droite est plus étroit. Si l’associativité de - est gauche, l’arbre (2-3)-4
sera choisi. Si l’associativité de - est droite, l’autre arbre 2-(3-4) sera choisi.
La précédence et l’associativité ensemble suffisent pour lever l’ambiguïté de toutes les
expressions définies avec des opérateurs. L’annexe B donne la précédence et l’associativité de tous les opérateurs que nous utilisons.
*
+
3
4
+
*
2
3
2
4
Figure 2.3 L’ambiguïté dans une grammaire hors-contexte.
La notation de syntaxe
Dans ce chapitre et le reste du livre, chaque nouvelle construction du langage sera
introduite avec un petit diagramme syntaxique qui montre comment elle s’insère dans
le langage tout entier. Le diagramme syntaxique montre des règles de grammaire pour
une grammaire hors-contexte simple constituée de jetons. La notation est délibérément
conçue pour satisfaire deux principes de base :
– Une règle de grammaire est toujours vraie. Aucune information introduite plus
loin n’invalidera une règle de grammaire. En d’autres termes, nous ne montrons
jamais une règle erronée.
– Le fait qu’une règle de grammaire soit une définition complète ou une définition
partielle d’un symbole non terminal est toujours clair. Une définition partielle
termine toujours par trois points « . . . ».
Tous les diagrammes de syntaxe sont rassemblés dans l’annexe B. Cette annexe définit
aussi la syntaxe lexicale, c’est-à-dire la syntaxe des jetons en termes de caractères.
Voici un exemple de diagramme syntaxique avec deux règles de grammaire pour
illustrer notre notation :
i
i
i
i
i
i
i
i
32
2
• La programmation déclarative
élevée que +, alors l’arbre syntaxique (2*3)+4 sera choisi au lieu de l’alternative
2*(3+4). Si * est plus profond dans l’arbre que +, on dit que * est un opérateur
plus étroit que +.
– L’associativité est une condition sur une expression avec le même opérateur,
comme 2-3-4. Dans ce cas, la précédence ne suffit pas à lever l’ambiguïté parce
que tous les opérateurs ont la même précédence. Nous devons choisir entre les
arbres (2-3)-4 et 2-(3-4). L’associativité détermine si l’opérateur de gauche
ou de droite est plus étroit. Si l’associativité de - est gauche, l’arbre (2-3)-4
sera choisi. Si l’associativité de - est droite, l’autre arbre 2-(3-4) sera choisi.
La précédence et l’associativité ensemble suffisent pour lever l’ambiguïté de toutes les
expressions définies avec des opérateurs. L’annexe B donne la précédence et l’associativité de tous les opérateurs que nous utilisons.
*
+
3
4
+
*
2
3
2
4
Figure 2.3 L’ambiguïté dans une grammaire hors-contexte.
La notation de syntaxe
Dans ce chapitre et le reste du livre, chaque nouvelle construction du langage sera
introduite avec un petit diagramme syntaxique qui montre comment elle s’insère dans
le langage tout entier. Le diagramme syntaxique montre des règles de grammaire pour
une grammaire hors-contexte simple constituée de jetons. La notation est délibérément
conçue pour satisfaire deux principes de base :
– Une règle de grammaire est toujours vraie. Aucune information introduite plus
loin n’invalidera une règle de grammaire. En d’autres termes, nous ne montrons
jamais une règle erronée.
– Le fait qu’une règle de grammaire soit une définition complète ou une définition
partielle d’un symbole non terminal est toujours clair. Une définition partielle
termine toujours par trois points « . . . ».
Tous les diagrammes de syntaxe sont rassemblés dans l’annexe B. Cette annexe définit
aussi la syntaxe lexicale, c’est-à-dire la syntaxe des jetons en termes de caractères.
Voici un exemple de diagramme syntaxique avec deux règles de grammaire pour
illustrer notre notation :
