【编译原理】简要说明一下下列每个程序的主要任务是什么?

词法分析程序

1.完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。

2.从左至右地对源程序进行扫描,按照语言的词法规则识别空格和保留字和标识符,并产生相应单词的属性字。

语法分析程序

是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.

语义分析程序

语义分析是编译过程的一个逻辑阶段. 语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查, 进行类型审查.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.

中间代码生成程序

在进行了语法和语义的分析工作之后,编译程序将源程序变成了一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。

代码优化程序

这个阶段是对前阶段的中间代码进行变换或改造,目的是使生成的目标代码更为高效,即节省时间和空间。

目标代码生成程序

也就是把优化后的中间代码变换成指令代码或汇编代码。

符号表管理程序

1.收集符号属性
2.上下文语义的合法性检查的依据
3.作为目标代码生成阶段地址分配的依据


词法分析:也就是从左到右一个一个的读入源程序,识别一个单词或符号,并进行归类。

语法分析: 在词法分析的基础上,将单词序列分解成各类语法短语,如“程序”,“语句”,“表达式”等。

语义分析:审查源程序是否有语义的错误,当不符合语言规范的时候,程序就会报错。

中间代码生成:在进行了语法和语义的分析工作之后,编译程序将源程序变成了一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。

代码优化:这个阶段是对前阶段的中间代码进行变换或改造,目的是使生成的目标代码更为高效,即节省时间和空间。

目标代码生成:也就是把优化后的中间代码变换成指令代码或汇编代码。


(1)词法分析程序:从左到右扫描源程序,识别单词及其有关属性;
(2)语法分析程序:分析源程序的结构, 判别它是否为相应程序设计语言中的一个合法程序;
(3)语义分析程序:审查源程序有无语义错误,为代码生成阶段收集类型信息;
(4)中间代码生成程序:将源程序变成一种内部表示形式;
(5)代码优化程序:对前阶段产生的中间代码进行变换或进行改造,使生成的目标代码更为高效;
(6)目标代码生成程序:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码;
(7)表格管理程序:保存编译过程中的各种信息;
(8)出错处理程序:若编译过程中发现源程序存在错误,则报告错误的性质和错误发生的地点,有些还可以自动校正错误。

学如逆水行舟,不进则退
发布了545 篇原创文章 · 获赞 1575 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/weixin_42429718/article/details/104516185
今日推荐