目录

1.1.1

1.1.2

1.1.3

1.1.4

1.6.1

1.6.3

1.6.4


1.1.1

What is the difference between a compiler and an interpreter?

编译器:负责把一种编程语言编写的源码转换成另外一种计算机代码,后者往往是以二进制的形式保存。这个转换的过程通常的目的是生成可执行的程序。编译器把源代码转换成其他的更低级的代码(例如二进制码、机器码),但是不会执行它。

解释器:直接一条一条执行由编程语言或脚本语言编写的代码,并不会把源代码预编译成机器码。解释器会读取源代码,并且直接生成指令让计算机硬件执行,不会输出另外一种代码。

1.1.2

What are the advantages of (a) a compiler over an interpreter (b) an interpreter over a compiler?

(a) 编译器的优点是:效率高,编译器执行的编译型程序比解释器执行程序快,能产生更快的程序。

(b) 解释器的优点是:易于进行调试,跨平台。

1.1.3

What advantages are there to a language-processing system in which the compiler produces assembly language rather than machine language?

更容易调试与输出。由于汇编是机器指令的助记符,一个汇编指令就对应一条机器指令(特殊指令除外),因此调试更为方便,同时也更容易生成。

1.1.4

A compiler that translates a high-level language into another high-level language is called a source-to-source translator. What advantages are there to using C as a target language for a compiler?

首先,几乎各种平台都有对C语言实现的支持。其次,C语言是最接近汇编语言的高级语言,可以很方便地实现文件读写与分析,可以很方便的控制包括寄存器在内的几乎所有硬件。最后,C语言减少了很多实现细节,因此可以更加方便地进行移植。

1.6.1

For the block-structured C code of Fig.1.13(a),

indicate the values assigned to w, x, y, and z.

Line 2: i=4(全局变量), j=5(全局变量)

Line 3: i=4(全局变量), j=7(局部变量)

Line 4: i=6(全局变量), j=7(局部变量)

Line 5: i=6(全局变量), j=7(局部变量)

w=13(全局变量)

Line 7: i=6(全局变量), j=5(全局变量)

x=11(全局变量)

Line 8: i=8(局部变量), j=5(全局变量)

Line 9: i=8(局部变量), j=5(全局变量), y=13(全局变量)

Line 11: i=6(全局变量), j=5(全局变量), z=11(全局变量)

综上,w=13,x=11,y=13,z=11

1.6.3

For the block-structured code of Fig.1.14, assuming the usual static scoping of declarations, give the scope for each of the twelve declarations.

块之间的树形结构如右图所示。

各个块中定义的变量,声明范围如下表所示。

w

x

y

z

B1

B1,B2,B3,B4,B5

B1,B2,B3,B4,B5

B1,B2,B3,B4,B5

B1,B2,B3,B4,B5

B2

B2,B3

B2,B3

B3

B3

B3

B4

B4,B5

B4,B5

B5

B5

B5

当一个结点中的计算语句中包含某个变量时,先检查在该块的计算部分之前是否存在变量的定义,如果有,那么就是该变量。如果没有,就检查他的父结点(块),查看他父结点中计算部分之前中有无该变量的定义,以此类推。

1.6.4

What is printed by the following C code?

#define a (x+1) 即用x+1文本替换代码中的a;

则第二行:x=2

主程序先执行b()函数:x=x+1,即x=3,输出3

再执行c()函数:x=1,输出x+1,即2

综上所述,程序输出为:

3

2

编译原理(龙书):第一章部分题目参考答案相关推荐

  1. 龙书《编译原理》摘要 第一章 引论

    文章目录 0. 前言 1. 语言处理器 2. 编译器基本结构 3. 一些常用术语 0. 前言 最近开始研究TVM源码,总感觉自己抓不住主线. 说是实现了新语言Relay,里面那些奇怪的东西是什么?是类 ...

  2. 计算机课第一章答案,计算机应用基础第一章课后习题参考答案答案

    计算机应用基础第一章课后习题参考答案答案 第1章 课后习题 一.简答题: 1.电子计算机的发展大致可分哪几代?请说出各个时代电子计算机的特点. 1. 第一代电子计算机 第一代电子计算机是电子管计算机, ...

  3. 《编译原理-龙书》练习第4章

    4.2 上下文无关文法 **4.2.7节中L={a^nb^n|n>=1}怎么用文法表示? S -> aAb A -> ab| ε 4.2.1 1) E -> EE* -> ...

  4. 手撕龙书 第一章 认识编译器

    编译原理 编译的原理 什么叫编译? 编排和翻译. 编排什么? 编排人理解的语言. 翻译成什么? 翻译成机器能理解的语言. 根据以上, 所以 编译=高级编程语言–>中间代码–>最终的机器语言 ...

  5. 编译原理期末复习—第一章概论

    后续会更新编译原理其他章节(有问题请指正) 文章目录 前言 一.程序设计语言的发展 1.机器语言 2.汇编语言 3.程序设计语言 二.基本术语解释 前言 参考了<编译原理>王生原,张素琴等 ...

  6. 编译原理(龙书):第四章部分题目参考答案

    目录 4.2.1 4.2.2 4.2.3 4.3.1 4.4.1 4.4.3 4.4.4 4.5.1 4.6.2 4.6.5 4.6.6 4.7.4 4.7.5 4.2.1 4.2.2 4.2.3 4 ...

  7. 编译原理(龙书):第六章部分题目参考答案

    目录 6.1.1 6.1.2 6.2.1 (1) (3) 6.3.1 6.4.1 6.4.2 6.4.3 6.4.6 6.5.1 6.6.1 (2) 6.6.2 6.6.4 6.7.1 6.7.2 6 ...

  8. 《编译原理-龙书》练习第2章

    第2章 一个简单的语法制导翻译器 2.2 语法定义 主要描述了"上下文无关文法" 2.2.1 1) S1 = aa+ S2 = S1a* 2)              * + a ...

  9. 《编译原理-龙书》练习第3章

    3.1 词法分析器的作用 3.1.1          float     limitedSquare     (      x     )     {     float     x     ; r ...

最新文章

  1. 给你一份长长长的 Spring Boot 知识清单(上)
  2. 从道的角度来论述大数据对企业价值
  3. idea连接nefu练习数据库
  4. 洛谷——P1328 生活大爆炸版石头剪刀布
  5. spring mvc 拦截器 HandlerInterceptor 的使用
  6. Envoy实现.NET架构的网关(三)代理GRPC
  7. linux里的vmware16有中文吗,vmware 16.1专业版_linux版本下载_vmware 16.1下载_5分享
  8. MySQL中实现连续日期内数据统计,缺省天数0补全
  9. 配合Opencv2.4.9,CMake3.12.1和VS2010在win10下构建项目踩坑记录
  10. python分号_python分号_python 分号_python加分号 - 云+社区 - 腾讯云
  11. 【转】几种不同格式的json解析
  12. 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
  13. 剑指Offer(第二版)-思路简述-第一期(简单难度)
  14. qq等级查询php源码,基于PHP的QQ等级计算器
  15. 【转】推送消息推送机制
  16. php九宫格图片合成,php实现微信中的图片合并-九宫格图片
  17. IDM浮动条无法弹出怎么办?
  18. Maven 自己下载依赖包安装到本地仓库
  19. Mac使用XQuartz调图形化总结
  20. 只需10分钟,给你全世界!水经注全球三维离线GIS系统

热门文章

  1. 介绍几个photoshop cs4值得一提的新功能
  2. [工具] Citavi – 文献管理软件(笔记记录)
  3. 团队协作工具新锐—Teamin使用初体验
  4. python pgm转jpg批处理
  5. 第一章 Elastic Stack入门
  6. uniapp 电商app 步骤条功能的使用
  7. 白内障、散光、老花、眼压高,一个方法全部解决
  8. 单击音乐图标,实现音乐的暂停与播放。
  9. 补码计算,计算机码制,数制练习题
  10. vue打包时semver.js版本报错