キーワード一覧

NagiScript 現行コンパイラー v0.2.0 で実際に使用できるキーワードと組み込み関数の一覧です。

現行仕様(v0.2.0)

以下が現行で実際に動くキーワードと組み込み関数です。ドキュメントに登場する import / async / loop / type などはロードマップ(未実装)で、現行の nagiscript コマンドでは動きません。それらは「未実装キーワード」の表を参照してください。


型を定義するキーワード

キーワード 説明 例
struct 構造体の定義 struct Point { x: f32 y: f32 }
enum 列挙型の定義 enum Status { Ok NotFound }
impl メソッド用の impl ブロック impl Point { fn show(self: Point) -> string { ... } }
extern 外部関数の宣言(C 向け) extern "C" fn strlen(s: *u8) -> i32
fn 関数の定義(戻り値は -> 構文) fn add(a: i32, b: i32) -> i32
export 関数宣言の前置(Wasm/C エクスポート) export "C" fn add(a: i32, b: i32) -> i32

変数宣言

キーワード 説明 例
val 不変変数の宣言 val x = 42
var 可変変数の宣言 var counter = 0

制御構文

キーワード 説明 例
if 条件分岐(文として使用) if x > 0 { ... }
else else ブランチ if ... { } else { }
for for ループ(step 対応) for i in 0..5 { }
while while ループ while i < 10 { }
in for ループの範囲指定 for i in 0..5 { }
step for ループの増分(change.md, 2026-08) for i in 0..10 step 2 { }
match パターンマッチング match s { Ok => ..., _ => ... }
return 関数からの返却(明示必須) return 42
break ループの脱出 break
continue 次の反復へ continue
as 型変換 val y = x as f64
現行仕様(change.md, 2026-08)

for の範囲ループは step 節で増分を指定でき(省略時は 1、負のステップは降順)、同じ変数名を複数の for で使い回す再宣言バグも修正されています。 while での書き換えも従来どおり可能です。


メモリ管理

キーワード 説明 例
unsafe Unsafe ブロック unsafe { *ptr }

リテラル

キーワード 説明 例
true 真 val flag = true
false 偽 val flag = false

組み込み関数

関数 説明 例
print 値を改行なしで出力 print(42)
println 値を改行付きで出力 println("Hello")
panic パニック(実行時エラー) panic("boom")
現行仕様(v0.2.0)

print / println / panic は組み込み関数です。io.println のようなモジュール形式は存在しません。引数は 1 個で、文字列・数値・bool を表示できます(文字列の + 連結は不可)。


self と impl

現行仕様(v0.2.0)

self はキーワードではなく変数名として使えます。メソッド内でレシーバを参照する場合は fn show(self: Point) -> string のように型注釈が必要です。impl は impl 型 { ... } のブロック用です。


未実装キーワード(ロードマップ)

以下はドキュメントに登場しますが、現行コンパイラー v0.2.0 では未実装です。

キーワード 現状
import 未実装。複数ファイル分割は不可
export(文として) 未実装。export は関数宣言の前置のみ可能
async / await 未実装。非同期は存在しない
loop 未実装。while true { } を使う
type 未実装。型エイリアスは不可
const 未実装
class / interface / trait / pub 未実装(予約の位置付け)
self(キーワードとして) 変数名としては使用可。メソッドでは self: 型 の注釈が必要
step 実装済み(change.md, 2026-08)。for i in 0..10 step 2 のように for の増分を指定できる
and / or / not 実装済み。論理演算に使用。 && / || / ! は使えません
null 未実装
void 未実装。戻りなしの関数は -> を書かない

キーワードの使用例

ngs
// 型定義
enum Status { Ok NotFound }

struct Point {
    x: f32
    y: f32
}

// impl ブロックと self の型注釈
impl Point {
    fn show(self: Point) -> string {
        return "point"
    }
}

// 関数定義(戻り値は -> 構文、return を明示)
fn add(a: i32, b: i32) -> i32 {
    return a + b
}

// 変数宣言
val x = 42
var counter = 0

// 制御構文(while は動作確認済み)
if x > 0 {
    println("Positive")
} else {
    println("Zero")
}

while counter < 3 {
    println(counter)
    counter = counter + 1
}

// match は裸のバリアント名と _ を使う
val st = match Status.Ok {
    Ok => "200",
    _ => "404",
}
println(st)

// unsafe とポインタ
unsafe {
    var v = 42
    val p = &v as *i32
    println(*p)
}

// 組み込み関数 print / println
print("no newline")
println("Hello, World!")