Antlr3 - 解析器中的HIDDEN标记

时间:2010-02-01 15:05:49

标签: parsing antlr token lexer channel

您是否可以在解析器的单个规则中的隐藏通道中使用词法分析器中定义的标记,就像它是普通标记一样? 生成的代码是Java ...

感谢

2 个答案:

答案 0 :(得分:1)

构造CommonTokenStream时,告诉它使用哪个通道。解析器将无法看到其他通道上的标记。

答案 1 :(得分:1)

是的,你可以在Parser中使用隐藏的令牌。

我们一直这样做。唯一的问题是你需要知道何时寻找它。

Antlr有一些它使用的术语。

Hidden令牌只是在一个单独的流上传播。用户可以通过在当前匹配的令牌上调用getHiddenAftergetHiddenBefore来检查隐藏令牌。

注意:在匹配的令牌之前或之后可能隐藏了多个令牌,因此您应该遍历它们。

当您告诉词法分析者丢弃它时,实际上会删除Discarded令牌。你永远不会再看到它了。