7.1 Formal syntax

This section provides a formal syntax for Scheme written in an extended BNF (Backus-Naur Form).

All spaces in the grammar are for legibility. Case is not significant except in the definitions of letter, character name and mnemonic escape; for example, ‘#x1A’ and ‘#X1a’ are equivalent, but ‘foo’ and ‘Foo’ and ‘#\space’ and ‘#\Space’ are distinct. Empty stands for the empty string.

The following extensions to BNF are used to make the description more concise: ‘thing*’ means zero or more occurrences of thing; and ‘thing+’ means at least one thing.