翻译程序
- 编译程序(编译器):把源程序翻译为目标程序
- 解释程序(解释器):直接执行源程序
编译阶段的任务

- 分析阶段:根据源语言的定义分析源程序
1. 词法分析
2. 语法分析
3. 语义分析
- 综合阶段:根据分析结果构造目标程序
1. 中间代码生成
2. 代码优化
3. 目标代码生成
- 符号表管理以及错误诊断处理
分析阶段
词法分析
任务:生成记号流

-
扫描:对构成源程序的字符串进行分解,识别出每个独立的单词(lexeme),将其转化为token并组织为记号流。
(上面是kimi讲的,我觉得挺好理解的)
- 注释和空格都被跳过
- 符号表:把识别出的标识符放入符号表(非块结构语言)。
-
对于每个记号,除了类别标记如:”乘号,赋值号,标识符“之外,还需要有属性值,比如常量和标识符。常量的属性值一般就是其真实值,而标识符的属性值一般是其在符号表中的指针。
语法分析
任务:生成语法树

- 利用下面的定义分析表达式
- 利用下面的定义分析语句
-
当然,还有函数的定义。总之就是把所有的定义在语言中的部分进行检查,看看语法有没有问题
语义分析
任务:检查语义是否正确,尤其不同类型之间的运算,数组的下标是否合法,形参实参个数是否匹配等等

综合阶段
这部分PPT的讲述就足够简洁,因此直接放PPT了






如果您喜欢我的文章,可以考虑打赏以支持我继续创作.