banner
NEWS LETTER

编译概述

Scroll down

翻译程序

  • 编译程序(编译器):把源程序翻译为目标程序
  • 解释程序(解释器):直接执行源程序

编译阶段的任务


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

分析阶段

词法分析

任务:生成记号流

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

语法分析

任务:生成语法树

- 利用下面的定义分析表达式
- 利用下面的定义分析语句
- 当然,还有函数的定义。总之就是把所有的定义在语言中的部分进行检查,看看语法有没有问题

语义分析

任务:检查语义是否正确,尤其不同类型之间的运算,数组的下标是否合法,形参实参个数是否匹配等等

综合阶段

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

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

其他文章
目录导航 置顶
  1. 1. 翻译程序
  2. 2. 编译阶段的任务
    1. 2.1. 分析阶段
      1. 2.1.1. 词法分析
      2. 2.1.2. 语法分析
      3. 2.1.3. 语义分析
    2. 2.2. 综合阶段
请输入关键词进行搜索