我想在antlr4中从解析树中排除某些令牌。
说我有这个定义:
assignStatement: assignable EQ expression EOS;
EQ: '=';
EOS: ';';
生成的解析树包含assignable
,EQ
,expression
和EOS
作为assignStatement
的子项。有没有办法在这里摆脱EQ
和EOS
,因为我只是在分析时需要它们才能进行匹配?
答案 0 :(得分:2)
ANTLR 4不会从解析树中省略匹配的终端。虽然您的应用程序不需要访问这些令牌,但我们的经验是使用以前编写的语法的新应用程序经常需要访问早期应用程序没有的元素。通过在解析树中包含所有元素,我们提前考虑这种情况,以提高使用ANTLR 4的应用程序的长期可维护性。