ANTLR lexer操作将信息推送到解析器?
我不熟悉ANTLR4,想知道将信息从lexer操作推送到解析器的最佳方法 我有以下资料:ANTLR lexer操作将信息推送到解析器?,antlr,antlr4,Antlr,Antlr4,我不熟悉ANTLR4,想知道将信息从lexer操作推送到解析器的最佳方法 我有以下资料: LINE_DIRECTIVE: '#line' [ \t]+ INTEGER [ \t]+ STRING_LITERAL { System.out.println(getText()); skip(); } ; 基本上,我想将getText()推送到解析器 为line指令放置解析器规则不是一个选项,因为这样的line指令可以在任何地方发生 谢谢你的帮助 从lexer到解析器的通信不可能
LINE_DIRECTIVE: '#line' [ \t]+ INTEGER [ \t]+ STRING_LITERAL { System.out.println(getText()); skip(); }
;
基本上,我想将getText()
推送到解析器
为line指令放置解析器规则不是一个选项,因为这样的line指令可以在任何地方发生
谢谢你的帮助 从lexer到解析器的通信不可能以您想要的方式进行(如果我理解正确的话) 您可以做的是将您的
LINE\u指令
放在另一个频道上(而不是skip
token!)。有默认频道
(或默认频道
)和隐藏频道
,您可以介绍更多频道1。解析器仅从DEFAULT
通道读取令牌,但您可以在运行时2更改
一,
2谢谢!在我的情况下,使用隐藏通道是完美的解决方案。