Java 中的抽象语法树 (AST)

2025年3月17日 | 阅读 3 分钟

抽象语法树(Abstract Syntax Tree,AST)是一种用于表示计算机语言抽象语法结构的树状结构。树的每个节点都表示源代码中的一个构造。

通常,AST 是编译器语法分析阶段的输出。它最终对编译器的输出有显著影响,并且经常充当编译器在多个阶段中所需的程序中间表示。

在编译器中,AST 主要用于验证代码的准确性。如果生成的树中存在错误,则会打印编译器错误消息。某些构造,如隐式类型,无法在上下文无关的语言中表示;因此,使用了抽象语法树(AST)。尽管抽象语法树对编程语言具有高度特异性,但对通用语法树的研究仍在进行中。通常,Java Model 的 ICompilationUnit 为 AST 的创建提供了基础。

示例

一般来说,表达式 id + id * id 的流程图会生成如下所示的语法树。

Abstract Syntax Tree (AST) in Java

抽象语法树将如下所示:

Abstract Syntax Tree (AST) in Java

实施

文件名: AST.java

在这种情况下,我们将创建独特的 Java 源代码,这些源代码对应于相应 Java 源代码的 AST。

以上源代码的 AST

您现在一定对如何创建 AST 或上述代码是如何为此目的生成的感到困惑。要找出答案,只需按照正确的顺序执行简单的步骤即可。

  • 在您的本地桌面中启动源代码。
  • 获取 Checkstyle 命令行工具。

使用终端中的 Checkstyle 审计程序。

审计后,在终端中运行以下命令以获取所需代码的 AST:Java -jar -t YourFile.java checkstyle-8.43-all.jar

AST 现在已准备就绪。


下一个主题Java 中的别名