Antlr 从解析树中排除某些标记
我想从antlr4中的解析树中排除某些标记 假设我有这个定义:Antlr 从解析树中排除某些标记,antlr,antlr4,Antlr,Antlr4,我想从antlr4中的解析树中排除某些标记 假设我有这个定义: assignStatement: assignable EQ expression EOS; EQ: '='; EOS: ';'; 生成的解析树包含assignable、EQ、expression和EOS作为assignStatement的子级。这里有没有办法去掉EQ和EOS,因为我只在解析时需要它们来进行匹配?ANTLR 4不会从解析树中忽略匹配的终端。虽然您的应用程序不需要访问这些令牌,但我们的经验是,使用以前编写的语法的新
assignStatement: assignable EQ expression EOS;
EQ: '=';
EOS: ';';
生成的解析树包含
assignable
、EQ
、expression
和EOS
作为assignStatement
的子级。这里有没有办法去掉EQ
和EOS
,因为我只在解析时需要它们来进行匹配?ANTLR 4不会从解析树中忽略匹配的终端。虽然您的应用程序不需要访问这些令牌,但我们的经验是,使用以前编写的语法的新应用程序经常需要访问早期应用程序不需要的元素。通过在解析树中包含所有元素,我们提前考虑了这种情况,以提高使用ANTLR 4的应用程序的长期可维护性