“doc” (Col. : Science Sup 17x24) — 2007/7/19 — 18:18 — page 83 — #93
i
i
i
i
i
i
i
i
2.6 Du langage noyau au langage pratique
83
Il est intéressant de comparer l’initialisation implicite des variables avec l’instruction
case. Dans les deux cas, il y a des formes et une déclaration implicite de variables.
Le premier cas les utilise pour construire des structures de données et le deuxième cas
les utilise pour décomposer des structures de données.
14
Les expressions
Une expression est un sucre syntaxique pour une séquence d’opérations qui renvoie une
valeur. Elle est différente d’une instruction, qui est aussi une séquence d’opérations
mais qui ne renvoie pas de valeur. Une expression peut être utilisée à l’intérieur
d’une instruction à la place d’une valeur. Par exemple, 11 * 11 est une expression et
X=11 * 11 est une instruction. Une expression est définie par une traduction en langage
noyau. Alors X=11 * 11 est traduite en {Mul 11 11 X}, où Mul est une procédure
à trois arguments qui fait la multiplication.
15
Le tableau 2.4 montre la syntaxe des expressions qui calculent avec des nombres.
Plus loin nous verrons des expressions pour calculer avec d’autres types de données.
Les expressions sont construites hiérarchiquement, en commençant avec des expressions de base (identificateurs et nombres). Il y a deux manières de combiner des
expressions pour en faire d’autres : avec des opérateurs (comme l’addition 1+2+3+4)
ou avec des appels de fonction (comme la racine carrée {Sqrt 5.0}).
expression : := variable | |int | |float
| |unaryOp expression
| |expression evalBinOp expression
| ´(´ expression ´)´
| ´{´ expression { expression } ´}´
| . . .
unaryOp : := ´˜´ | . . .
evalBinOp : := ´+´ | ´-´ | ´ * ´ | ´/´ | div | mod
| ´==´ | ´\=´ | ´<´ | ´=<´ | ´>´ | ´>=´ | . . .
Tableau 2.4 Les expressions pour calculer avec des nombres.
14. L’initialisation implicite des variables peut aussi décomposer des structures de données. Si T est déjà
liée à un enregistrement tree, alors ses quatre champs seront liés à A, B, C et D. Cela fonctionne
parce que l’opération de lien fait de l’unification, qui est symétrique (voir l’explication dans [97]). Nous
ne recommandons pas cette utilisation.
15. Son vrai nom est Number.´ * ´ et elle fait partie du module Number.
© Dunod – La photocopie non autorisée est un délit
Précédent

- 98/370

Suivant