Datum syntax

The datum syntax describes the syntax of syntactic data in terms of a sequence of lexemes, as defined in the lexical syntax.

The following grammar describes the syntax of syntactic data in terms of various kinds of lexemes defined in the grammar in section “Lexical Syntax”:

datum ::= defining-datum
         | nondefining-datum
         | defined-datum

defining-datum ::= #indexnum=nondefining-datum
defined-datum ::= #indexnum#
nondefining-datum ::= lexeme-datum
         | compound-datum
indexnum ::= digit-10+

lexeme-datum ::= boolean | number
         | character | string | symbol
symbol ::= identifier
compound-datum ::= list | vector | uniform-vector | xml-literal
list ::= (datum*)
         | (datum. datum)
         | abbreviation
abbreviation ::= abbrev-prefix datum
abbrev-prefix ::= ' | ` | , | ,@
         | #' | #`
vector ::= #(datum*)
uniform-vector ::= TODO

Abbreviations

The following are abbreviations:

'datum

for (quote datum),

`datum

for (quasiquote datum),

,datum

for (unquote datum),

,@datum

for (unquote-splicing datum),

#'datum

for (syntax datum), and

#`datum

for (quasisyntax datum).