Java 在ANTLR中处理ParserContext的标记

Java 在ANTLR中处理ParserContext的标记,java,parsing,antlr,Java,Parsing,Antlr,在使用antlr生成的解析器解析内容时,如果解析器中忽略了所有WS-Token(这种情况可能非常常见),则在上下文对象上调用getText()方法将返回标记的串联,并且标记之间没有任何空格。例如。: 解析语句,如 Hello beautiful World ! 使用解析规则 stmnt: 'Hello' 'beautiful' 'World' '!' ; WS : ( '\t' | ' ' | '\r' | '\n')+ -> skip; 然后在处理stmnt规则时对上下文调用ge

在使用antlr生成的解析器解析内容时,如果解析器中忽略了所有WS-Token(这种情况可能非常常见),则在上下文对象上调用getText()方法将返回标记的串联,并且标记之间没有任何空格。例如。: 解析语句,如

Hello beautiful World ! 
使用解析规则

stmnt: 'Hello' 'beautiful' 'World' '!' ; 
WS : ( '\t' | ' ' | '\r' | '\n')+ -> skip;
然后在处理stmnt规则时对上下文调用getText()将返回以下字符串:“HellobeautifulWorld!”


我的想法是创建一个方法,该方法通过上下文进行迭代,并将所有标记连接在一起,它们之间有ws。是否有人知道是否有一种方法可以创建一个不特定于上下文的解决方案

->skip
替换为
->频道(隐藏)


这将导致空格被放置在
隐藏
通道上,而解析器从
默认
通道馈送。但是,
getText()
将同时使用两个通道,在调用时保留空格。

如果将
->skip
替换为
->channel(HIDDEN)
,会发生什么情况?谢谢您的回答!工作正常,不知道通道(隐藏)命令。我要做的工作肯定少了很多。酷,那样的话,我会回答的。
WS : ( '\t' | ' ' | '\r' | '\n')+ -> channel(HIDDEN);