言語リファレンス
このリファレンスは、現在の Sobakasu で何が書けるか、コンパイル時にどのような規則があるか、実行するとどのように動くかを調べるための文書です。
Sobakasu を初めて知る人でも読めるように、言語固有の概念はできるだけ最初に説明します。分からない用語がある場合は 用語集 も参照してください。
設計上の理由や、採用しなかった案については ADR に分けています。
状態変数は state ブロックに、VRChat のイベント処理は behavior ブロックに記述します。
state { count: i32 = 0;}
function increment(value: i32) -> i32 { value + 1}
behavior { on interact(state) { state.count = increment(state.count); }}状態変数は、イベント処理が終わった後も値を保持する変数です。上の例では、interact イベントが発生するたびに count が 1 増えます。
state.count の . は値が持つメンバーへのアクセスです。一方、foo::Bar の :: はモジュールや型などを含む修飾名に使います。
- 用語集: リファレンスで使う主な用語
- 字句構造: コメント、識別子、リテラル、キーワード
- 名前とモジュール:
module、use、修飾名、公開と再公開 - 宣言: 宣言の種類と記述できる場所
- 変数・定数・状態:
let、const、state、public、sync - 関数と implementation:
function、メソッド、関連関数 - 型システム: 組み込み型、型注釈、
Maybe<T> - 複合型: 配列、タプル、
struct、enum - ジェネリクス: 型パラメーターと単相化
- 式: 値の計算、呼び出し、アクセス、初期化
- 演算子: 演算子、優先順位、短絡評価
- 制御フロー:
if、while、loop、breakなど - パターン:
letによる分解とmatch - behavior とイベント: Udon イベントと状態変数へのアクセス
- ネットワーク:
receiveとsend - extern: Unity・VRChat などの外部 API との接続
- 構文一覧: 主要構文の簡易文法
現在使うキーワード
Section titled “現在使うキーワード”現在は function、implementation、mutable、public、module、language item を使用します。以前使われていた fn、impl、mut、pub、mod、lang は現行構文ではありません。
static も現在の関数・メソッド宣言では使用しません。型に関連付ける関数は implementation の中へ記述します。
言語処理系そのものを確認したい場合は、次のソースコードを参照できます。