[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
 | 
			
		||||
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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user