R6RS:翻訳:R6RS:6.1 Syntax entries

R6RS:翻訳:R6RS:6.1 Syntax entries

6.1 構文の項目

分類が syntax であるとき、その項目は特別な構文構造を説明し、 template は構造のフォームの構文について述べる。 template は 4 章の BNF 規則の右辺に似た記法で書かれてい、フォームのうち構文データとして template に合致するフォームと等価なものの集合について説明する。「syntax」項には接尾辞 (expand) がついているものがあり、構造の構文キーワードがレベル 1 で 公開されていることを示す。それ以外の場合、構文キーワードはレベル 0 で公開されている。R6RS:翻訳:R6RS:7.2 Import and export levels を参照。

template で説明されているフォームの構成要素は構文変数を使って指定される。構文変数は、例えば <expression>、 <variable> のように山括弧を使って書かれている。構文変数は他のフォームやフォームの並びを意味する。構文変数は構文データのうちの非終端要素を参照していることがある(R6RS:翻訳:R6RS:4.3 Datum syntax の 4.3.1 参照)。その場合、その非終端要素に一致するフォームだけをその位置に置くことができる。例えば、 <identifier> は識別子でなけれればならないフォームを意味している。また <expression> は構文上有効な式である任意のフォームを意味している。 template 内で使われている他の非終端要素は仕様の一部として定義されている。

<thing1> ...

という表記は <thing> の 0 個以上の出現を表し、

<thing1> <thing2> ...

は <thing> のひとつ以上の出現を表す。

フォームの各構成要素が template で指定された形をしていることを保証するのはプログラマの責任である。構文の説明はフォームの構成要素についての他の制約を表すこともある。典型的には、そのような制約は「<x> は~でなければならない」という形の文言で述べられている。さらに、これはプログラマの責任も定めている。マクロ変換子がフォームの展開の停止にかかわるかぎり、制約が満たされているかどうか確認するのは実装者の責任である。実装系は構成要素が制約を満たさないことを検知した場合 &syntax コンディション型の例外が発生する。


Last modified : 2008/11/08 19:08:11 UTC