问题描述
使用ANTLR4构建语法解析器,通常跳过(或隐藏)所有空白字符(空格,制表符,回车),构建如下语法规则。但某些情况下需要找出忽略掉的空白字符,原样输出原始的解析文本(包括空白字符)。
据ANTLR提供的文档描述,使提供的getText()方法可以获取某个语法规则能够识别的文本,这些文本是该规则下子节点识别到文本的组合,不包含隐藏通道以及被跳过的token(空白字符)。
使用visitor模式重写遍历抽象语法树的方法,通过getText()
方法获取某个节点识别到的文本,且文本中未包含空白字符。
public Object visitEdgeElement(EdgeElementContext ctx) {
System.out.println("output: " + ctx.getText())