はじめに
Pythonのリファレンスマニュアルを読もうとしたとき、初めてBNF文法記法
という概念に遭遇したので、今後のために小メモを残します。
記号の説明を表にまとめただけのものです。
本編
マニュアルの解説では、随所に下記のような書式のコードが登場します。
for文の構文
for_stmt ::= "for" target_list "in" expression_list ":" suite
["else" ":" suite]
(8.3. for 文 - 8. 複合文 (compound statement) — Python 3.8.4 ドキュメント)
Pythonの言語リファレンスには上記のような記法のコードが掲載されています。
これは、リファレンス内で説明されているように、BNF文法記法
やバッカス・ナウア記法
などと呼ばれるものです。
定義、記法の背景は下記のリンクなどで参照できます。
バッカス・ナウア記法 - Wikipedia
SYNTAX SUMMARY - Algol-60 BNF
About BNF notation
"[]" を用いた書式などは、オリジナルの記法を拡張したものです。
Pythonの言語リファレンスでも同様に"[]"が書式に含まれています。
Pythonのリファレンスマニュアルで説明されている記号の用法を表にまとめます。
記号 | 読み | 説明 | 備考 |
---|---|---|---|
::= | - | <左式>は<右式>で定義 | - |
| | 垂直線 | 選択項目の列挙 (左側セル:エスケープの都合で全角文字) |
演算子の優先度は最低 |
* | アスタリスク | 直前にくる要素のゼロ個以上の繰り返し | 演算子の結合範囲は可能な限り狭い |
+ | プラス | 直前にくる要素の一個以上の繰り返し | 演算子の結合範囲は可能な限り狭い |
[] | 角括弧 | 字句がゼロ個か一個出現 (要素がオプションである) |
- |
() | 丸括弧 | 字句のグループ化 | - |
"" | クオート | リテラル文字列の表記 | - |