调用getText() - 在使用antlr生成的解析器解析内容时,Context-Object上的方法返回,以防在解析器中忽略所有WS-Token(可能经常出现这种情况),返回串联令牌,它们之间没有任何空格。例如。: 解析像
这样的陈述Hello beautiful World !
使用解析规则
stmnt: 'Hello' 'beautiful' 'World' '!' ;
WS : ( '\t' | ' ' | '\r' | '\n')+ -> skip;
然后在处理stmnt-Rule时在Context上调用getText()将返回以下字符串:“HellobeautifulWorld!”
我的想法是创建一个方法,迭代上下文并将所有标记连接在一起与它们之间的ws 。有谁知道是否有方法为此创建非特定于上下文的解决方案?
答案 0 :(得分:0)
将-> skip
替换为-> channel(HIDDEN)
:
WS : ( '\t' | ' ' | '\r' | '\n')+ -> channel(HIDDEN);
当解析器从HIDDEN
频道馈送时,这将导致空格放置在DEFAULT
频道上。但是,getText()
将使用两个通道,在调用时保留空格。