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)