编译原理作业集-第七章

第七章 语义分析和中间代码产生

本章要点

1. 中间语言,各种常见中间语言形式;

2. 说明语句赋值语句布尔表达式控制语句的翻译;

3. 过程调用的处理;

4. 类型检查;

本章目标

掌握和理解中间语言,各种常见中间语言形式类型检查等内容。

本章重点

1.中间代码的几种形式,它们之间的相互转换:四元式、三元式、逆波兰表示3.赋值语句算术表达式、布尔表达式的翻译及其中间代码格式4.各种控制流语句的翻译及其中间代码格式5.过程调用的中间代码格式6.类型检查本章难点

2. 类型系统和类型检查;

作业题

一、单项选择题:

1. 布尔表达式计算时可以采用某种优化措施,比如A and B用if-then-else可解释为。

a. if A then true else Bb. if A then B else false;

c. if A then false else true; d. if A then true else false;

2. 为了便于优化处理,三地址代码可以表示成a. 三元式 b. 四元式 c. 后缀式 d. 间接三元式

3. 使用三元式是为了:

便于代码优化处理 b. 避免把临时变量填入符号表

节省存储代码的空间 提高访问代码的速度

4. if x relop y then L表示成四元式为 。

a. (relop,x,y,L);b. (relop,L,x,y);c. (relop,x,L,y);d. (L,x,y,relop);

8. 在编译程序中, 不是常见的中间语言形式。

a.波兰式;b. 三元式;c. 四元式; d. 抽象语法树;

9. 在编译程序中安排中间代码生成的目的是________。

a. 便于提高编译效率; b. 便于提高分析的正确性;

c. 便于代码优化和目标程序的移植;d.便于提高编译速度;

10. 按照教材中的约定,下面 不是类型表达式:

a. boolean;b. type-error;c. real;d. DAG;

11. 一个Pascal函数

function f ( a, b:char ) :↑integer;

……

其作用域类型是 :

a. char×integer;b. char×char;c. char×pointer(integer);d. integer×integer;

12. 因为标识符可用于多种情况,比如常量标识符、变量标识符、过程标识符等等。因此,在符号表中为了给出各个符号的标志,常给标识符引入一个属性kind,然后在相应产生式的语义动作中添加给kind属性赋值的语句。比如,在在产生式D(id:T的语义动作中添加赋值语句id.kind= 。

a. VAR; b. CONSTANT;c. PROC;d. FUNC;

13. 下面 情况下,编译器需要创建一张新的符号表。

a. 过程调用语句;b. 标号说明语句;c. 数组说明语句;d.记录说明语句;

14. 函数function f(a,b:char):↑integer;…

所以f函数的类型表达式为:

a. char×char→pointer(integer); b. char×char→pointer;

c. char×char→integer; d. char×char→integer (pointer)

15. 如果一个语言的编译器能保证编译通过的程序,在运行时不会出现类型错误,则称该语言是 。

a. 静态的;b. 强类型的;c. 动态的;d. 良类型的;

一.答案:1. b;2. d;3. b;4. d;5. c;6. c.;7. a;8. a;9. c;10. d;11. b;12. a;13. d;14. a;15. b;

二、填空题:

1. 语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的规则进行的。

2. 多目运算x:=y[i]的三元式表示为两部分:和。

3. 生成三地址代码时,临时变量的名字对应抽象语法树的。

4. 一个类型表达式或者是基本类型,或者由施加于其它类型表达式组成。

5.。tblptr和offset分别保存尚未处理完的过程的 和它们的offset,这两个栈顶的元素分别是正在处理的过程的的符号表指针和 。

7. 在一些pascal的实现中,如果说明中出现了没有名字的类型表达式,编译器这样处理:建立一个 来和每个声明的变量标识符相联系。

8. 赋值语句a:=b*-c+b*-c的后缀式为 。

9. 多目运算

编译原理last集c语言,编译原理作业集-第七章.doc相关推荐

  1. 阅读《大型网站技术架构:核心原理与案例分析》第五、六、七章

    阅读<大型网站技术架构:核心原理与案例分析>第五.六.七章,结合我们的系统,分析如何增加相应的功能,提高系统的可用性和易用性. 这三章主要讲述的是网站的可用性.伸缩性和可扩展性. 高可用架 ...

  2. 《Go语言圣经》学习笔记 第七章 接口

    <Go语言圣经>学习笔记 第七章 接口 目录 接口是合约 接口类型 实现接口的条件 flag.Value接口 接口值 sort.Interface接口 http.Handle接口 erro ...

  3. C语言学习-翁凯(第七章笔记)

    C语言学习-翁凯(第七章笔记) 第七章 7.1.1初见函数 素数求和 int m,n;int i;int cnt=0;int sum=0;scanf("%d %d",&m, ...

  4. c语言编译为机器语言过程,C语言编译全过程

    C语言编译全过程 编译的概念 编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成 ...

  5. c语言编译的手机软件,C语言编译工具

    软件介绍 C语言编译工具app是一款功能十分强大的手机编译.更换代码的软件工具,C语言编译工具app可以快速进行代码翻译.代码查找.替换等,它支持多种代码语言,欢迎下载! C语言编译工具app内容 简 ...

  6. c语言编译常见错误提示,c语言编译常见错误

    c语言编译常见错误 (2012-04-17 21:33:53) 标签: 杂谈 分类: 计算机 1."c" not an argument in function sum 该标识符不 ...

  7. 《自然语言处理(哈工大 关毅 64集视频)》学习笔记:第七章 句法分析技术

    视频列表: 43 句法分析技术(一) 44 句法分析技术(二) 45 句法分析技术(三) 46 句法分析技术(四) 47 句法分析技术(五) 43 句法分析技术(一) 第七章 句法分析技术 什么是句法 ...

  8. 编译原理实验代码c语言,编译原理实验 简单词法分析(含源代码和实验结果)

    可直接运行 原创!! 附录一 实验报告样式 <编译原理>实验报告 实验2 简单词法分析 姓名 陈婷婷 学号 1009050121 班级 计科1001班 时间: 2012/4/5 地点:文波 ...

  9. 编译原理公式计算器C语言,编译原理课程设计-简单计算器实现.doc

    编译原理课程设计-简单计算器实现 课程设计报告课程:编译原理学号:姓名:班级:11级嵌入式应用技术班教师:时间:2014年6月计算机科学与技术系 设计名称:简单计算器的实现设计内容.目的与要求:设计内 ...

最新文章

  1. 大数据时代医疗行业爆发 政策壁垒仍是最大障碍
  2. dns轮训python
  3. springboot+dynamic多数据源配置
  4. 学习C++的五十条忠告
  5. oracle11g linux 日期格式设置
  6. python提取tuple列表中的特定位置的值
  7. 2016.09.03【初中部 NOIP提高组 】模拟赛A总结
  8. html移动端即时翻译插件,React框架实现移动页面翻译是一种什么体验?
  9. 计算机SCI期刊征稿 | 影响因子最高10+,一区,毕业/评职称不要错过!
  10. 使用c语言函数的小结,C语言函数指针小结(1)
  11. 与大数据同行—学习和教育的未来 - 电子书下载(高清版PDF格式+EPUB格式)
  12. Cortex-M3 (NXP LPC1788)之外部中断操作
  13. win10 python安装以及编辑器pycharm安装
  14. 安卓获取浏览器上网记录_Android 获取自带浏览器上网记录
  15. TSL2561 GY2561 模块 MSP430 单片机 程序 STM32 程序 光强传感器 MSP430F5529
  16. 飞书和钉钉之间,差了几个企业微信?
  17. 不知道如何入门编程?最全在线教程网站汇总来了,还不赶快收藏
  18. 本以为能躺着进华为,结果陆续收到京东/滴滴/爱奇艺offer的我迷茫了
  19. 软考干货 | 备考进行ing!该怎么备考呢?
  20. Python恢复初始的pip list(清空所有包)

热门文章

  1. php 删除服务器上的文件,php如何删除服务器文件
  2. wireshark分析SIP协议——注册
  3. ARMV4,ARMV4T,ARMV4I的意义
  4. php公交查询系统源代码,基于Smarty公交查询系统的设计与实现(PHP,MySQL)
  5. java json 返回null,[] Spring4 MVC 返回json格式时候 设置不返回null值属性的有关问题...
  6. python中什么是数据驱动_利用Python如何实现数据驱动的接口自动化测试
  7. gin redis 链接不上_Redis 高并发问题,及解决方案!
  8. php标准输出重定向,python标准输出重定向方式
  9. java5的递归算法_java递归算法 java面试题(5)
  10. 利用envi对landsat8数据进行处理