【发布时间】:2010-02-01 15:05:49
【问题描述】:
您能否在解析器的单个规则中使用在词法分析器中定义的隐藏通道中的标记,就像它是普通标记一样? 生成的代码是Java...
谢谢
【问题讨论】:
标签: parsing antlr token lexer channel
您能否在解析器的单个规则中使用在词法分析器中定义的隐藏通道中的标记,就像它是普通标记一样? 生成的代码是Java...
谢谢
【问题讨论】:
标签: parsing antlr token lexer channel
当你构造一个 CommonTokenStream 时,你告诉它使用什么通道。解析器将看不到其他通道上的令牌。
【讨论】:
是的,您可以在解析器中使用隐藏标记。
我们一直这样做。唯一的问题是您需要知道何时寻找它。
Antlr 使用了一些术语。
Hidden 令牌只是在单独的流上传播。用户始终可以通过在当前匹配的令牌上调用 getHiddenAfter 或 getHiddenBefore 来检查隐藏的令牌。
注意:在匹配的标记之前或之后可能隐藏了多个标记,因此您应该遍历它们。
当您告诉词法分析器丢弃 Discarded 标记时,它实际上已被删除。你再也见不到它了。
【讨论】: