シンボル テーブルを使用すると、プログラミング言語でのシンボルの検索が最適化されるという話をよく耳にします。現在、私の言語はコンパイラとしてではなく、インタプリタとしてのみ実装されています。コンパイラを構築する時間をまだ割り当てたくないので、インタプリタを最適化しようとしています。この言語は、ほとんどの場合、Scheme のセマンティクスと構文に基づいており、静的スコープです。私は実行時にコードを実行するために AST を使用します (私のインタープリターでは、Write Yourself a Scheme in 48 Hours
.
残念ながら、F# マップを使用してシンボルを名前で格納および検索しているため、インタープリターでのシンボル検索が遅くなります。(実際には Trie を使用していますが、パフォーマンスも同様に問題があります)。代わりにシンボル ツリーを使用して、より高速なシンボル ルックアップを実現したいと考えています。ただし、インタープリターでシンボルテーブルを実装できるかどうか、またはどのように実装できるかはわかりません。それらについては、コンパイラのコンテキストでのみ耳にします。
これは可能ですか?実装戦略やパフォーマンスがコンパイラのシンボル テーブルと異なる場合、その違いを説明していただけますか? 最後に、私が調べているインタープリターにシンボル ツリーの既存の参照実装はありますか?
ありがとうございました!