AutoLISP : le guide complet — Chapitre 3 / 16

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 :

  1. (* 3 4)12
  2. (+ 2 12)14

Un exemple plus complexe :

(* (+ 1 2) (- 10 5))
  1. (+ 1 2)3
  2. (- 10 5)5
  3. (* 3 5)15

En notation mathématique classique, cela équivaut à (1 + 2) × (10 - 5).

Arbre d'évaluation d'une expression imbriquée

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 !


Coup de pouce Besoin d'un développement AutoCAD (AutoLISP, ObjectARX, .NET, VBA) ? Contactez-moi pour un devis gratuit.