8.6.1. Syntax

[120] expression = primitive-expression | derived-expression

[121] primitive-expression = variable-reference | literal | procedure-call | conditional

[122] variable-reference = variable

[123] variable = identifier

[124] literal = quotation | self-evaluating

[125] quotation = 'datum | (quote datum)

[126] datum = simple-datum | list

[127] simple-datum = boolean | number | character | string | symbol | keyword | glyph-identifier

[128] list = (datum*) | 'datum

[129] self-evaluating = boolean | number | character | string | keyword | glyph-identifier

[130] procedure-call = (operator operand*)

[131] operator = expression

[132] operand = expression

[133] conditional = (if test consequent alternate)

[134] test = expression

[135] consequent = expression

[136] alternate = expression

[137] derived-expression = cond-expression | case-expression | and-expression | or-expression

[138] cond-expression = (cond cond-clause+) | (cond cond-clause* (else expression))

[139] cond-clause = (test expression)

[140] case-expression = (case key case-clause+) | (case key case-clause* (else expression))

[141] key = expression

[142] case-clause = ((datum*) expression)

[143] and-expression = (and test*)

[144] or-expression = (or test*)

[145] definition = (define variable expression)