La syntaxe AutoLISP
Si vous avez déjà programmé dans un langage comme Python, JavaScript ou C, la syntaxe de LISP peut vous surprendre au premier abord. Mais ne vous inquiétez pas : elle est en réalité plus simple et plus régulière que celle de la plupart des langages. Une fois que vous aurez compris les quelques règles de base, tout deviendra limpide.
La notation préfixée
Dans la majorité des langages de programmation, on écrit les opérations en notation infixée : l'opérateur se place entre ses opérandes.
2 + 3
En AutoLISP, on utilise la notation préfixée (prefix notation) : l'opérateur (ou la fonction) vient en premier, suivi de ses arguments, le tout entouré de parenthèses.
(+ 2 3)
Cette règle est universelle en AutoLISP. Qu'il s'agisse d'une addition, d'un appel de fonction ou d'une structure de contrôle, la forme est toujours la même :
(fonction argument1 argument2 ...)
Quelques exemples :
(+ 2 3) ; Addition : 2 + 3 = 5
(- 10 4) ; Soustraction : 10 - 4 = 6
(max 5 8 3) ; Maximum : 8
(strlen "Bonjour") ; Longueur de la chaîne : 7
(alert "Test") ; Affiche une boîte de dialogue
Le rôle des parenthèses
Les parenthèses sont le cœur de LISP. Chaque paire de parenthèses ( et ) délimite une expression complète. Une expression AutoLISP est toujours structurée ainsi :
( fonction argument1 argument2 ... argumentN )
↑ ↑ ↑
premier arguments de la fonction
élément
Le premier élément après la parenthèse ouvrante est toujours le nom de la fonction à appeler. Tout le reste constitue les arguments passés à cette fonction.
Pas de parenthèses superflues
En AutoLISP, chaque parenthèse a un sens. Contrairement à des langages où on peut ajouter des parenthèses pour la lisibilité (comme (2 + 3) en mathématiques), en LISP, écrire (5) serait une erreur : AutoLISP essaierait d'appeler 5 comme une fonction !
(5) ; ERREUR : 5 n'est pas une fonction
5 ; Correct : retourne simplement 5
Les expressions imbriquées
La vraie puissance de cette syntaxe apparaît quand on imbrique les expressions. Chaque expression retournant une valeur, on peut l'utiliser comme argument d'une autre expression :
(+ 2 (* 3 4))
L'évaluation se fait de l'intérieur vers l'extérieur :
(* 3 4)→12(+ 2 12)→14
Un exemple plus complexe :
(* (+ 1 2) (- 10 5))
(+ 1 2)→3(- 10 5)→5(* 3 5)→15
En notation mathématique classique, cela équivaut à (1 + 2) × (10 - 5).

Les espaces et les retours à la ligne
AutoLISP est très souple avec les espaces. Vous pouvez écrire une expression sur une seule ligne :
(+ 2 (* 3 4))
Ou sur plusieurs lignes pour plus de lisibilité :
(+
2
(* 3 4)
)
Les deux formes sont strictement équivalentes. Les retours à la ligne et les espaces multiples sont traités comme un simple séparateur. Utilisez-les pour rendre votre code plus lisible quand les expressions deviennent complexes.
Les commentaires
En AutoLISP, les commentaires commencent par un point-virgule ;. Tout ce qui suit le point-virgule jusqu'à la fin de la ligne est ignoré par l'interpréteur :
; Ceci est un commentaire sur une ligne entière
(+ 2 3) ; Ceci est un commentaire en fin de ligne
Pour les commentaires sur plusieurs lignes, utilisez ; | et | ; :
;| Ceci est un commentaire
sur plusieurs lignes |;
Les types de données de base
Avant d'aller plus loin, voici les types de données que vous rencontrerez le plus souvent en AutoLISP :
Les entiers
Ce sont les nombres sans virgule :
42
-7
0
Les réels (nombres à virgule flottante)
Les nombres avec un point décimal (jamais de virgule, même en français !) :
3.14
-0.5
2.0
Les chaînes de caractères
Du texte entouré de guillemets doubles :
"Bonjour"
"AutoLISP est génial"
"Ligne 1\nLigne 2" ; \n insère un retour à la ligne
nil
La valeur « rien », « faux » ou « pas de résultat ». C'est l'équivalent de null, None ou false dans d'autres langages :
nil
T
La valeur « vrai » (true) :
T
En AutoLISP, toute valeur qui n'est pas nil est considérée comme vraie. T est simplement la façon explicite de dire « vrai ».
Sensibilité à la casse
AutoLISP n'est pas sensible à la casse (case-insensitive). Les expressions suivantes sont toutes équivalentes :
(ALERT "Bonjour")
(Alert "Bonjour")
(alert "Bonjour")
Par convention, on écrit les noms de fonctions en minuscules. Mais les chaînes de caractères, elles, conservent leur casse : "BONJOUR" et "bonjour" sont deux chaînes différentes.
Résumé de la syntaxe
| Règle | Exemple |
|---|---|
| Notation préfixée | (+ 2 3) au lieu de 2 + 3 |
| Parenthèses = expression | (fonction args...) |
| Imbrication | (+ 2 (* 3 4)) |
| Commentaire ligne | ; commentaire |
| Commentaire bloc | ; | commentaire |; |
| Entier | 42 |
| Réel | 3.14 |
| Chaîne | "texte" |
| Vrai / Faux | T / nil |
Maintenant que vous maîtrisez les bases de la syntaxe, passons aux choses sérieuses : les opérations mathématiques !
Besoin d'un développement AutoCAD (AutoLISP, ObjectARX, .NET, VBA) ? Contactez-moi pour un devis gratuit.