意味
S 式(またはシンボリック式) は、プログラムのデータまたは式をテキスト形式で表すための規則です。 S 式は、 Schemeや DSSSL などのLispファミリの言語で使用されるほか、IMAP やJohn McCarthyの Common Business Communication Language (CBCL) などの通信プロトコルのメタ言語としても使用されます。構文の詳細とサポートされるデータ型は言語によって異なりますが、最も一般的な特性は括弧で囲まれた接頭辞表記 (親しみを込めてケンブリッジポーランド語表記として知られています) の使用です。

Lispとの関係
Lisp では、S 式はコードとデータの両方に使用されます。 S 式は元々、プログラマーが使用する M 式の機械表現 (具体的な構文) として設計されました。しかし、Lisp プログラマはすぐにs 式をデフォルトの表記法として使用しました。
S 式は、数値、 nilとtを含む Lispアトム、(x.y) で示されるペアなどの単純なオブジェクトにすることができます。リストは、 (1 . (2 . (3 . nil)))のようにペアで形成でき、 (1 2 3)と書くこともできます。
したがって、プログラム コードは括弧で囲まれた接頭辞表記を使用して S 式で記述することができます。
Lisp での例:
(defun 階乗(x) (条件 ((等式 x 1) 1) (t (* x (階乗 (1- x)))))
スキームの例:
((階乗 x) を定義 (if (= x 1) 1 (* x (階乗 (- x 1)))))
Lisp 構文の S 式の選択により、この言語ファミリーは、仕様に影響を与えたりコンパイラを変更したりすることなく、言語のセマンティクスを拡張 (特別な演算子、コード アナライザーなどの追加) できる強力なマクロ システムを提供できます。 (または通訳)。これは、M-Expression がほとんど使用されていない理由を説明しています。

XML を使用したレポート
S 式は、XML と同じ問題を、はるかに軽量かつ 40 年も先んじて解決すると言う人もいます。したがって、S 式は、(Lisp のような) コードの形式としてだけでなく、データの形式としても使用できます。ただし、(JSON や YAML などの他の XML 競合製品とは異なり) さまざまな要素にラベルを付けることはできません。 Lisp プログラム:
(ラムダ(x)(*2x))
XML では次のように記述することができます ( http://homepages.inf.ed.ac.uk/wadler/ language.pdfより)。
× * 2 ×

