[obsidian] vault backup: 2026-02-02 22:21:12[
Some checks failed
Build / build (push) Failing after 22m53s

This commit is contained in:
2026-02-02 22:21:12 +09:00
parent 9a26927196
commit a8187dc4f4
3 changed files with 37 additions and 2 deletions

View File

@@ -3,7 +3,7 @@ date: 2024-12-25 15:10
--- ---
#programming-language #compiler-design #programming-language #compiler-design
例えば似た変数名の候補を返すとか、スコープ外にある変数の候補をサジェストしてくれるような評価環境を作りたい 例えば似た変数名の候補を返すとか、スコープ外にある変数の候補をサジェストしてくれるような[[評価環境]]を作りたい
また、単に見つかった変数への参照を返すだけでなく、それがローカル、upvalue、global、externalなのかの区別も欲しい また、単に見つかった変数への参照を返すだけでなく、それがローカル、upvalue、global、externalなのかの区別も欲しい
@@ -29,7 +29,7 @@ let c = hoge //this should be an error but suggested by language server
![[img/スクリーンショット 2024-12-25 15.23.26.png]] ![[img/スクリーンショット 2024-12-25 15.23.26.png]]
- とりあえず親のリストへ辿る方向で探索す - とりあえず親のリストへ辿る方向で探索す
- 見つからなかった(セマンティクス的にエラーになる)場合は親を兄弟含めて検索して、候補が見つかったら返す - 見つからなかった(セマンティクス的にエラーになる)場合は親を兄弟含めて検索して、候補が見つかったら返す
- このときはついでに類似度検索で近いやつが否いかも探す - このときはついでに類似度検索で近いやつが否いかも探す

View File

@@ -0,0 +1,26 @@
何度目だという[[評価環境]]の実装。
モジュールも考慮して、名前空間のOpenとかも含めた評価環境を実装したい。
名前の側で正規化するのがいいのか?
```rust
//Environment全体をSlotMapで管理する
struct Environment<V>{
namespace:Option<Symbol>
parent: Option<EnvKey>
children: Vec<EnvKey>
binds: Vec<(Symbol,V)>
}
```
letでスコープを広げたときはnamespaceなしで辿ることにする
最終的にはLanguage ServerでSpanからEnvironment
```rust
fn get_normalized_name()
```

9
content/評価環境.md Normal file
View File

@@ -0,0 +1,9 @@
#programming
毎回作るのに苦労している。
[[Rustでの評価文脈環境のRAIIっぽい実装]]
[[エラーフレンドリーな評価環境の実装]]
[[モジュールの名前環境解決を考慮した評価文脈]]