言語リファレンスについて
形式文法で使用される表記法を読んでください。
この本のこの部分では、Swiftプログラミング言語の形式文法について説明します。ここで説明される文法は、パーサーやコンパイラを直接実装するためではなく、言語をより詳細に理解するのに役立つことを目的としています。
Swiftは比較的小さな言語です。これは、Swiftコードのほぼすべての場所に登場する多くの一般的な型、関数、演算子が、実際にはSwift標準ライブラリで定義されているためです。これらの型、関数、演算子はSwift言語自体の一部ではありませんが、本書のこの部分での説明やコード例で広く使用されています。
文法の読み方
Swiftプログラミング言語の形式文法を説明するために使用される表記法には、いくつかの規則があります:
- 矢印(→)は文法の生成規則を示すために使用され、「次のように構成できる」と読むことができます。
- 構文カテゴリはイタリック体のテキストで示され、文法生成規則の両側に現れます。
- リテラルワードと句読点は太字の固定幅テキストで示され、文法生成規則の右側にのみ現れます。
- 代替の文法生成規則は縦棒(|)で区切られます。代替の生成規則が長すぎて読みにくい場合は、新しい行で複数の文法生成規則に分割されます。
- いくつかの場合において、通常のフォントのテキストを使用して、文法生成規則の右側を説明します。
- オプションの構文カテゴリとリテラルは、末尾に疑問符
?
を付けて示されます。
例として、ゲッター・セッターブロックの文法は以下のように定義されています:
ゲッター・セッターブロックの文法
getter-setter-block → { getter-clause setter-clause? } | { setter-clause getter-clause }
この定義は、ゲッター・セッターブロックが、中括弧で囲まれたゲッター句とオプションのセッター句で構成できること、または中括弧で囲まれたセッター句とゲッター句で構成できることを示しています。上記の文法生成規則は、代替規則を明示的に示した以下の2つの生成規則と同等です:
ゲッター・セッターブロックの文法
getter-setter-block → { getter-clause setter-clause? }
getter-setter-block → { setter-clause getter-clause }