問題タブ [qscintilla]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
365 参照

parsing - ANTLR4 を使用して QScintilla を強調表示するにはどうすればよいですか?

ANTLR4を学習しようとしていますが、最初の実験で既にいくつかの問題が発生しています。

ここでの目標は、ANTLR を使用して QScintilla コンポーネントを構文強調表示する方法を学習することです。*.ini少し練習するために、ファイルを適切に強調表示する方法を学びたいと思いました。

まず、mcve を実行するには、次のものが必要です。

  • antlr4 をダウンロードして動作することを確認し、メイン サイトの説明を読んでください。
  • Python antlr ランタイムをインストールするには、次のようにします。pip install antlr4-python3-runtime
  • のレクサー/パーサーを生成しini.g4ます:

    /li>

実行することによってantlr ini.g4 -Dlanguage=Python3 -o ini

  • 最後に、保存しますmain.py

    /li>

すべてがうまくいけば、次の結果が得られるはずです。

ショーケース

ここに私の質問があります:

  • ご覧のとおり、デモの結果は使い物になるにはほど遠いものです。それは絶対に望んでいないことです。本当に気がかりです。代わりに、そこにあるすべての IDE と同様の動作を得たいと考えています。残念ながら、それを達成する方法がわかりません。そのような動作を提供するスニペットをどのように変更しますか?
  • 現在、以下のスナップショットと同様の強調表示を模倣しようとしています。

ここに画像の説明を入力

そのスクリーンショットでは、強調表示が変数の割り当て (variable=deeppink および values=yellowish) で異なることがわかりますが、それを達成する方法がわかりません。このわずかに変更された文法を使用してみました:

次に、スタイルを次のように変更します。

しかし字句解析の出力を見ると、ANTLR 文法では順序が優先されるため、VARIABLEとの間に区別がないことがわかります。VALUES私の質問は、文法/スニペットをどのように変更して、そのような視覚的な外観を実現しますか?