GO/ast编程-编译原理剩余部分
2024-01-13 本文已影响0人
温岭夹糕
目录
1.语义分析
又叫类型检查或上下文相关分析,负责检查抽象语法树的上下文相关属性(语法分析是利用上下文无关文法),包括:
- 变量在使用前先进行声明
- 每个表达式都有合适的类型
- 函数的调用和定义一致
。。。。
再通俗点解释:
语法分析阶段,我们只能判断一个句子是不是合法,即是否符合文法,不能给出句子的含义,句子的含义是通过语义分析体现出来的,如下,我们就能知道该句子是要进行求和运算
3+4
语义分析就会去检测加号两边的子树结构是否合法,即相同类型,所以又叫类型检查
image.png
1.1符号表
符号表数据结构用来存储程序中的变量相关信息,如类型、作用域和访问控制信息等,符号表用来帮助语义分析进行上下文相关分析
2.编译器后端
image.png2.1代码生成
image.pngimage.png
3.代码优化
又叫编译优化,为什么需要进行代码优化?
- 源语言和目标语言有差异
- 程序员编写的代码不是最优的,编译器帮忙纠正
- 让程序比以前更小,更快等