Listen

Description

第34章へようこそ。

今日のテーマは「繰り返しと衛生性」です。

前章で、フラグメント指定子がトークン列の中の特定の位置を捕捉する仕組みを見ました。

式を1つ、識別子を1つ、型を1つ、それぞれ捕捉する。

固定の個数なら、これだけで足りる。

しかしマクロは、任意個のトークンを受け取りたい場面がある。

vecマクロは要素を何個でも受け取って配列を作る。

また、マクロが導入した変数の名前が、呼び出し側の変数の名前と衝突しないように、識別子のスコープにも工夫が要る。

今日扱うのは、可変長のトークンを扱う繰り返し構文、

繰り返しでは難しい変換を担う再帰的展開、

マクロの識別子が呼び出し側に漏れない衛生性、

そしてマクロ内のパスがクレート境界を越えても壊れない仕組みです。