3

ANTLR3 ツリー文法で行番号を取得しようとしています (ANTLR3 によって生成されたコードは TreeParser クラスのものです)。
Googleは、悲しいことにANTLR3では機能しないANTLR2のソリューションのみを見つけました。
明確にするために、.g ファイル自体の行番号にアクセスしようとしています。

メソッドを上書きするか、クラスを拡張する必要があると思いますが、どちらかわかりません。

事前にt​​nx

編集:Java APIを使用していることを指摘する必要があります

4

2 に答える 2

3

私は遠くまで探していたようです。.g ファイル内で Tree Grammar のルールの行番号にアクセスするには、単に token.getLine(); を要求します。(内部的には CommonTree です)

例えば

assign: ID '=' 式 {int line = $ID.getLine()}; // $ID は CommonTree 型です

于 2011-01-08T00:25:52.737 に答える
1

antlr3.Tokenクラスとサブクラスのantlr3.ClassicTokenおよびantlr3.CommonToken、非推奨の関数とメンバー
を提供しているようです。 def getLine ( self )line

どのようにantlr3.TreeParserを使用しているのかわかりませんが、トークンにアクセスできると思います。

于 2011-01-07T23:11:15.490 に答える