| 表記 | 名前 | 結合 | 分類 | 動作 |
|---|---|---|---|---|
| $ | 動的参照 | → | 特殊 | 右辺の識別名を動的解決します。 |
| $$ | 動的参照 | → | 特殊 | 右辺の変数が示す識別名を動的解決します。 |
| @=LocalNew | ローカル割り当て | → | 特殊 | ローカル寿命のオブジェクトを作成し、割り当てます。 |
| #GetClass | クラス取得 | → | 単項 | 左辺のオブジェクトの型を示すクラスオブジェクトを取得します。 |
| () | メソッド呼び出し | → | 特殊 | 左辺のオブジェクトをメソッドとして呼び出します。 呼び出しのホストオブジェクトは左辺のオブジェクトを名前解決したオブジェクトになります。 |
| @() | thisメソッド呼び出し | → | 特殊 | 左辺のオブジェクトをメソッドとして呼び出します。 呼び出しのホストオブジェクトはthisになります。 |
| @ | メンバ参照 | → | 特殊 | メソッドの対象クラスのクラスメンバ名前空間を示します。 |
| @@ | グローバル参照 | → | 特殊 | グローバル名前空間を示します。 |
| . | メンバ参照 | → | 特殊 | 左辺のオブジェクトメンバを参照します。 |
| -> | ポインタメンバ参照 | → | 特殊 | 左辺のポインタに結び付けられているオブジェクトのメンバを参照します。 |
| #TypeCast | 型キャスト | → | 特殊 | 左辺のオブジェクトを右辺の型にキャストします。 |
| :: | クラスメンバ参照 | → | 特殊 | 左辺のクラスオブジェクトのクラス共有変数を参照します。 |
| .: | 拡張メンバ参照 | → | 特殊 | 左辺のオブジェクトメンバを拡張参照します。 |
| ->: | ポインタ拡張メンバ参照 | → | 特殊 | 左辺のポインタに結び付けられているオブジェクトのメンバを拡張参照します。 |
| * | ポインタ参照 | ← | 単項 | 右辺のポインタに結び付けられているオブジェクトを返します。 |
| #New | オブジェクト作成 | → | 特殊 | 左辺のMemoryHost管理のオブジェクトを作成します。 |
| #IsNULL | 空参照判定 | → | 特殊 | 左辺の参照が空参照か判定します。 |
| #IsValid | 有効参照判定 | → | 特殊 | 左辺の参照がアクセス可能か判定します。 |
| #Exist | メンバ名判定 | → | 特殊 | 左辺のオブジェクトに指定した名前があるか判定します。 |
| #Valid | メンバ名有効判定 | → | 特殊 | 左辺のオブジェクトの指定した名前がアクセス可能か判定します。 |
| #TypeCheck | キャスト判定 | → | 特殊 | 左辺のオブジェクトを右辺の型にキャスト可能か判定します。 |
| ! | 真偽反転 | ← | 単項 | 右辺の真偽を反転します。 |
| #= | 参照代入 | ← | 二項 | 右辺のオブジェクトを左辺のポインタに結び付けます。 |
| #=DownCast | 参照代入 | ← | 二項 | 右辺のオブジェクトを左辺のポインタにダウンキャストして結び付けます。 |
| #=DynamicCast | 参照代入 | ← | 二項 | 右辺のオブジェクトを左辺のポインタにキャストして結び付けます。 |
| #== | 参照比較 | → | 二項 | 両辺の参照に関連付けられているオブジェクトが同じか判定します。 |
| #!= | 参照比較 | → | 二項 | 両辺の参照に関連付けられているオブジェクトが異なるか判定します。 |
| ^^ | 論理XOR | → | 二項 | 両辺を真偽値評価し、そのXOR演算の結果を返します。 |
| enforce | 強制適用 | → | 単項 | 右辺の読み取り専用属性を解除し、強制的に変更可能にします。 |
| 表記 | 名前 | 結合 | 分類 | 動作 |
|---|---|---|---|---|
| class | 局所クラス | - | 特殊 | 局所クラスを定義し、そのクラスオブジェクトを返します。 classから先はクラス定義の構文を使用します。 |
| method | 無名メソッド | - | 特殊 | 無名メソッドを定義し、そのメソッドオブジェクトを返します。 methodから先はメソッド定義の構文を使用します。 |
| closure | クロージャ | - | 特殊 | クロージャを定義し、そのクロージャオブジェクトを返します。 closureから先はメソッド定義の構文を使用し、 クロージャは定義した位置のローカル名前空間にアクセスできます。 |
| && | 論理AND | → | 特殊 | 両辺を真偽値評価し、そのAND演算の結果を返します。 この演算子は短絡評価を行い、左辺と右辺を別の式であるように扱います。 |
| || | 論理OR | → | 特殊 | 両辺を真偽値評価し、そのOR演算の結果を返します。 この演算子は短絡評価を行い、左辺と右辺を別の式であるように扱います。 |
| <<=>> | 参照交換 | - | 特殊 | 両辺の参照に関連付けられているオブジェクトを交換します。 |
| ?: | 条件 | - | 特殊 | 左辺式を真偽値評価し、中辺または右辺の式を評価します。 この演算子は各辺を別の式であるように扱います。 |
| ?? | NULL条件 | - | 特殊 | 左辺の評価結果が空参照でなければそれを返し、空参照なら右辺を返します。 この演算子は短絡評価を行い、左辺と右辺を別の式であるように扱います。 |
| ??= | NULL条件代入 | - | 特殊 | 左辺の評価結果が空参照でなければ、右辺を代入します。 この演算子は短絡評価を行い、左辺と右辺を別の式であるように扱います。 |
| 表記 | 名前 | 結合 | 分類 | 代入用 | 戻り値 | 引数の数 | 備考 |
|---|---|---|---|---|---|---|---|
| [] | 添字参照 | → | 特殊 | いいえ | あり | 任意 | |
| {} | 添字参照 | → | 特殊 | いいえ | あり | 任意 | |
| =[] | 一斉代入 | → | 特殊 | はい | あり | 任意 | |
| ={} | 一斉代入 | → | 特殊 | はい | あり | 任意 | |
| : | 拡張名前参照 | → | 二項 | いいえ | あり | 1 | .: および ->: 演算子から呼び出される。 |
| \ | 拡張評価 | → | 単項 | いいえ | あり | 0 | |
| ++ | インクリメント | →/← | 単項 | はい | あり | 0 | 前置/後置で共用 |
| -- | デクリメント | →/← | 単項 | はい | あり | 0 | 前置/後置で共用 |
| ~ | NOT | ← | 単項 | いいえ | あり | 0 | |
| - | 算術否定 | ← | 単項 | いいえ | あり | 0 | 二項と区別するためメソッド名は #operator!!として定義する。 |
| * | 乗算 | → | 二項 | いいえ | あり | 1 | |
| / | 除算 | → | 二項 | いいえ | あり | 1 | |
| % | 剰余 | → | 二項 | いいえ | あり | 1 | |
| + | 加算 | → | 二項 | いいえ | あり | 1 | |
| - | 減算 | → | 二項 | いいえ | あり | 1 | |
| << | 左シフト | → | 二項 | いいえ | あり | 1 | |
| >> | 右シフト | → | 二項 | いいえ | あり | 1 | |
| & | AND | → | 二項 | いいえ | あり | 1 | |
| ^ | XOR | → | 二項 | いいえ | あり | 1 | |
| | | OR | → | 二項 | いいえ | あり | 1 | |
| = | 代入 | ← | 二項 | はい | あり | 1 | |
| += | 加算代入 | ← | 二項 | はい | あり | 1 | |
| -= | 減算代入 | ← | 二項 | はい | あり | 1 | |
| *= | 乗算代入 | ← | 二項 | はい | あり | 1 | |
| /= | 除算代入 | ← | 二項 | はい | あり | 1 | |
| %= | 剰余代入 | ← | 二項 | はい | あり | 1 | |
| |= | OR代入 | ← | 二項 | はい | あり | 1 | |
| &= | AND代入 | ← | 二項 | はい | あり | 1 | |
| ^= | XOR代入 | ← | 二項 | はい | あり | 1 | |
| <<= | 左シフト代入 | ← | 二項 | はい | あり | 1 | |
| >>= | 右シフト代入 | ← | 二項 | はい | あり | 1 | |
| == | 等価 | → | 二項 | いいえ | あり | 1 | |
| < | より小さい | → | 二項 | いいえ | あり | 1 | |
| > | より大きい | → | 二項 | いいえ | あり | 1 | |
| <= | 以下 | → | 二項 | いいえ | あり | 1 | |
| >= | 以上 | → | 二項 | いいえ | あり | 1 | |
| != | 以外 | → | 二項 | いいえ | あり | 1 |
| 演算子優先順位表 |
|---|
| $ $$ @=LocalNew class method closure |
| #GetClass () @() @ @@ . -> #TypeCast :: [] {} =[] ={} .: ->: \ |
| ++(前置) --(前置) |
| ++(後置) --(後置) |
| *(単項) |
| #New #IsNULL #IsValid #Exist #Valid #TypeCheck |
| ! ~ -(単項) |
| *(二項) / % |
| + -(二項) |
| << >> |
| & ^ | |
| = += -= *= /= %= |= &= ^= <<= >>= #= #=DownCast #=DynamicCast |
| == < > <= >= != #== #!= ^^ enforce |
| && || ?? ??= |
| <<=>> ?: |
| 演算子 | 同じ型 | アップキャスト | ダウンキャスト | 継承関係のないクラス | クラス→I/F | I/F→クラス | 異なるI/F |
|---|---|---|---|---|---|---|---|
| #= | ○ | ○ | × | × | ○ | × | × |
| #=DownCast | ○ | ○ | ○ | × | ○ | × | × |
| #=DynamicCast | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 演算子 | 同じ型 | アップキャスト | ダウンキャスト | 継承関係のないクラス | クラス→I/F | I/F→クラス | 異なるI/F |
|---|---|---|---|---|---|---|---|
| #= | ○ | ○ | × | × | ○ | × | × |
| #=DownCast | ○ | ○ | ○ | × | ○ | × | × |
| #=DynamicCast | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
| 演算子 | 同じ型 | アップキャスト | ダウンキャスト | 継承関係のないクラス | クラス→I/F | I/F→クラス | 異なるI/F |
|---|---|---|---|---|---|---|---|
| #= | ○ | ○ | × | × | ○ | × | × |
| #=DownCast | ○ | ○ | ○ | × | ○ | × | × |
| #=DynamicCast | ○ | ○ | ○ | ○ | ○ | ○ | ○ |