我想从 antlr4 的解析树中排除某些标记。
假设我有这个定义:
assignStatement: assignable EQ expression EOS;
EQ: '=';
EOS: ';';
生成的解析树包含 assignable
, EQ
, expression
和EOS
作为assignStatement
的 child 。有什么办法可以摆脱EQ
和EOS
在这里,因为我只在解析时需要它们用于匹配目的?
最佳答案
ANTLR 4 不会从解析树中忽略匹配的终结符。虽然您的应用程序不需要访问这些 token ,但我们的经验是,使用以前编写的语法的新应用程序经常需要访问早期应用程序不需要的元素。通过将所有元素包含在解析树中,我们提前考虑了这种情况,以提高使用 ANTLR 4 的应用程序的长期可维护性。
关于antlr - 从解析树中排除某些标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22149117/