Visual LabINTERACTIVE LEARNING
计算机基础精校教程

从源码到抽象语法树

用最短路径理解词法分析、语法分析、AST 与语义分析各自负责什么。

AST编译器Parser
入门预计 6 分钟查看源文 ↗

AST

💡 提示

AST (Abstract Syntax Tree) 是一种用于表示代码结构的树状数据结构。

它的作用是将源代码转换为一系列的节点,每个节点代表代码中的一个语法元素,例如变量、函数、循环等。生成 AST 的流程可以简单概括为以下几个步骤:

  1. 词法分析(Lexical Analysis):该步骤将源代码分解成一个个的词法单元(tokens),例如关键字、标识符、运算符、常量等。这些词法单元是编程语言中最小的语法单位。
  2. 语法分析(Parsing):在这一步骤中,词法分析器生成的词法单元会被组织成一个语法树(Parse Tree)。语法树反映了代码中的语法结构,但并没有考虑运算符的优先级和结合性。
  3. 构建抽象语法树(Build AST):通过对语法树进行一系列的转换和优化,我们可以得到抽象语法树。这些转换包括消除冗余节点、处理运算符优先级和结合性等。抽象语法树更加侧重于代码的逻辑结构,而不是具体的语法细节。
  4. 语义分析(Semantic Analysis):在这一步骤中,对抽象语法树进行进一步的分析,以确定代码的语义是否正确。这包括类型检查、变量声明与引用的一致性检查、函数调用的匹配等。

AST 生成流程可以根据具体编程语言和工具有所不同,但以上是一般流程的主要步骤。生成 AST 的过程对于编译器、解释器和静态分析工具等都非常重要,因为它提供了代码结构的抽象表示,方便后续的处理和分析。