Lisp at 2.4. La syntaxe du Lisp est compliquée ("et toutes ces parenthèses!")

Home
Up
Previous
Next

2.4.    La syntaxe du Lisp est compliquée ("et toutes ces parenthèses!")

La syntaxe du Lisp est extrêmement simple (*)  et il y a très peu de manières différentes de construire des expressions composées. D'où, malgré une fréquente répulsion initiale pour la notation polonaise (ou notation préfixée), un apprentissage aisé et naturellement progressif, en fonction des besoins. Une expression Lisp syntaxiquement correcte s'écrit sous la forme d'une liste représentant l'application d'une fonction (ou opérateur) à des arguments (voir l'annexe 1 pour plus de détails) :

(<fonction> <argument1> <argument2> ...)

Exemples :

(+ 1 2)
=> 3

(* 3 2)
=> 6

(+ 1 2 3 (* 3 2))
=> 12

(LIST 1 2 3 4)
=> (1 2 3 4)

(FIRST (LIST 1 2 3 4))
=> 1

C'est à peu près tout ce qu'il y a à retenir de la syntaxe du Lisp. L'essentiel de la ponctuation Lisp consiste en les parenthèses gauche et droite. De fait, le tour complet des propriétés formelles du langage se fait en une heure, comme pour les règles du jeu d'échecs. Pour l'apprenti programmeur Lisp, les détails syntaxiques du langage passent très rapidement à l'arrière-plan.

La lecture de listes imbriquées dans de nombreuses parenthèses est simplifiée par quelques règles d'indentation appropriées (comme l'alignement vertical des objets d'un même niveau logique); par exemple :

                     (+ 120
                        (* 2 3 4)
                        (* 55
                           (+ 12 56)
                           (* 23 44))
                        (+ 5 23))

Les éditeurs Lisp indentent automatiquement les expressions Lisp, comptent les parenthèses et détectent les parenthèses manquantes ou en excès. Si le curseur est positionné juste derrière une parenthèse droite, l'éditeur met en évidence la parenthèse gauche correspondante (par exemple en la faisant clignoter). De plus, un éditeur Lisp fournit de nombreuses commandes de déplacement à travers ces listes, comme la commande de déplacement du début à la fin d'une liste et la commande inverse.

A remarquer aussi, l'avantage de la notation préfixée par rapport à la notation habituelle infixée : l'opérateur + peut prendre plus de deux arguments. D'autre part, du fait que chaque application d'un opérateur est entre parenthèses, il n'est pas besoin de règles compliquées de priorité des opérateurs; ainsi, en Fortran, que vaut 2*7-5+2 (2 multiplie-t-il 7-5+2 ou seulement 7, etc.)?

————————

(*)    Il suffit de comparer les délimiteurs syntaxiques existant en Lisp et dans d'autres langages pour comprendre un des aspects de la simplicité de la syntaxe du Lisp :

             Lisp    (    )
             C         ,  .  (    )     ;    [    ]    {     }    ->

Cette simplicité est une des raisons expliquant le succès du Lisp comme langage d'extension dans des progiciels comme AutoCAD (CAO), Interleaf (PAO) et EMACS (éditeur) : il est très facile de construire un analyseur syntaxique du Lisp.

Home    Previous    Up    Next
contact
site map
Last update : 26/11/2001