[obsidian] vault backup: 2025-08-03 17:51:06[
All checks were successful
Build / build (push) Successful in 6m53s
All checks were successful
Build / build (push) Successful in 6m53s
This commit is contained in:
@@ -22,9 +22,43 @@ type alias Hoge = ()->float //エイリアス宣言
|
|||||||
|
|
||||||
```rust
|
```rust
|
||||||
mod(macro) modname{
|
mod(macro) modname{
|
||||||
|
//toplevel_decls
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
- モジュール単位でMIRとバイトコードを生成して、あとからリンクできるようにする
|
||||||
|
- ただし、ステージ0マクロの展開もしないといけないので、ASTも出力して保持していないといけない
|
||||||
|
|
||||||
|
#### 意味論
|
||||||
|
|
||||||
|
```rust
|
||||||
|
stage(1)
|
||||||
|
mod(0) modname{
|
||||||
|
//toplevel_decls
|
||||||
|
fn foo(){
|
||||||
|
...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
modname::foo!()
|
||||||
|
```
|
||||||
|
これがあったとすると、
|
||||||
|
|
||||||
|
```rust
|
||||||
|
let modname = ${
|
||||||
|
foo = | | { },
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
modname.foo!()
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
こういう感じかなー、あ、でもこうするとモジュール内での相互参照が解決できないか
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Program = FunctionDefinition
|
Program = FunctionDefinition
|
||||||
|
Reference in New Issue
Block a user