6

ソースコードの解析に詳しくないので、この質問が有効かどうかはわかりません。私の目標は、学習目的で 1 つの既存のプログラミング言語 (言語 "X") のソース コード補完関数を作成することです。Antlr(v4) はそのようなタスクに適していますか?それとも、既存のソリューションが存在しないと仮定して、必要な AST/解析ツリーの作成と解析を手動で行う必要がありますか?

コンパイラの本のリストを除いて、その特定のトピックに関する多くの情報は見つかりませんでした.コンパイラは私が求めているものではないことを除いて.

4

2 に答える 2

11

GoWorks のコード補完は、ANTLR 4 を使用して完全に実装されています。次のビデオは、このコード補完エンジンの完成度を示しています。コード補完の例は、5 分からビデオの最後まで実行されます。

Tunnel Vision Labs の GoWorks IDE (プレビュー リリース) の紹介

私は長年にわたってコード補完アルゴリズムに取り組んできましたが、新しい言語用のコード補完ソリューションを作成するための (自動または手動の) これ以上のソリューションはないと強く信じています。 . そのレベルのパフォーマンスや精度に興味がない場合は、他のソリューションに参加する方が簡単かもしれません (私は結果にあまりにも簡単に失望するので、個人的にはそれらのソリューションを使用しません)。

于 2013-11-02T02:55:11.273 に答える
6

Xtext は ANTLR3 を使用し、優れたオートコンプリート機能を備えています。問題は、 から派生したオートコンプリート処理用に別のパーサー (再びantlr3 を使用) を生成することですAbstractInternalContentAssistParser。この数千行のコード部分は、ANTLR3 だけのエラー回復では不十分であることが xtext チームによって判明したことを示しています。

一方、ANTLR4には、parser.getExpectedTokensWithinCurrentRule()特定の位置で可能なトークンタイプをリストする機能があります。ParseTreeListener で使用すると機能します。残りは、ANTLR の範囲外であるセマンティクス、スコープなどです。

于 2014-11-04T22:36:28.377 に答える