(r5rs.info.gz) Quasiquotations
Info Catalog
(r5rs.info.gz) Expression
(r5rs.info.gz) Formal syntax
(r5rs.info.gz) Transformers
7.1.4 Quasiquotations
---------------------
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, .... D keeps track of 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.
Info Catalog
(r5rs.info.gz) Expression
(r5rs.info.gz) Formal syntax
(r5rs.info.gz) Transformers
automatically generated byinfo2html