抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
那么在通常情况下如何生成一颗AST呢?那么就需要用到以下两种工具:
词法分析器(lexer)的作用是将字符序列转换为标记(token)序列,并将序列作为流输入到语法分析器(parser)中,词法分析器通常不会关心标记之间的关系。
语法分析器(parser)获取从词法分析器(lexer)获取的单词流,对其进行语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象语法树等层次化的数据结构)。
在对parser生成的语法树进行一些信息处理的过程,就能得到一颗语法树啦~在实际情况中我们通常会使用像ANTLR这样的语法解析工具来生成语法树以获取我们想要的信息和代码逻辑关系。