演算子

種類記号意味
算術演算子+加算
-減算
*乗算
/除算
%剰余
**冪乗
関係演算子==等しい
^=等しくない
<<小さい
<=以下
>>大きい
>=以上
論理演算子^否定
&&論理積
||論理和
その他~文字列連結

基本データ型

型名バイト取り得る値
Boole*0fal, 1tru
Byteu10 ~ 255(2**8 - 1)
Charu20 ~ 65535(2**16 - 1)
Inteu40 ~ 4294967295(2**32 - 1)
Intes4-2147483648(-2**31) ~ 2147483647(2**31 - 1)
Longu80 ~ 18446744073709551615(2**64 - 1)
Longs8-9223372036854775808(-2**63) ~ 9223372036854775807(2**63 - 1)
Doubs8IEEEの規定に従う

定数宣言

@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を除くメンバー