Scheme, like most dialects of Lisp, employs a fully parenthesized prefix notation for programs and (other) data; the grammar of Scheme generates a sublanguage of the language used for data. An important consequence of this simple, uniform representation is the susceptibility of Scheme programs and data to uniform treatment by other Scheme programs. For example, the ‘eval’ procedure evaluates a Scheme program expressed as data.
The ‘read’ procedure performs syntactic as well as lexical decomposition of the data it reads. The ‘read’ procedure parses its input as data (section see External representation), not as program.
The formal syntax of Scheme is described in section Formal syntax.