私は構造化言語の文法を設定しましたが、今ではオートコンプリートの動作をコーディングする必要があります。このように定義された文法に基づいて生成する方法はありますか?私は考え出した後https://raw.githubusercontent.com/dnltsk/intellij-mapfile-plugin/master/src/org/dnltsk/mapfileplugin/Mapfile.bnf文法構造を使ってオートコンプリートを生成する方法は?
0
A
答えて
0
: - END、NAMEおよびTITLE示唆すべきROOT後に自動補完ホットキーを押す
RootObject ::= ROOT (NameAttr | TitleAttr)* END
private NameAttr ::= NAME string
private TitleAttr ::= TITLE string
明確に文法ここで
で定義されている完全な文法へのリンクですPsiElementに既に以下のような一般的なエラーの説明が含まれていることを確認してください。"FooTokenType.NAME, FooTokenType.TITLE or FooTokenType.END expected, got 'IntellijIdeaRulezzz'"
私は非常に宣言的な方法でオートコンプリートを管理しています:
public void addCompletions(@NotNull CompletionParameters parameters, ProcessingContext context, @NotNull CompletionResultSet resultSet) {
PsiElement element = parameters.getPosition().getParent();
String genericErrorDescription = ((PsiErrorElementImpl) element).getErrorDescription();
errorDescription = errorDescription.substring(0, errorDescription.indexOf(" expected, got "));
errorDescription = errorDescription.replaceAll("FooTokenType\\.", "");
String[] suggestedTokens = errorDescription.split("(,)|(or)");
for (String suggestedToken : suggestedTokens) {
resultSet.addElement(LookupElementBuilder.create(suggestedToken));
}
}
予想される動作が発生します。私はこれが他人を助けてくれることを願っています。もっと良い解決策があれば教えてください。
関連する問題
- 1. Tkinter - オートコンプリートを使ってコンボボックスを作成する方法
- 2. ポインタを使って構造体のベクトルを指す方法は?
- 3. Qtを使ってUnityに構造を送る方法
- 4. ユーザー生成フォームテンプレートのデータを構造化する方法
- 5. qsort()を使って構造体の配列をソートする方法は?
- 6. LSTMを使ってシーケンスを生成する方法は?
- 7. Reflectionを使ってダイレクトコールラッパーのバイトコードを生成する方法は?
- 8. log4j2を使って半日ログを生成する方法は?
- 9. パターンラボを使ってプロジェクトでテンプレートを生成する方法は?
- 10. メソッドを使ってポイントを生成する方法は?
- 11. Eclipseを使ってmapping.txtを生成する方法は?
- 12. Knockoutテンプレートを使用してKnockoutでツリー構造を作成する方法は?
- 13. 構造リストの構成方法
- 14. Seleniumを使ってオートコンプリート入力ボックスを埋める方法は?
- 15. フラスコフラットページを使って構文を強調する方法
- 16. xqueryを使ってXML文書を作成する方法は?
- 17. PCL構文を使用してバーコードを生成する構文
- 18. javascriptを使ってオブジェクトを再構成する方法
- 19. Gitlabを使ってVisual Studioを構成する方法 - Linux
- 20. オートコンプリートを使ってカスタムコンストラクタを使ってオブジェクトをダイナミックオブジェクトからマップする方法
- 21. 関数を使って構造体にアクセスする方法、値を保存する方法は?
- 22. カスタム構造タイプを定義して使用する方法は?
- 23. マッピング構造に従ってStringをintにマップする方法
- 24. Pythonを使用して特定のXMLノードまでのXML構造を生成する方法は?
- 25. ビルダーを使用してXMLを生成してXML内の構造をループする方法
- 26. jsonを使ってGo構造体にオートインクリメントを追加する方法
- 27. springのanootationsを使ってUUIDを生成する方法
- 28. freedrawing`sデータを使ってfreedraw行を生成する方法
- 29. "subtext"を使ってQRコードを自動生成する方法
- 30. groovyを使ってランダムIPを生成する方法