文法表記法

よく文法表記に::=とか変なのが出てきていつも気になってたけど調べた事がなかった。
Pythonでもhttp://www.python.jp/doc/2.5/ref/notation.htmlによるとBNF 文法記法に手を加えたものとなっているので、この機会に勉強しよう。

よく見ると正規表現に似てた

表記 意味
::= イコール
* 直前にくる要素のゼロ個以上の繰り返し
プラス (+) 一個以上の繰り返し
垂直線 複数の選択肢のどれか
クオート "" リテラル文字列
( ) 字句のグループ化
角括弧 ([ ]) 囲いの中の字句はオプションであることを示します
三つのドット("a"..."z") 範囲から文字を一字選ぶこと
空白 トークンを分割しているときのみ意味を持ちます
各カッコ中の字句 (<...>) 定義済みのシンボルを記述

規則は通常、一行中に収められています; 多数の選択肢のある規則は、最初の行につづいて、垂直線の後ろに 各々別の行として記述されます。