【问题标题】:How can I build an AST using ANTLR4? [duplicate]如何使用 ANTLR4 构建 AST? [复制]
【发布时间】:2013-04-04 23:15:07
【问题描述】:

我有一个构建抽象语法树的 ANTLR3 语法。我正在考虑升级到 ANTLR4。然而,ANTLR4 似乎只构建解析树而不是抽象语法树。例如,output=AST 选项不再被识别。此外,“AST”“抽象语法”都没有出现在“The Definitive ANTLR4 reference”的文本中。

我想知道我是否遗漏了什么。

我的应用程序目前知道如何爬取由 ANTLR3 生成的 AST。将其更改为处理解析树并非不可能,但这需要一些工作。在我开始这条路之前,我想确定这是必要的。

【问题讨论】:

标签: antlr4 abstract-syntax-tree


【解决方案1】:

ANTLR 4 基于语法而不是基于任意 AST 运算符和/或重写规则的 AST 生成解析树。这允许 ANTLR 4 自动生成侦听器和访问者接口,您可以使用语法在代码中实现这些接口。

对于从版本 3 升级现有应用程序的用户来说,变化可能是巨大的,但作为一个整体,新系统更易于使用和(尤其是)维护。

【讨论】:

  • 谢谢。我能理解新系统的优势,这就是我想升级到它的原因。我愿意做必要的事情来实现这一点。我只是想确保在开始这项工作之前我了解情况。听起来像我。
  • 我可以把ParserRuleContext作为AST的节点吗?
猜你喜欢
  • 2015-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多