パーサーの単一のルールの非表示チャネルのレクサーで定義されたトークンを、通常のトークンであるかのように使用できますか?生成されたコードはJavaです...
ありがとう
CommonTokenStreamを作成するときは、使用するチャネルを指定します。他のチャネルのトークンはパーサーに表示されません。
はい、パーサーで非表示のトークンを使用できます。
私たちはこれを常に行っています。唯一の問題は、それを探すタイミングを知る必要があることです。
Antlr には、使用する用語がいくつかあります。
Hidden
トークンは別のストリームを移動するだけです。ユーザーは、getHiddenAfter
またはgetHiddenBefore
現在一致しているトークンを呼び出して、非表示のトークンをいつでも確認できます。
注:一致したトークンの前後に複数のトークンが隠されている可能性があるため、それらを繰り返し処理する必要があります。
レクサーにトークンを破棄するように指示するDiscarded
と、トークンは実際に削除されます。二度とあなたに見られることはありません。