Résumé
Une S-expression (ou expression symbolique) est une convention pour la représentation de données ou d'expressions d'un programme sous forme textuelle. Les S-expressions sont utilisées dans la famille de langages Lisp, incluant Scheme et , ainsi que comme métalangage dans des protocoles de communication tels IMAP ou le langage CBCL (Common Business Communication Language) de John McCarthy. Les détails de la syntaxe et les types de données supportés diffèrent en fonction du langage, mais la propriété la plus commune est l'utilisation de la notation préfixée parenthésée (affectueusement connue sous le nom de Notation polonaise de Cambridge). Dans Lisp, les S-expressions sont utilisées à la fois pour le code et les données. Les S-expressions ont été conçues à l'origine comme des représentations machine de utilisées par les programmeurs (la syntaxe concrète) ; mais les programmeurs Lisp ont tout de suite utilisé les S-expressions comme notation par défaut. Les S-expressions peuvent être des objets simples, comme des nombres, des atomes Lisp y compris nil et t, des paires notées (x . y). Des listes peuvent être formées avec des paires, par exemple (1 . (2 . (3 . nil))), qu'on peut écrire également (1 2 3). Le code de programmes peut donc être écrit en s-expressions, avec la notation préfixée parenthésée. Exemple en Lisp : (defun factorial (x) (if (zerop x) 1 (* x (factorial (1- x))))) Exemple en Scheme: (define (factorial x) (if (= x 0) 1 (* x (factorial (- x 1))))) Le choix des S-expressions pour la syntaxe de Lisp permet à cette famille de langages de proposer des systèmes de macros puissants permettant d'étendre la sémantique du langage (ajout d'opérateurs spéciaux, analyseurs de code, etc.) sans toucher à sa spécification ou modifier le compilateur (ou interpréteur). Cela explique que les M-Expressions aient peu été utilisées. Les S-expressions résolvent le même problème qu'XML avec, disent certains, beaucoup plus de légèreté et quarante ans d'avance. Les S-expressions peuvent donc servir de format pour du code (comme en Lisp) mais aussi pour des données.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (10)
CS-320: Computer language processing
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
COM-300: Stochastic models in communication
L'objectif de ce cours est la maitrise des outils des processus stochastiques utiles pour un ingénieur travaillant dans les domaines des systèmes de communication, de la science des données et de l'i
CS-119(k): Information, Computation, Communication
D'une part, le cours aborde: (1) la notion d'algorithme et de représentation de l'information, (2) l'échantillonnage d'un signal et la compression de données et (3) des aspects liés aux systèmes: ordi
Afficher plus
Séances de cours associées (45)
Bloc tiré par un ressort
Explore la dynamique d'un bloc tiré par un ressort dans diverses conditions.
Processus stochastiques en continu : Système linéaire
Couvre l'analyse des processus stochastiques continus dans le contexte des systèmes linéaires.
C++ Bases de programmation
Couvre les bases de la programmation C++, y compris les types de données, l'organisation de la mémoire et l'évaluation de l'expression.
Afficher plus
Publications associées (32)
Personnes associées (1)
Concepts associés (16)
Booléen
vignette|George Boole (1864-1865) L'homme ayant mis en place la première structure algébrique utilisée en logique mathématique, en informatique et en électronique. En programmation informatique, un booléen est un type de variable à deux états (généralement notés vrai et faux), destiné à représenter les valeurs de vérité de la logique et l'algèbre booléenne. Il est nommé ainsi d'après George Boole, fondateur dans le milieu du de l'algèbre portant son nom. Le type de données booléen est principalement associé à des états conditionnels.
Liste (informatique)
En informatique, une liste est une structure de données permettant de regrouper des données de manière à pouvoir y accéder librement (contrairement aux et aux piles, dont l'accès se fait respectivement en mode FIFO et LIFO). La liste est à la base de structures de données plus complexes comme la pile, la , les arbres, etc. L'importance de la liste comme structure de données est telle qu'elle est à la base du langage de programmation Lisp (de l'anglais list processing).
JavaScript Object Notation
JavaScript Object Notation (JSON) est un format de données textuel dérivé de la notation des objets du langage JavaScript. Il concurrence XML pour la représentation et la transmission d’information structurée. Créé par Douglas Crockford entre 2002 et 2005, la première norme du JSON est ECMA-404 d'Ecma International qui a été publiée en octobre 2003. Il est également décrit en 2017 par la RFC 8259 de l’Internet Engineering Task Force qui se veut compatible avec Ecma-404 et ECMA-404.
Afficher plus