源程序分析:
1.线性分析:线性分析中 从左到右 阅读构成源程序的字符流,而且把字符流分组成多个记号,记号就是具有整体含义的字符序列;
2.层次分析:字符串 或者记号在层次分析上划分为具有一定层次的多个嵌套组 每个嵌套组都有整体的含义
3.语义分析:进行某些检查 确保程序各个组成部分确实是有意义组成的。
- 词法分析 :线性分析 被称为词法分析 或者扫描
比如:position=init+rate * 60 中字符将被分为以下记号组
1.position
2.=
3.init
4.+
5.rate
6.*
7.60 -
语法分析:层次分析成为语法分析 ,它把源程序进一步分组。产生用于生成代码的语法短语。
比如 position=init+rate * 60 中 rate * 60 就是一个逻辑单元
如下图所示:
image.png

程序就是 表达式+ 运算符
- 语义分析:主要检查源程序语义错误,并且收集代码生成阶段用的类型信息。
语义分析利用语法分析阶段确定的层次结构来识别来识别表达式的操作数和操作符。比如类型检查就是就是语义分析的一个重要组成。
编译器阶段

- 符号表管理:编译器的一个基本功能就是记录源程序中使用的标识符并收集与每个标识符 相关的各种属性信息。标识符的属性信息表明该标识符的位置 类型 作用域等信息
各个分析阶段

网友评论