5

私自身の単純な言語用のコード エディターを作成する必要があります。

クラス名.メソッド名(パラメータ名 = 2, ...)

ANTLR ツールを使用して、適切な文法と自動生成パーサーを作成しました。クラス、メソッド、変数、およびパラメーター名のオートコンプリートが必要です。このリストはコンテキストに依存する必要があり、fe は「クラス」を表します。メソッドと "class.Method(" - パラメータを表示する必要があります。テキストを解析し、カーソルがどのノードにあるかに応じてリストを表示するつもりでした。問題は、"aaa.bbb(" のような不完全なコードの場合、パーサーは構文ツリーではなくエラーを生成します.この問題を解決する方法はありますか?おそらく私は間違った方法でコードを解析してオートコンプリートを表示するべきではありませんか?

4

2 に答える 2

1

何を表示するかを知るには、コードの少なくとも一部を解析する必要があります。

エラーが検出されて後で続行するまで解析を許可するパーサーが必要です(または、それを無視して、解析を続行できるようにそれ自体を修正しようとしますが、ここでは非常に困難になるため、最後にアクセスできますノードを作成し、文法と既存の構文ツリーを使用して自動補完するか、最新の構文ツリーをキャッシュして正規表現などを使用して自動補完するタイミングを確認し、キャッシュを使用して自動補完する対象を確認します。

後の提案の方が簡単かもしれませんが、完了が必要なときにキャッシュが古くなる可能性があるという欠点があります(つまり、ファイルに新しいクラスを作成すると、そのクラスに基づくすべての完了が行われません。ファイルにエラーがなくなるまで使用できません)。

サイドノード:構文解析を行っているので、式文法の解析に興味があるかもしれませんが、それらはその問題を正確に解決するわけではありません。

于 2009-11-06T11:47:37.663 に答える
0

Mac 上の TextMate や他のプラットフォーム上のそのクローンはどうですか? 使い始めたばかりですが、非常にオープンなプラグイン ツールセットを備えているようです。

于 2008-11-24T14:20:33.077 に答える