JSON 配列によるコード表現
Calcium で "Hello, World." を出力するプログラムは、以下のようになります。
[
[
1, // ブロックレベル。Python におけるインデントの深さと同じ。
[], // 任意の要素。現在は使用しません。
"expr", // コマンド名。何を実行する文なのかを表します。この例は「式文」です。
["call", ["var", "print"], ["Hello, World."]] // コマンドの引数。後述します。
],
[1, [], "end"] // プログラムの最後には必ず "end" コマンドがあります。
]
上記と等価な Python コードは:
print("Hello, World.")
です。
ブロックレベル
次の Python コードでは、制御文によってインデントが1つ深くなっています。
if answer is 42:
pass
Calcium の JSON 配列中では、先頭の整数がその役割を果たします。
[1, [], "ifs"],
[2, [], "if", ["is", ["var", "answer"], ["num", "42"]]],
[3, [], "pass"],
[1, [], "end"]
JSON 中の空白文字は意味を持たないため、整数でインデントを表します。
コマンド
Calcium では1つ1つの文が「コマンド」として扱われます。例えば if
, for
, while
といった命令文があります。基本的な Python の文をサポートしています。
式
Calcium における式は少し特殊です。配列の形を取り、その先頭要素が種類を表します。
変数は ["var", "answer"]
となります。