我正在递归遍历antlr解析树,并且我想在树中编辑TerminalNodes的文本。我希望能够对任何ParseTree做到这一点,并且我不想为我可能遇到的每个ParseTree写一个特定的Visitor。
我仔细阅读了《权威ANTLR4参考》,发现antlr对树重写没有任何直接支持。我正在寻找任何可能的解决方法或替代解决方案。
'~(?:^|\b) (?<![\'"]) (\w+) (?![\'"]) :~mx'
答案 0 :(得分:1)
TerminalNode
具有成员getSymbol()
,该成员返回词法化标记。通常,这是一个CommonToken
实例,它允许设置文本和其他属性,例如行号,类型等。ParseTree.getText()
除了要求符号提供文本外,什么也不做(这就是您所要做的)可以设置或来自输入流的内容。