Any language can be expressed in S-expressions. A translation of the syntax tree to sexprs is often used in parser debugging. And Lisp doesn’t have to be expressed in S-expressions (see Dylan, or M-expressions, a syntax for Lisp that predates S-expressions).
Lisp traditionally has these features, but they’re separate features:
* There is a rich syntax for literal data structures
* Code is directly exposed as data structures so it can be manipulated with code (macros)
* Code is written as literal data structures so it has no separate syntax
Lisp traditionally has these features, but they’re separate features:
* There is a rich syntax for literal data structures
* Code is directly exposed as data structures so it can be manipulated with code (macros)
* Code is written as literal data structures so it has no separate syntax