AST概述

This commit is contained in:
aiyingfeng 2023-07-16 21:26:48 +08:00
parent 9513faa4bb
commit 0400aaeebe

View File

@ -2,9 +2,15 @@
## ast 构建过程
源码--》词法分析--》生成词法数组--》语法parser--》ast树
源码--》词法分析--》生成词法数组--》语法分析--》ast树
浏览器会把源码转换成ast树再转换成字节码
1. 源码首先有源代码它是你要分析和构建AST的输入。
2. 词法分析Lexical Analysis源代码经过词法分析器Lexer处理将源代码分解为一个个的词法单元tokens。每个词法单元代表了源代码中的一个基本语义单元例如关键字、标识符、运算符、常量等。词法分析器会生成词法单元数组。
3. 语法分析Parsing词法单元数组传递给语法分析器Parser它根据语法规则进行处理构建AST。语法分析器使用上下文无关文法Context-Free Grammar来分析源代码的语法结构并根据语法规则将词法单元组织成一个层次结构的树形数据结构即AST。
4. AST构建在语法分析的过程中根据语法规则和语法分析器的规则构建AST的节点。每个节点代表了源代码中的一个语法结构例如表达式、语句、函数等。每个节点包含了相应的属性例如节点类型、操作符、操作数等。AST的构建是递归进行的从最底层的词法单元开始构建逐步组合形成更复杂的语法结构。
5. 语义分析Semantic AnalysisAST构建完成后进行语义分析。语义分析器对AST进行遍历检查代码的语义正确性例如类型检查、变量声明检查、作用域检查等。在这个过程中可以进行符号表的构建以记录变量和函数的信息。
6. 代码生成或解释执行在完成语义分析后可以进行代码生成或解释执行。代码生成将AST转换为目标机器代码或字节码以便直接在计算机上执行。解释执行则是逐行解释AST并按照语义执行对应的操作。这取决于具体的编程语言和编译器/解释器。
7. 计算机执行最终计算机根据生成的目标机器代码或通过解释执行AST执行程序并产生相应的结果。
![debugger](./img/1.png)