编译原理(龙书):第一章部分题目参考答案
目录
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
编译原理(龙书):第一章部分题目参考答案相关推荐
- 龙书《编译原理》摘要 第一章 引论
文章目录 0. 前言 1. 语言处理器 2. 编译器基本结构 3. 一些常用术语 0. 前言 最近开始研究TVM源码,总感觉自己抓不住主线. 说是实现了新语言Relay,里面那些奇怪的东西是什么?是类 ...
- 计算机课第一章答案,计算机应用基础第一章课后习题参考答案答案
计算机应用基础第一章课后习题参考答案答案 第1章 课后习题 一.简答题: 1.电子计算机的发展大致可分哪几代?请说出各个时代电子计算机的特点. 1. 第一代电子计算机 第一代电子计算机是电子管计算机, ...
- 《编译原理-龙书》练习第4章
4.2 上下文无关文法 **4.2.7节中L={a^nb^n|n>=1}怎么用文法表示? S -> aAb A -> ab| ε 4.2.1 1) E -> EE* -> ...
- 手撕龙书 第一章 认识编译器
编译原理 编译的原理 什么叫编译? 编排和翻译. 编排什么? 编排人理解的语言. 翻译成什么? 翻译成机器能理解的语言. 根据以上, 所以 编译=高级编程语言–>中间代码–>最终的机器语言 ...
- 编译原理期末复习—第一章概论
后续会更新编译原理其他章节(有问题请指正) 文章目录 前言 一.程序设计语言的发展 1.机器语言 2.汇编语言 3.程序设计语言 二.基本术语解释 前言 参考了<编译原理>王生原,张素琴等 ...
- 编译原理(龙书):第四章部分题目参考答案
目录 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 ...
- 编译原理(龙书):第六章部分题目参考答案
目录 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 ...
- 《编译原理-龙书》练习第2章
第2章 一个简单的语法制导翻译器 2.2 语法定义 主要描述了"上下文无关文法" 2.2.1 1) S1 = aa+ S2 = S1a* 2) * + a ...
- 《编译原理-龙书》练习第3章
3.1 词法分析器的作用 3.1.1 float limitedSquare ( x ) { float x ; r ...
最新文章
- 给你一份长长长的 Spring Boot 知识清单(上)
- 从道的角度来论述大数据对企业价值
- idea连接nefu练习数据库
- 洛谷——P1328 生活大爆炸版石头剪刀布
- spring mvc 拦截器 HandlerInterceptor 的使用
- Envoy实现.NET架构的网关(三)代理GRPC
- linux里的vmware16有中文吗,vmware 16.1专业版_linux版本下载_vmware 16.1下载_5分享
- MySQL中实现连续日期内数据统计,缺省天数0补全
- 配合Opencv2.4.9,CMake3.12.1和VS2010在win10下构建项目踩坑记录
- python分号_python分号_python 分号_python加分号 - 云+社区 - 腾讯云
- 【转】几种不同格式的json解析
- 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
- 剑指Offer(第二版)-思路简述-第一期(简单难度)
- qq等级查询php源码,基于PHP的QQ等级计算器
- 【转】推送消息推送机制
- php九宫格图片合成,php实现微信中的图片合并-九宫格图片
- IDM浮动条无法弹出怎么办?
- Maven 自己下载依赖包安装到本地仓库
- Mac使用XQuartz调图形化总结
- 只需10分钟,给你全世界!水经注全球三维离线GIS系统