gorogoronyan FC2

データフォーマット: SGF

JavaScript: SGF ファイルの処理 に関連して、補足や注意書きなど

未定義のプロパティ

SGF テキストでは未定義のプロパティが 1) 1つの値だけ持つプロパティか、 2) 値が配列のプロパティか、を区別できません。

例: 囲碁の SGF
AB[no][oo][np]   // AB は配列のプロパティ
B[pr]            // B は値が 1つだけのプロパティ

例: 未定義のプロパティ
UNKNOWN[value]  // 1つの値なのか、要素が 1個の配列なのか区別できない

SGF のテキストを眺めただけでは 1) と 2) の区別はできません。 暗黙の了解で AB は配列のプロパティ、B は値が 1つのプロパティとみなしているだけです。 暗黙の了解があると プログラミングでしばしばトラブルの原因になります。

SGFParse2022.js で
1) 1つの値だけを持つプロパティか
2) 配列のプロパティか
は、下のコードで区別しています。

//配列のプロパティ名は下にキーを足す。
SGFParse.ARRAY_VALUE_KEY = [ "AW", "AB", "AE", "LB", "SQ", "TR", "MA", "CR", "AWC", "ABC" ];

似たような話は XML でも出てきます。 XML テキストのタグを見ただけでは 1) 1つの値だけ持つ要素なのか、 2) 配列の要素なのか、を区別できない話が出てきます。
データフォーマット: JSON と XML の比較

この話は HTML でも同様です。 p や span や div などは単体の要素、 li や td や tr なら配列の要素という暗黙の了解で使っています。 HTML テキストを見ただけでは配列か配列でないかを区別できません。

古い時代のデータフォーマットはデータテキストを見ただけでは 文字列と数値と論理型の区別、 原始型と配列や連想配列の区別ができないことが多く、 このあたりで問題が起こりやすいです。 これらの欠点をなくすと近年多用される JSON の話になります。
JavaScript: JSON シリアライズ
データフォーマットの話 (3): 歴史的な話

関連

inserted by FC2 system