The following grammar for quasiquote expressions is not context-free. It is presented as a recipe for generating an infinite number of production rules. Imagine a copy of the following rules for D = 1, 2, 3, …, where D is the nesting depth.
⟨quasiquotation⟩ ⟶ ⟨quasiquotation 1⟩ ⟨qq template 0⟩ ⟶ ⟨expression⟩ ⟨quasiquotation D⟩ ⟶ `⟨qq template D⟩ | (quasiquote ⟨qq template D⟩) ⟨qq template D⟩ ⟶ ⟨simple datum⟩ | ⟨list qq template D⟩ | ⟨vector qq template D⟩ | ⟨unquotation D⟩ ⟨list qq template D⟩ ⟶ (⟨qq template or splice D⟩*) | (⟨qq template or splice D⟩+ . ⟨qq template D⟩) | '⟨qq template D⟩ | ⟨quasiquotation D + 1⟩ ⟨vector qq template D⟩ ⟶ #(⟨qq template or splice D⟩*) ⟨unquotation D⟩ ⟶ ,⟨qq template D − 1⟩ | (unquote ⟨qq template D − 1⟩) ⟨qq template or splice D⟩ ⟶ ⟨qq template D⟩ | ⟨splicing unquotation D⟩ ⟨splicing unquotation D⟩ ⟶ ,@⟨qq template D − 1⟩ | (unquote-splicing ⟨qq template D − 1⟩)
In ⟨quasiquotation⟩s, a ⟨list qq template D⟩ can sometimes be confused with either an ⟨unquotation D⟩ or a ⟨splicing unquotation D⟩. The interpretation as an ⟨unquotation⟩ or ⟨splicing unquotation D⟩ takes precedence.