1つの表記を別の表記に変換するために、ANTLR 4.5.3を使用します。私はすでにIntelliJ IDEAのプラグインを使って文法の記述を設計しました。ANTLRでAltNumberを受け取る方法は?
私の文法では、1つのルールにいくつかの選択肢があります。
"Parse Tree"の結果を見ると、各ノードは "ルール名": "行番号"で構成されています。
APIを使用してこの情報を受け取るにはどうすればよいですか?私がそれをはっきりと理解するならば、行番号はgetAltNumber()から取り出すことができますが、このフィールドは空です。ドキュメントで
http://www.antlr.org/api/Java/org/antlr/v4/runtime/RuleContext.html#getAltNumber()
デフォルトの実装では、この代替NUMを計算したり格納していないと言われています。
この情報の入手方法?
「代替ラベリング」(TDAR pg 117,261)を使用する方が良い方法です。さもなければ '#getAltNumber' doc - FWIWで提案されているようにサブクラス化してください。これは決して行う必要はありません。 – GRosenberg
行番号がalt番号を意味していますか?私にとっては、ソースコードの行番号のように聞こえます。しかし、私はANTLR文法のIntelliJ出力を知らない。行番号が必要な場合は、getLine()を呼び出してください.-) –