编译原理(第3版) 清华大学出版社 黄贤英等人著作 部分课后习题答案
大家好,我是小黄鸭,平时作业,记录一下,方便考试复习
第一章
- 第一题 解释下列术语
- 翻译程序:翻译程序是一种把源语言书写的程序翻译成另一种语言书写的程序,而且后者和前者在逻辑上是等价的
- 编译程序:如果源语言为高级语言,目标语言为某台计算机上的汇编语言或机器语言(低级语言),则此翻译程序称为编译程序
- 解释程序:解释,执行高级语言源程序的程序
- 源程序:源语言编写的程序为源程序,一般为用高级语言编写的程序
- 目标程序:指用低级语言(机器语言或汇编语言)编写的程序
- 遍:是对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程
- 前端:主要由与源语言有关,但与目标机无关的那些部分组成,这些部分通常包括词法分析、语法分析、语义分析与中间代码生产,有的代码优化工作可以包括在前端
- 后端:包括编译程序中与目标机有关的那部分,如与目标机有关的代码优化和目标代码生产等。后端不依赖于源语言,仅依赖于中间语言。
- 第四题 编译程序有哪些主要构成成分?各自的主要功能是什么?
一个典型的编译程序通常包括7个组成部分(有些地方也写8个,区分不同而已),他们是词法分析程序、语法分析程序、语义分析与中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和错误处理程序。- 词法分析程序:对输入的源程序进行从左到右的扫描和分解,识别出一个个单词,并以单词的内部表示形式输出。同时对源程序做一些简单的处理,如过滤空格、去掉注释、报告错误。
- 语法分析程序:在词法分析的基础上,将单词符号组成各类语法短语,如程序、语句、表达式等,通过分析确定整个输入串是否构成语法上正确的程序。这种语法短语,亦可称为语法单位、语法范畴,可以表示成语法树。
- 语义分析与中间代码生产:对语法分析所识别出的各类语法短语,分析其含义,进行初步的翻译(产生中间代码)。这一阶段有两项工作:首先对每个语法短语进行静态语义审查,如标识符是否定义,类型是否匹配等。若无语义错误,则进行中间代码的翻译。
- 代码优化程序:对已产生的中间代码进行加工变换,使生成的目标代码更为高效。
- 目标代码生成程序:把中间代码(经过优化的中间代码)变换成特定机器上的低级语言代码
- 表格管理程序:负责建立、填写和查找等一系列表格管理工作。
- 错误处理程序:处理和校正源程序中存在的词法、语法和语义错误。
第二章
第三章
- 第四题
- 上下文无关文法:若文法
G=(Vn,Vt,P,S)
中的每一条规则的形式为A->β
,其中A∈Vn
,β∈(Vn U Vt)*
,则称G
是2型文法,即上下文无关文法。 - 推导:如果
A-> γ
是产生式,α和β
是文法的任意符号串,αAβ -> αγβ
称为直接推导 - 最左推导:如果在整个推导中,每一步都是替换句型中最左边的非终结符,这样的推导称为最左推导。
- 最右推导:即在推导的每一步都替换最右边的非终结符,这样的推导称为最右推导。
- 句型:若
S
是文法G
的开始符号,从开始符号S
出发推导出的符号串称为文法G
的一个句型。 - 句子:若
X
是文法G
中的一个句型,且X∈Vt*
,则称X
是文法G
的一个句子。 - 语言:把文法
G
产生的所有句子的集合称为G
产生的语言,即为L(G)
… - 文法等价:如果文法
G1
与文法G2
产生的语言是相同的,即L(G1)=L(G2)
,则称这两个文法是等价的。 - 语法树:用一课树来表示句型的推导称为语法树。
- 二义文法:如果存在某个句型对应两颗或量颗以上的语法树,则称这个文法为而二义文法。
- LL(1)文法:对文法
G
的句子进行确定的自顶向下语法分析的充分必要条件是,G的任意两个具有相同左部的,产生式A—>α|β
满足下列条件:如果α、β均不能推导出ε,则 FIRST(α) ∩ FIRST(β) = ∅。
α 和 β 至多有一个能推导出 ε。
如果 β *═> ε,则 FIRST(α) ∩ FOLLOW(A) = ∅。
- 规约:设置一个栈,从输入符号串(指的是从语法分析器送来的单词符号)出发,将输入符号逐个移入栈中,边移入边分析,一旦栈顶形成某个产生式的右部时,就用该产生式左部的非终结符代替,称为规约。
- 规范规约:在规约过程中始终对句柄进行规约而形成的序列称为规范规约,也称为最左规约。
- 句柄:位于一个句型的最左直接短语称为该句型的句柄
- 短语: 若有
S⇒*xUy⇒+xuy
,则u
称为句型xuy
相对于U
的短语。
- 上下文无关文法:若文法
第四章
第五章
- 第一题 解释下列术语
- 属性:代表与文法符号相关的信息,和变量一样,可以进行计算和传递。
- 属性文法:包含一个上下文无关文法和一系列的语义规则,并为每个文法符号(终结符和非终结符)配备若干相关的“值”(属性)
- 继承属性:在一个属性文法中,每个产生式
A->α
都有一个形如b=f(c1,c2...,ck)
的语义规则集,如果b
是产生式右边某个文法符号X的一个属性,且c1,c2...,ck
是A或产生式右边任何文法符号的属性,则称b
为A
的继承属性 - 综合属性:在一个属性文法中,每个产生式
A->α
都有一个形如b=f(c1,c2...,ck)
的语义规则集,如果b
是A
的一个属性,且c1,c2...,ck
是产生式右边文法符号α
的属性,或者是A的其他属性,则称b
为A
的综合属性 - 语义子程序:把某一种程序设计语言表示的程序转换为逻辑上等价的用另一种程序设计语言表示的程序的程序
- 语法制导的翻译:如果遍历语法树的操作和建立语法树的操作同时进行,成为语法制导的翻译方法。
- 翻译模式:给出使用语义规则进行计算的次序,把实现细节表示出来。
习题1
习题2
习题3
习题4
First和Follow的求解1
习题5
复习题集(蛮重要)
习题6
编译原理(第3版) 清华大学出版社 黄贤英等人著作 部分课后习题答案相关推荐
- 汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案
汇编语言与接口技术(第4版)清华大学出版社 第2章 80*86微处理器 课后题答案 1. 8086/8088 CPU的地址总线有多少位?其寻址范围是多少? 20位,最大可寻址1MB空间 2. 8086 ...
- 《Python程序设计与算法基础教程(第二版)》江红 余青松,第九章课后习题答案
推荐阅读 <Python程序设计与算法基础教程(第二版)>江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究 文章目录 例9.1~例9.53 填空题:2 思考题:3~11 上机 ...
- 《Python程序设计与算法基础教程(第二版)》江红 余青松,第十章课后习题答案
推荐阅读 <Python程序设计与算法基础教程(第二版)>江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究 文章目录 上机实践:2~4 案例研究:基于模块的库存管理系统 上机 ...
- 计算机成原理第2版,清华大学出版社-图书详情-《计算机组成原理(第2版)》...
本书是作者在广泛参阅国内外同类优秀教材的基础上,集十余年的课程教学与实验经验精心编写而成的.本书提出的"使学生建立起在控制器控制之下的计算机整体概念,充分理解程序.指令.控制.操作之间的关系 ...
- C语言程序设计第五版谭浩强著 第五章部分课后习题答案
#include<stdio.h> main() {int x,y,m,n,u,p;scanf("%d%d",&x,&y);m=x;n=y;while( ...
- 《Python语言程序设计》王恺 王志 机械工业出版社 第二章 Python的基础语法 课后习题答案
2.7 课后习题 (1)变量是指在程序运行讨程中值可以发生改变的量 (2)已知s="Python语言程序设计",则print(s[2:4])的输出结果为th,print(s[-4: ...
- 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第8章 多线程与多进程 课后习题答案【强烈推荐】
点个
- C语言程序设计第五版谭浩强著 第七章部分课后习题答案
#include<stdio.h> int gcd(int x,int y) {int z;for(;;){z=x%y;x=y;y=z;if(y==0)break;}return x; } ...
- 《Python程序设计与算法基础教程(第二版)》江红 余青松 全部章节的课后习题,上机实践,课后答案,案例研究
(还在更新中-) 这篇博客花费了我的大量时间和精力,从创作到维护:若认可本篇博客,希望给一个点赞.收藏 并且,遇到了什么问题,请在评论区留言,我会及时回复的 这本书对Python的知识点的描述很详细, ...
- 编译原理课后习题答案清华大学出版社第二版
想看更多算法题,可以扫描上方二维码关注我微信公众号"数据结构和算法",截止到目前我已经在公众号中更新了500多道算法题,其中部分已经整理成了pdf文档,截止到目前总共有800多页( ...
最新文章
- python 进制转换_Python数据结构与算法——递归应用之进制转换
- stomp协议简介 服务器客户端通讯协议
- Mysql数据库(九)——mysql高阶语句(下)
- 高清壁纸:60款可爱的圣诞节电脑桌面壁纸《下篇》
- css hack惯用手法
- Log4j配置学习文档之二 处理日滚文件-实现原理
- Date-calendar 类
- java中线程的状态以及线程栈分析
- linux 永久添加路由表,Linux 添加永久静态路由的方法
- Java软件开发中,常用的工具有哪些?
- 路由器02---PandoraBox配置
- Hystrix熔断器
- Windows Sockets错误码方案
- 看看MB860等机型的CPU的排名
- jqgrid使用分析
- tf.gradients()和grad_ys的作用
- VM ware15安装MacOS 10.14
- 详解如何处理海量定时任务
- 你需要选择一个什么样的浏览器?
- 史上最全解读:IP归属地
热门文章
- Trendmicro Officescan 服务器迁移
- GAMBIT、ICEM、HYPERMESH耦合面的处理方法
- java修改注册表_Java的Windows安装程序对注册表的修改
- Cadence下载安装
- Mac上最好的白噪音软件:Noizio for Mac
- 【fiddler】用fiddler实现android手机抓包
- 关于Session过期和失效
- 超星阅读器pdz文件打印转pdf文件
- 计算机丢失d3d10,“怎样解决d3dx10_42.dll丢失造成的游戏打不开”的解决方案
- SQL删除重复数据并只保留一条