From a8187dc4f4f148079f2cf2606f5ce3f37f54047c Mon Sep 17 00:00:00 2001 From: "Matsuura Tomoya(Windows)" Date: Mon, 2 Feb 2026 22:21:12 +0900 Subject: [PATCH] [obsidian] vault backup: 2026-02-02 22:21:12[ --- content/エラーフレンドリーな評価環境の実装.md | 4 +-- ...ジュールの名前環境解決を考慮した評価文脈.md | 26 +++++++++++++++++++ content/評価環境.md | 9 +++++++ 3 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 content/モジュールの名前環境解決を考慮した評価文脈.md create mode 100644 content/評価環境.md diff --git a/content/エラーフレンドリーな評価環境の実装.md b/content/エラーフレンドリーな評価環境の実装.md index 10004533..147c4462 100644 --- a/content/エラーフレンドリーな評価環境の実装.md +++ b/content/エラーフレンドリーな評価環境の実装.md @@ -3,7 +3,7 @@ date: 2024-12-25 15:10 --- #programming-language #compiler-design -例えば似た変数名の候補を返すとか、スコープ外にある変数の候補をサジェストしてくれるような評価環境を作りたい +例えば似た変数名の候補を返すとか、スコープ外にある変数の候補をサジェストしてくれるような[[評価環境]]を作りたい また、単に見つかった変数への参照を返すだけでなく、それがローカル、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]] -- とりあえず親のリストへ辿る方向で探索する +- とりあえず親のリストへ辿る方向で探索す - 見つからなかった(セマンティクス的にエラーになる)場合は親を兄弟含めて検索して、候補が見つかったら返す - このときはついでに類似度検索で近いやつが否いかも探す diff --git a/content/モジュールの名前環境解決を考慮した評価文脈.md b/content/モジュールの名前環境解決を考慮した評価文脈.md new file mode 100644 index 00000000..d810e052 --- /dev/null +++ b/content/モジュールの名前環境解決を考慮した評価文脈.md @@ -0,0 +1,26 @@ + +何度目だという[[評価環境]]の実装。 + +モジュールも考慮して、名前空間のOpenとかも含めた評価環境を実装したい。 + +名前の側で正規化するのがいいのか? + +```rust +//Environment全体をSlotMapで管理する +struct Environment{ + namespace:Option + parent: Option + children: Vec + binds: Vec<(Symbol,V)> +} +``` + +letでスコープを広げたときはnamespaceなしで辿ることにする + +最終的にはLanguage ServerでSpanからEnvironment + +```rust +fn get_normalized_name() + + +``` \ No newline at end of file diff --git a/content/評価環境.md b/content/評価環境.md new file mode 100644 index 00000000..a0f28714 --- /dev/null +++ b/content/評価環境.md @@ -0,0 +1,9 @@ +#programming + +毎回作るのに苦労している。 + +[[Rustでの評価文脈(環境)のRAIIっぽい実装]] + +[[エラーフレンドリーな評価環境の実装]] + +[[モジュールの名前環境解決を考慮した評価文脈]] \ No newline at end of file