1

私は ANTLR4 を使い始めたばかりで、解析ツリーをたどるリスナーを作成中です。Parserまた、インスタンスにカスタム エラー リスナーを追加しました。ParseTreeWalker.walk()これに基づいて構築するには、呼び出し中に報告するエラーがパーサーのエラー リスナーにも送信されるようにしたいと考えています。それを呼び出しParser.getErrorListeners()てリスナークラスに注入できることに気づきましたが、もう少し組み込みのものが欲しいと思っていました。

私がそれに取り組んでいる間、エラーを報告するときに特定のノードの行と列の番号を決定する手段が必要です。リスナーやビジターが見つけたエラーを報告することに関しては、誰もが自分の思い通りになるのでしょうか?

4

1 に答える 1

2

を呼び出すことができますParser.notifyErrorListeners

行番号と列番号は、Token.getLine()およびを呼び出すことで取得できますToken.getCharPositionInLine()。を呼び出して、解析ツリー内のTokenいずれかに関連付けられたインスタンスを取得できます。TerminalNodeTerminalNode.getSymbol()

于 2013-04-12T14:18:50.787 に答える