“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 33 — #43
i
i
i
i
i
i
i
i
2.1 Définir un langage de programmation pratique
33
statement
: := skip | |expression ´=´ expression | . . .
expression : := variable | |int | . . .
Ces règles donnent des définitions partielles de deux non terminaux, statement et
expression. La première règle dit qu’une instruction peut être le mot clé skip,
deux expressions séparées par le symbole d’égalité ´=´ ou autre chose. La deuxième
règle dit qu’une expression peut être une variable, un entier ou autre chose. Un choix
entre différentes possibilités dans une règle de grammaire est désigné par une barre
verticale |. Pour éviter la confusion avec la syntaxe de la notation elle-même, nous
mettons parfois entre guillemets simples un symbole qui apparaît tel quel dans le texte.
Par exemple, le symbole d’égalité devient ´=´. On ne met pas les mots clés entre
guillemets parce qu’il n’y a pas de confusion possible pour eux.
Voici un deuxième exemple pour présenter le reste de la notation :
statement
: := if expression then statement
{ elseif expression then statement }
[ else statement ] end | . . .
expression : := ´[´ { expression }+ ´]´ | . . .
label
: := unit | true | false | |variable | |atom
La première règle définit l’instruction if. Il y a une séquence de zéro ou plusieurs
clauses elseif. Tout nombre d’occurrences est permis y compris zéro, ce qui est noté
par les accolades { . . . }. Cette séquence est suivie par une clause else facultative,
c’est-à-dire qu’elle peut apparaître zéro ou une fois, ce qui est désigné par les crochets
[ . . . ]. La deuxième règle définit la syntaxe des listes explicites. Elles doivent avoir
au moins un élément, par exemple [5 6 7] est valable mais [ ] ne l’est pas (il y
a un espace entre le [ et le ]). Une séquence avec au moins un élément est désignée
par { . . . }+. La troisième règle définit la syntaxe des étiquettes des enregistrements.
Elle est complète parce qu’il n’y a pas les trois points « . . . ». Il y a cinq possibilités
et aucune autre ne sera jamais donnée.
2.1.2 La sémantique d’un langage
La sémantique d’un langage définit ce que fait un programme lors de son exécution.
Idéalement, la sémantique devrait être définie dans une structure mathématique simple
permettant de déduire les propriétés souhaitées du programme (comme l’exactitude, le
temps d’exécution et l’utilisation de mémoire) sans introduire des détails compliqués.
La technique que nous utilisons, que nous appelons l’approche du langage noyau,
convient tout à fait.
Les langages de programmation modernes ont évolué pendant presque six décennies
pour satisfaire aux exigences de la construction de solutions programmées pour les
© Dunod – La photocopie non autorisée est un délit
Précédent

- 48/370

Suivant