Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ANTLR lexer操作将信息推送到解析器?_Antlr_Antlr4 - Fatal编程技术网

ANTLR 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到解析器的通信不可能

我不熟悉ANTLR4,想知道将信息从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

谢谢!在我的情况下,使用隐藏通道是完美的解决方案。