A symbolic expression (also called *s-expression*) is a notation of a list-based tree.
Inner nodes are lists of arbitrary length, while outer nodes are either primitive values (also called *atoms*) or the empty list.

A symbolic expression is either

* a primitive value (*atom*), or
* a list of the form *(E1 E2 … En)*, where *Ei* is itself a symbolic expression, separated by space characters.

An atom is a number, a string, or a symbol.

Symbolic expressions are used in programming languages like LISP or Scheme, where they denote both data structures and the program itself.
This allows a LISP or Scheme program to process LISP or Scheme programs.
That property is also used within Zettelstore.

Symbolic expressions are relatively easy to read, to parse, and to process.

# See also

* [Syntax](00001012930500) of symbolic expressions in the Zettelstore
* [S-expression @ Wikipedia](https://en.wikipedia.org/wiki/S-expression)