编译原理简答题

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值