AST 抽象语法树

Abstract syntax tree (代码)语法 -> 抽象得到 -> 树结构

一种表示源代码语法的表达结构:用树的结构来表达的语法结构,但不表示真是语法的细节,只关注结构上的和内容相关的细节

例如:if 条件判断语句就会分成三个分支(条件、body、else-body)

AST 的应用

不管是什么编程语言,解释型(js,python,ruby) or 编译型(c++,go,rust),在将他们的源代码翻译成电脑能读懂的代码的过程中都会经历转化为 AST 的过程,一种结构化信息进行对语言的语义分析验证编写的正确性。在此之后,抽象语法树就用来生成二进制码或者机器码。

此外,AST 还在别的地方被广泛用到,比如静态的代码分析(不执行代码,只了解代码结构,对代码进行二次创作或者重构),比如:编辑器里面总能展示出漂亮的语法高亮,也可以将 Python 代码转换到 JS 代码