[obsidian] vault backup: 2025-08-05 17:45:45[
All checks were successful
Build / build (push) Successful in 7m40s
All checks were successful
Build / build (push) Successful in 7m40s
This commit is contained in:
@@ -33,25 +33,34 @@ pub type alias Hoge = ()->float //エイリアス宣言
|
||||
|
||||
```
|
||||
|
||||
#### モジュールの宣言
|
||||
#### シンタックス:モジュールの宣言
|
||||
|
||||
```rust
|
||||
mod(macro) modname{
|
||||
mod modname{//ソースファイルと同じ宣言
|
||||
//toplevel_decls
|
||||
}
|
||||
```
|
||||
|
||||
```rust
|
||||
mod(stage-1){//ステージの変更
|
||||
//
|
||||
}
|
||||
```
|
||||
|
||||
- モジュール単位でMIRとバイトコードを生成して、あとからリンクできるようにする
|
||||
- ただし、ステージ0マクロの展開もしないといけないので、ASTも出力して保持していないといけない
|
||||
|
||||
モジュールを値としてレコード型に型付けできると話が早いんだけど、それ一級モジュールの機能だよな
|
||||
|
||||
|
||||
|
||||
#### 意味論
|
||||
|
||||
```rust
|
||||
stage(1)
|
||||
mod(0) modname{
|
||||
//toplevel_decls
|
||||
fn foo(){
|
||||
fn foo()-> `float {
|
||||
...
|
||||
}
|
||||
}
|
||||
@@ -138,6 +147,9 @@ Rustの場合はグローバルな宣言が基本的に型推論しなくて済
|
||||
- とりあえずmodAの型はすべて不明なレコード型として解釈して型付け開始
|
||||
- Proigram→Exprへの変換の中でuse宣言をextern modA:{...}に変換し、名前空間参照をレコードへのアクセスに変換
|
||||
|
||||
両方が推論終わってから再度Unificationしないといけないか?これも再帰を禁止しておけばそれでいいのか
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
Reference in New Issue
Block a user