JSON調査

JSON書式・・?

間違えた。恥ずかしいなぁもう。私は恥をかけるのが一つの強みだと考えるようにしているのだが、恥ばかりかいているといい加減ゲンナリもしてくる。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/11_Expressions.html#section-11.1.5
名称はオブジェクト初期化子とのこと。JSON書式じゃないんだよね。やーい。
これをベースにJSONが考案されたのだから前後関係が逆だし、役割も違う。
オブジェクト初期化子はECMA-262(の3rd Edition)に正式に記述されているので、1999年にはもう使えていたという事だ。

わかりづらいところ

if文やwhileの制御構造としての括弧と、Functionオブジェクトの括弧と、オブジェクト初期化子の括弧の判別がよくわからない。
これはまず「ステートメント」という存在がある。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#Statement
これの一種に「ブロック」という存在がある。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#Block
この「ブロック」が制御構造としての大括弧として汎用的に使われているらしい。
その他、厳密には「ケースブロック」というものもある。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#CaseBlock

ちょっとよくわからないのが「Expression Statement」というもの。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/12_Statements.html#ExpressionStatement
後日調べるが、これも中身に大括弧が使えるようだ。正規表現絡みっぽいが。


で、「関数定義」という書式がある。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/13_Function_Definition.html#section-13
ここのFunction Bodyを記述するところには「FunctionDeclaration」と「FunctionExpression」の二種類の記述方法があり、いずれも大括弧が使えるようだ。


んで、最後に「オブジェクトリテラル」というものがあり、これがオブジェクト初期化子の書式になる。
ECMA Script 3rd Editionで定義される大括弧が使えるケースは以上のようだ。
関数定義とオブジェクトリテラルをごっちゃにしないよう気をつければよさそう。念のためリストしておく。

  1. ブロック
  2. ケースブロック
  3. Expression Statement
  4. 関数定義
  5. オブジェクトリテラル

この文法をまとめているのが仕様書の「文法要約」という章にあるので、他の厳密な文法も興味がある場合は調べてみるといいだろう。
http://www2u.biglobe.ne.jp/~oz-07ams/prog/ecma262r3/A_Grammar_Summary.html