[obsidian] vault backup: 2026-02-02 22:21:12[
Some checks failed
Build / build (push) Failing after 22m53s
Some checks failed
Build / build (push) Failing after 22m53s
This commit is contained in:
@@ -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]]
|
||||||
|
|
||||||
- とりあえず親のリストへ辿る方向で探索する
|
- とりあえず親のリストへ辿る方向で探索す
|
||||||
- 見つからなかった(セマンティクス的にエラーになる)場合は親を兄弟含めて検索して、候補が見つかったら返す
|
- 見つからなかった(セマンティクス的にエラーになる)場合は親を兄弟含めて検索して、候補が見つかったら返す
|
||||||
- このときはついでに類似度検索で近いやつが否いかも探す
|
- このときはついでに類似度検索で近いやつが否いかも探す
|
||||||
|
|
||||||
|
|||||||
26
content/モジュールの名前環境解決を考慮した評価文脈.md
Normal file
26
content/モジュールの名前環境解決を考慮した評価文脈.md
Normal 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
9
content/評価環境.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
#programming
|
||||||
|
|
||||||
|
毎回作るのに苦労している。
|
||||||
|
|
||||||
|
[[Rustでの評価文脈(環境)のRAIIっぽい実装]]
|
||||||
|
|
||||||
|
[[エラーフレンドリーな評価環境の実装]]
|
||||||
|
|
||||||
|
[[モジュールの名前環境解決を考慮した評価文脈]]
|
||||||
Reference in New Issue
Block a user