[obsidian] vault backup: 2025-09-24 17:14:37[
All checks were successful
Build / build (push) Successful in 10m20s

This commit is contained in:
2025-09-24 17:14:37 +09:00
parent 7dab373061
commit ea1236e6c2
2 changed files with 29 additions and 24 deletions

View File

@@ -48,7 +48,7 @@ mod modname{//ソースファイルと同じ宣言
```rust ```rust
mod modname{//ステージの変更 mod modname{//ステージの変更
@stage = macro #stage = macro
// //
} }
``` ```
@@ -168,8 +168,9 @@ Program = FunctionDefinition
|GlobalDeclaration |GlobalDeclaration
|ModuleDeclaration |ModuleDeclaration
|use ModuleName |use ModuleName
ModuleDeclaration = Visibility(stage) { Program } ModuleDeclaration = Visibility? mod (StageDeclaration)? Identifier { Program }
Visivility : pub
``` ```
@@ -181,6 +182,6 @@ Pythonのモジュールシステム [Python's Import System - Module object|R
[[Gluon]]のモジュール [Modules - Gluon Documentation](https://gluon-lang.org/doc/crates_io/book/modules.html) [[Gluon]]のモジュール [Modules - Gluon Documentation](https://gluon-lang.org/doc/crates_io/book/modules.html)
これマクロとして実装してあって、それこそレコードとして出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり これマクロとして実装してあって、それこそレコードとしてファイルが埋め込まれて出力されるだけなので、分割コンパイルとかモジュール内相互参照とかは全然考慮されてないけど意味論はすっきり

View File

@@ -77,51 +77,55 @@ let x = `{1+2} //コード型のシンタックス
${x} //エスケープ/スプライスのシンタックス ${x} //エスケープ/スプライスのシンタックス
//or //or
$x $x
```
### 型シグネチャ
```rust
let x : `(float)->float //これは関数型に対する宣言
``` ```
### シンタックスシュガー ### シンタックスシュガー
ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒なので ファイル内でステージを変えたブロックを作りたい場合、ブロックがどんどんネストされていって面倒
あと、mimiumではブロック`${}` の内側に`fn`での関数宣言ができないのもダルい。
```rust ```rust
//ステージ1からスタート //ステージ1からスタート
#stage(macro)
stage(-1){
//ここはステージ0 //ここはステージ0
let x = {...} let x = {...}
}
//一度ステージ1へ
stage(-1){ #stage(main)
//ここはステージ0 //ここで戻る
let y = (x+...) let y = (x+...)
}
``` ```
これをこういう形でネストした式へ変形 これをこういう形でネストした式へ変形
```rust ```rust
//コンパイラはステージ0からスタートするためにCodeを追加 `{//コンパイラはステージ0からスタートするためにCodeを追加
`{
//ステージ1からスタート //ステージ1からスタート
${ ${//#stage(macro) start
//ステージ0 //ここはステージ0
let x = {...} let x = {...}
`{ `{//#stage(main) start
//一度ステージ1へ //ここで1に戻る
}
 ${
 //再度ステージ0へ
 let y = (x+...)  let y = (x+...)
 }  }//#stage(main) end
} }//#stage(macro) end
} }// main code end
``` ```
この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう この、最後に閉じ括弧が溜まっていく形にしない限り、yはxを参照できなくなってしまう
ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。 最終的に、ステージは[[mimiumのモジュールシステム|モジュール]]単位で変更していくほうが都合がよさそう。
とはいえ、簡易的に1ファイル内でステージ0、1の変更もしたいかな