DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(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