演算子
種類 | 記号 | 意味 |
算術演算子 | + | 加算 |
- | 減算 |
* | 乗算 |
/ | 除算 |
% | 剰余 |
** | 冪乗 |
関係演算子 | == | 等しい |
^= | 等しくない |
<< | 小さい |
<= | 以下 |
>> | 大きい |
>= | 以上 |
論理演算子 | ^ | 否定 |
&& | 論理積 |
|| | 論理和 |
その他 | ~ | 文字列連結 |
基本データ型
型名 | バイト | 取り得る値 |
Boole | * | 0fal, 1tru |
Byteu | 1 | 0 ~ 255(2**8 - 1) |
Charu | 2 | 0 ~ 65535(2**16 - 1) |
Inteu | 4 | 0 ~ 4294967295(2**32 - 1) |
Intes | 4 | -2147483648(-2**31) ~ 2147483647(2**31 - 1) |
Longu | 8 | 0 ~ 18446744073709551615(2**64 - 1) |
Longs | 8 | -9223372036854775808(-2**63) ~ 9223372036854775807(2**63 - 1) |
Doubs | 8 | IEEEの規定に従う |
定数宣言
@val 定数名:型 := 値;
@val 定数名 := 値;
変数宣言
@var 変数名:型;
代入
変数名 := 値;
変数宣言と同時に代入
@var 変数名:型 := 値;
@var 変数名 := 値;
大まかな記号の使い方
$ … 型
? … 仮引数
! … 実引数
# … 実体
型の定義
@type 型名 型リテラル
タプル型
$(値, 値, ...)
タプル値
!(型, 型, ...)
関数型
$[仮引数の型の並び]戻り値の型
関数値
?[仮引数の並び]{処理}
関数の定義
関数は単に関数型の変数に代入された関数値である。
以下@valを例にしているが、@var、@metでも同じ。
@val 関数名:$[仮引数の型の並び]戻り値の型 := ?[仮引数の並び]{処理}
※ 上記右辺の仮引数の並びでは、型は省略可能
上記をさらに省略し、次のように記述できることとする。
@val 関数名?[型付きの仮引数の並び]戻り値の型 := {処理}
例)
・省略なし
@val func1:$[Int, Int]Int := ?[i1:Int, i2:Int]{@ret i1 + i2;}
・右辺の仮引数の並びの型を省略
@val func1:$[Int, Int]Int := ?[i1, i2]{@ret i1 + i2;}
・左辺に直接仮引数の並びを記述
@val func1?[i1:Int, i2:Int]Int := {@ret i1 + i2;}
関数呼び出し
関数名![実引数の並び]
関数型の変数
オーバーロードを実現するため、次のような仕様とする。
変数名だけではどの変数か特定することができない。
変数を特定するために次のように記述する。
変数名$[仮引数の型の並び]
仮型引数
...?<|仮型引数の並び|>
実型引数
...!<|実型引数の並び|>
クラス定義
@class クラス名 {
@sta
@val 定数名:型 := 値
@var 変数名:型 := 値
@new 関数リテラル(コンストラクタとなる)
@met 関数定義
@dyn
@val 定数名:型 := 値
@var 変数名:型 := 値
}
・@valや@varは関数型を含めて全ての型のデータを代入できる。
・@metは関数型しか代入できない。
・@metは@sta領域に記述するが、その処理の中で@dyn領域のデータを使用できる。
・@metはインスタンスから使用する。
クラスの使用
・@sta領域
$クラス名.@sta内の@metを除くメンバー