2011-09-16 92 views
2

我是ANTLR的新手,想澄清一些基本概念。ANTLR基本概念

  1. 解析器是否接收到来自词法分析器的令牌流?如果是的话,隐藏频道概念如何适应这个令牌流?这是否意味着流中的每个令牌都有一个属性来显示它属于哪个通道?

  2. 我想要访问隐藏的通道标记(空格或注释),也就是说,在分析器中我自己的标记之前。我想我必须明确地写一些代码。是否通过org.antlr.runtime.TokenStream.get()?应该给它什么参数值?

回答

3

JavaMan写道:

是解析器从词法分析器接收令牌流?

A 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