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⟩.