antlr - 从解析树中排除某些标记

标签 antlr antlr4

我想从 antlr4 的解析树中排除某些标记。

假设我有这个定义:

assignStatement: assignable EQ expression EOS;

EQ: '=';
EOS: ';';

生成的解析树包含 assignable , EQ , expressionEOS作为assignStatement的 child 。有什么办法可以摆脱EQEOS在这里,因为我只在解析时需要它们用于匹配目的?

最佳答案

ANTLR 4 不会从解析树中忽略匹配的终结符。虽然您的应用程序不需要访问这些 token ,但我们的经验是,使用以前编写的语法的新应用程序经常需要访问早期应用程序不需要的元素。通过将所有元素包含在解析树中,我们提前考虑了这种情况,以提高使用 ANTLR 4 的应用程序的长期可维护性。

关于antlr - 从解析树中排除某些标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22149117/

相关文章:

java - 使用 ANTLR 解析日志文件

java - ANTLR忽略oracle脚本中的 "/"

java - 处理 ANTLR4 中的错误

c++ - antlr cpp 目标的 header 部分不允许使用默认参数的外部函数

ANTLR4 - 如何在 ANTLR 中获取 token TYPE 作为 token 文本?

java - ANTLR,表达式语法问题

java - 在 Ubuntu 中设置 Antlr CLASSPATH

ANTLR4 访问者子树检查

antlr - 否定内部词法分析器和解析器规则