2011-09-16 12 views
2

私はANTLRを初めて使用しており、いくつかの基本的な概念を明確にしたいと考えています。基本的なANTLRの概念

  1. パーサーはレクサーからトークンストリームを受信して​​いますか?はいの場合、隠しチャネルの概念はどのようにこのトークンストリームに適合しますか?ストリーム内の各トークンを意味しますか?それは、それがどのチャンネルに属しているかを示す属性を持っていますか?

  2. パーザで自分のトークンの前にある隠しチャネルトークン(空白またはコメント)にアクセスしたいとします。明示的にコードを書く必要があると思います。それはを介してですか?org.antlr.runtime.TokenStream.get()?どんなパラメータ値をそれに与えるべきですか?

答えて

3

JavaManは書いた:

はレクサーからのトークンストリームを受信パーサですか?

TokenStreamがレクサーの周りにラップされています。デフォルトでは、Parserは必要に応じてこのストリームをトークンに「ポーリング」します(つまり、入力はトークン化されずにバッファに入れられます)。

JavaManは書いた:

はい場合は、どのように隠されたチャネルの概念は、このトークンストリームに適合していますか?ストリーム内の各トークンを意味しますか?それは、それがどのチャンネルに属しているかを示す属性を持っていますか?

デフォルトのTokenStreamは、DEFAULTチャネルに配置されたトークンのみを生成します。ただし、解析中にチャネルを変更することができます(または複数のチャネルから読み取ることもできます)[1]。

JavaManは書いた:

を私は、パーサーに自分のトークンの前に、たとえば、ある隠されたチャネル・トークン(ホワイトスペースやコメント)をアクセスしたいです。私は明示的にコード化しなければならないと思う。

[1]を参照してください。



[1] How do I get an Antlr Parser rule to read from both default AND hidden channel