質問

現在、AntLRを使用して一部のファイルを独自の言語で解析しています。 エディターでそのセクションを強調表示する必要があります(たとえば、Javaクラスのメソッドを強調表示することを考えてください)。

それらを取得する方法についてのヒントはありますか? このコードがあるとしましょう:

function test(param1, param2) {
}

as関数はキーワードなので、パーサーで最初に取得する位置は、識別子「test」の1つです。そこから終了中括弧までの位置を取得するにはどうすればよいですか?パラメーターリストは予想どおり動的であるため、その長さを事前に知ることはできません。

ありがとう!

役に立ちましたか?

解決

質問を理解したら、各トークンで属性「pos」を使用できると思います

func: FUNCTION ID '(' ID (',' ID)* ')' {
        System.out.println("Position = " + $FUNCTION.pos);
}

ゼロからカウントする行内の文字位置を指します。

他のヒント

最初に取得する位置がテストの位置である理由にはあまり従いません。 「関数」の文字オフセットを簡単に取得できるはずです。パターン仕様を正しく設計した場合はトークン。仕様の関連部分をリストできますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top