编译原理 第一章引论
什么是编译
内容
词法分析
任务
工作
词法错误
语法分析
任务
依据
工具
程序结构由递归规则表示
表达式的表示
- 任何标识符都是表达式
- 任何常熟(整常数、实常数)是表达式
- 若表达式1和表达式2都是表达式,那么表达式1+表达式2,表达式1*表达式2都是表达式
语句的表示
- 标识符:=表达式 是语句
- while(表达式) do 语句和if(表达式) then 语句 else 语句 都是语句
工作
- 分析句子
- 找出不符合语法规则的地方
- 将出错地方、出错性质输出
语法错误
- 括号不匹配
- else没有匹配的if
- 变量未定义
语义分析
任务
审查源程序有无语义错误,为代码生成阶段收集类型信息
工作
确定类型,类型和运算和理性检查,识别语法成分的含义、静态语义检查
语义错误
变量不合法、不相容,控制条件不正确等
中间代码的生成
中间代码
一种结构简单,含义明确的信号系统
原则
*. 容易生成
*. 容易将它翻译成目标代码
四元式
(运算符,运算对象1,运算对象2,结果)
任务
进行了语法分析和语义分析后,将源程序变成一种内部表示形式
写法
(待补充。。。)
代码优化
任务
对前阶段产生的中间代码进行变换或改造
目的
使生成的目标代码更为高效,即省时间和空间
做法
(待补充。。。)
目标代码生成
任务
把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码
特点
与硬件系统结构和指令含义有关,涉及到硬件系统功能部件得运用、机器指令得选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等
编译程序的结构
(待补充。。。)
表格管理程序
*. 存储各种信息
*. 构造、查找或更新有关表格
出错处理程序
*. 报告错误的性质,错误发生的地点
*. 将错误造成的影响限制在最小范围内
*. 自动校正错误
浙公网安备 33010602011771号