SGF の仕様の翻訳 section2

2. (EBNF による)基本的な定義
http://www.red-bean.com/sgf/sgf4.html#2

EBNF の規則は言語研究の分野と WWW 上の Computing Dictionary (http://www.instantweb.com/foldoc/foldoc.cgi?Backus-Naur+Form) で議論されている。
要約:

"...": 端末の入力文字
[...]: オプション。最大1回だけ出現。
{...}: 反復。0回以上の繰り返し。
(...): グループ化。

: 排他的論理和

イタリック: 他で説明されているパラメータ。

2.1. EBNF の定義

Collection = GameTree {GameTree}
GameTree = "(" Sequence { GameTree } ")"
Sequence = Node { Node }
Node = ";" { Property }
Property = PropIdent PropValue { PropValue }
PropIdent = UcLetter { UcLetter }
PropValue = "[" CValueType "]"
CValueType = (ValueType | Compose)
ValueType = ( None | Number Real | Double | Color | SimpleText | Text | Point | Move | Stone )

(訳注。"UcLetter" は大文字のこと。)

空白文字(スペース、タブ、CR、LF、垂直タブ、など)は PropValue、Propertie、Node、Sequence、GameTree の間のどこに現れてもよい。

プロパティリストは、list と elist の2種類ある。

'list of': PropValue { PropValue }
'elist of': ((PropValue { PropValue }) | None)
別の言い方をすれば、elist は list または "[]" (空リスト)である。

2.2. プロパティに関する注意
プロパティ識別子は大文字だけのキーワードである。現在、2文字より長い識別子は無い。

ノードのプロパティの順序は固定されていない。ファイルを保存する度に変更されることもあるし、アプリケーションによっても異なる。もっと言えば、アプリケーションはプロパティ値の順序に依存するべきではない。プロパティ値の順序は変わり得るものである。

この文書で定義されている標準のプロパティと衝突しない限り、私製のプロパティを定義し追加することができる。

従って、SGF reader を開発するときは、不明なプロパティを読み飛ばすようにすることが重要である。またアプリケーションは、不明または不正なプロパティを読み飛ばした場合には、警告メッセージを表示すべきである。

それぞれのプロパティは、ノード1つにつき1つだけしか設定できない。例えば、1つのノードに2つのコメントを入れることはできない。

... ; C[comment1] B [dg] C[comment2] ; ...

これはエラーになる。

それぞれのプロパティにはプロパティの型がある。プロパティの型は