语义分析的任务:
- 负责检查抽象语法树的上下文相关属性:
- 变量使用前,需要事先定义
- 变量运算时,类型需要匹配
- 变量的作用域问题
- ......
- 做一些相关的优化
上下文相关属性的检查方法:
- 关键在于构建一个变量的符号表用于存储每个被定义的变量的相关属性(类型,作用域,引用数,等等....),每次做必要的语义分析的时候,直接访问符号表,如果没有找到变量的定义,则直接报错。
代码等价优化:
- 优化时不能改变源程序代码语义
- 优化可以多种多样,总是可以更好。
- 优化代码原则上可以出现在编译器分析的各个阶段。