式の特徴
一部の式は JSON 配列として表現されます。最初の要素が式の種類を示すキーワード文字列であり、 残りの要素はその式に固有の引数です。
数値リテラル
数値リテラルは文字列を使って表現します。これは JSON の仕様に準拠しつつ、 Python の数値リテラルの表現を可能にするためです。
js
["num", "42"]
["num", "-3.14"]
["num", "1e10"]
["num", "0b1010"] // 2進数
["num", "052"] // 8進数
["num", "0x2A"] // 16進数
["num", "1_000_000"] // アンダースコアによる桁区切り文字列リテラル、論理値、および null
これらは JSON のデータをそのまま使用します。 null は Calcium では None に対応します。
js
"Hello, World!"
true // True
false // False
null // None変数参照
変数参照は var キーワードを使って表現します。
js
["var", "x"]
["var", "my variable"]TIP
変数名は JSON 文字列として有効であれば、任意の文字を含むことができます。
属性アクセス
オブジェクトの属性アクセスは attr キーワードを使って表現します
js
["attr", ["var", "runtime"], "run"]第2要素はオブジェクトを表す式、第3要素は属性名の文字列です。
添字アクセス
リストや辞書の添字アクセスは sub キーワードを使って表現します。
js
["sub", ["var", "myList"], ["num", "0"]]
["sub", ["var", "myDict"], ["var", "key"]]関数呼び出し
関数呼び出しは call キーワードを使って表現します。
js
["call", ["var", "print"], [["var", "x"], ["var", "y"]]]第2要素は関数を表す式、第3要素は引数リスト(式の配列)です。
演算子
演算子はそれぞれ対応するキーワードを使って、前置表現します。
js
["+", ["var", "a"], ["var", "b"]] // a + b
["-", ["var", "a"], ["var", "b"]] // a - b
["*", ["var", "a"], ["var", "b"]] // a * b2項演算子
以下はサポートされている2項演算子の一覧です。
| 演算子 | キーワード |
|---|---|
| + | "+" |
| - | "-" |
| * | "*" |
| / | "/" |
| // | "//" |
| % | "%" |
| ** | "**" |
| == | "==" |
| != | "!=" |
| < | "<" |
| <= | "<=" |
| > | ">" |
| >= | ">=" |
| and | "and" |
| or | "or" |
単項演算子
以下はサポートされている単項演算子の一覧です。
| 演算子 | キーワード |
|---|---|
| not | "not" |
| - | "-_" |