Skip to content

字句構造

This content is not available in your language yet.

このページでは、Sobakasu のソースコードを構成する最小の要素であるコメント、識別子、キーワード、リテラルを説明します。

行コメントは //、ブロックコメントは /* ... */ で書きます。ブロックコメントは入れ子にできます。

// 1 行のコメント
/* 外側のコメント
/* 内側のコメント */
*/

/// で始まる行はドキュメントコメントです。直後の宣言に対する説明として扱われます。

/// 2つの値を加算します。
function add(a: i32, b: i32) -> i32 {
a + b
}

変数名、関数名、型名などに使う名前を識別子と呼びます。通常の識別子は Unicode XID の規則に従うため、ASCII 以外の文字も使用できます。

let count = 1;
let 速度 = 2.0;

通常の識別子として書けない名前は、バッククォート ` で囲めます。

let `a-b` = 1;
let `😀` = 2;

バッククォートで囲んだ識別子を改行の途中まで続けることはできません。

Sobakasu の文法で特別な意味を持つ単語をキーワードと呼びます。主なキーワードは次のとおりです。

on use module as function receive send to
language item type struct enum implementation extern
self Self new public sync const state behavior field
let mutable return match if else while loop break continue redo
ref out true false

static は現在の関数・メソッド宣言では使用できません。以前のコードに static が残っている場合はコンパイルエラーになります。

null も現在は使用しません。値が存在するかもしれないことは Maybe<T> で表します。

ソースコードに値を直接書いたものをリテラルと呼びます。Sobakasu では整数、浮動小数点数、文字、文字列、真偽値を直接書けます。

let a = 42;
let b = 3.14;
let c = 'A';
let d = "hello\nworld";
let e = true;

整数は 2 進・8 進・10 進・16 進で表記できます。数値の末尾には、i32 や f32 など型を指定するための接尾辞を付けられます。

数値型には i8、u8、i16、u16、i32、u32、i64、u64、f32、f64 があります。

文字列では \"、\\、\n、\r、\t などのエスケープ表記を使用できます。

入れ子になったループを指定して break などを行うために、'name 形式のラベルを使用できます。

'outer: loop {
break 'outer;
}