キーワード一覧
NagiScript 現行コンパイラー 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 |
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") |
print / println /
panic は組み込み関数です。io.println
のようなモジュール形式は存在しません。引数は 1
個で、文字列・数値・bool を表示できます(文字列の
+ 連結は不可)。
self と impl
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 |
未実装。戻りなしの関数は
-> を書かない
|
キーワードの使用例
// 型定義
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!")
