编译原理简答题
分类:
文章
•
2024-08-08 17:14:34
-
什么是编译程序?
编译程序是一种翻译程序,它能够把某种
语言的程序转换成另一种语言的程序,而后
者与前者在逻辑上是等价的。
-
编译的六个阶段是什么? 每个阶段的主要任务是什么?
-
词法分析
输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词(也称单词符号,或简称符号
-
语法分析
语法分析的任务:在词法分析的基础上,根据语言的语法规则,把单词符号分解成各类语法单位(语法范畴),如“短语”、“句子”、“表达式”、“程序段”等。
-
语义分析
审查源程序有无语义错误,为代码生成阶段收集类型信息。
① 分析语法成分的含义和用途,
② 应进行的运算和操作,
③ 同时进行相应的语义检查。
如:在说明语句中是否有矛盾的类型说明。
表达式中,类型不匹配。
过程调用中,实参和形参的配合。
-
中间代码生成
根据语义规则产生一种介于源语言与目标代码之间的一种中间代码。
中间代码是不依赖于机器但是又便于生成依赖于机器的目标代码的一种结构简单、含义明确的记号系统。
-
代码优化
对前阶段产生的中间代码进行加工变换,以期在最后阶段能产生更为高效(省时间和空间)的目标代码。
-
目标代码生成
这一阶段的任务:把中间代码(或经优化
处理后)变换成特定机器上的低级语言代码。
它有赖于硬件系统结构和机器指令含义
-
编译的前端和后端的定义
• 前端包括编译逻辑结构中的分析部分,即词法分析、语法分析、语义分析和中间代码生成,除此还包括符号表建造及相应分析中的错误处理以及与机器无关的优化部分。
• 后端包括与目标机有关的部分,即综合部分,它包括目标代码生成及生成期间对符号表的相应检索操作和错误处理操作,以及与机器相关的代码优化部分。
-
遍的定义
遍,也称做趟,是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成上述一个阶段或多个阶段的工作。
-
编译和解释的区别
• 编译:高级语言翻译成目标代码后,再运行。
• 解释:解释程序是一种语言翻译程序,读入一条语句,解释一条语句,执行一条语句,边读入边执行。
- DFA与NFA的区别是什么?