S-expression

S-expression

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 DSSSL, 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).

Rapports avec Lisp

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 M-expressions 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)
    (cond 
       ((eq x 0)  1)
       (t (* 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 ...) sans toucher à sa spécification ou modifier le compilateur (ou interpréteur). Cela explique que les M-Expressions aient peu été utilisées.

Rapports avec XML

Les S-expressions résolvent le même problème qu'XML avec, disent certains[Qui ?], 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. Mais elles ne permettent pas d'étiqueter les différents éléments (contrairement à d'autres concurrents de XML comme JSON ou YAML). Le programme Lisp :

 (lambda (x) (* 2 x))

pourrait s'écrire en XML comme suit (d'après http://homepages.inf.ed.ac.uk/wadler/language.pdf):

 <?xml version="1.0"?>
 <lambda-term>
     <variables-list>
       <var>x</var>
     </variables-list>
    <expr>
        <application>
            <expr><const>*</const></expr>
            <arguments-list>
                <expr><const>2</const></expr>
                <expr><var>x</var></expr>
            </arguments-list>
        </application>
    </expr>
 </lambda-term>

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article S-expression de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать реферат

Regardez d'autres dictionnaires:

  • expression — [ ɛkspresjɔ̃ ] n. f. • 1547; méd. 1314 ; lat. expressio, de exprimere → exprimer I ♦ Action ou manière d exprimer, de s exprimer. L expression d un sentiment, d une sensation, d un événement vécu. ⇒ extériorisation. Le langage a deux fonctions… …   Encyclopédie Universelle

  • Expression Studio — Desarrollador Microsoft Sitio oficial Español Información general Última versión estable Expres …   Wikipedia Español

  • Expression Blend — Desarrollador Microsoft Sitio Oficial Español Información general Última versión estable …   Wikipedia Español

  • Expression Media — Desarrollador Phase One Sitio Oficial Inglés Información general Última versión estable Expression Media 2 Service Pack 1 …   Wikipedia Español

  • Expression Web — Desarrollador Microsoft Microsoft Expression Web Información general Última versión estable …   Wikipedia Español

  • Expression Rationnelle — Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de chaînes de caractères… …   Wikipédia en Français

  • Expression régulière — Expression rationnelle Pour les articles homonymes, voir régulier et rationnel. Une expression rationnelle ou expression régulière[1] est en informatique une chaîne de caractères que l’on appelle parfois un motif et qui décrit un ensemble de… …   Wikipédia en Français

  • Expression Design — Desarrollador Microsoft Sitio Oficial Español Información general Última versión estable …   Wikipedia Español

  • Expression Encoder — Desarrollador Microsoft Sitio Oficial Español Información general Última versión estable …   Wikipedia Español

  • Expression — Ex*pres sion ([e^]ks*pr[e^]sh [u^]n), n. [L. expressio: cf. F. expression.] 1. The act of expressing; the act of forcing out by pressure; as, the expression of juices or oils; also, of extorting or eliciting; as, a forcible expression of truth.… …   The Collaborative International Dictionary of English

  • EXPRESSION (philosophie) — EXPRESSION, philosophie Ensemble de données perceptives offertes par un être à un moment donné du temps et qui fonctionnent comme des signes manifestant, révélant ou trahissant les émotions, les sentiments et les intentions de cet être. Les… …   Encyclopédie Universelle

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”