0

Lua 用のオートコンプリート アルゴリズムを作成する方法を見つけようとしていますが、多くのスクリプト言語と同様に静的型システムが欠けているため、バックグラウンド コンパイルが必要だと思いますが、バックグラウンド コンパイル中に停止問題が発生しやすいので、誰かが以前にこの種のことを解決したことがあるかどうか疑問に思っていました.コンパイルと停止を解決するための標準的な戦略は何ですか?

4

2 に答える 2

1

あなたはできる

  • 実際にコードを実行して、特定の変数が表すオブジェクトの種類を確認し、時間がかかりすぎる場合は途中で実行を中断します
  • Luaに型がある場合、実際の変数の型を推測してください。これは、型システムを作成する必要があることを意味しますが、これは重要な作業です (オブジェクト モデルについて推論できるように十分に制限し、モデルに実際に準拠する十分な数の Lua プログラムを十分に許容する必要があります)。ただし、すべての光沢のある新しい JavaScript エンジンはこれを実行しようとしているので、ポインターを探すことができます。
  • 構文から推測してください。たとえば、同じプレフィックスのみを検索する emacs 補完は、他の IDE が通常失敗する場合 (C++ テンプレート) のように機能します。
于 2009-02-25T16:04:07.937 に答える
1

静的テキスト分析に基づくオートコンプリートは、バックグラウンドでコンパイルを試みるよりも理にかなっているように思えます。オートコンプリートを提供するほとんどのテキスト エディターはこの方法を使用しますが、正確ではありません。

これを行うには、ドキュメントを解析して名前を探し、それらが属するスコープを記録します。ポイントがドキュメント内を移動すると、オートコンプリートは現在の範囲を記録し、その時点で使用できるはずの名前を提供します。

LUA はデフォルトでグローバル スコープであるため、プログラマがスコープを狭めるために「local」キーワードを使用していない場合、かなり汚染された名前空間になる可能性があります。

于 2009-02-25T15:52:05.390 に答える