编译原理 第一章 习题解答

合集下载

【编译原理】1-5章课后习题答案精心整理版,可直接缩印

【编译原理】1-5章课后习题答案精心整理版,可直接缩印

第一章1.2 计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么? 【解答】计算机执行用高级语言编写的程序主要有两种途径:解释和编译。

这两种途径的主要区别在于:解释方式下不生成目标代码程序,而编译方式下生成目标代码程序。

从执行速度上看,编译型的高级语言比解释型的高级语言要快,但解释方式下的人机界面比编译型好,便于程序调试。

(在解释方式下,翻译程序事先并不采用将高级语言程序全部翻译成机器代码程序,然后执行这个机器代码程序的方法,而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能的机器代码语句串并执行,而所翻译的机器代码语句串在该语句执行后并不保留,最后再读入下一条源程序语句,并解释执行。

这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行的,如果一语句处于一循环体中,则每次循环执行到该语句时,都要将其翻译成机器代码后再执行。

在编译方式下,高级语言程序的执行是分两步进行的:第一步首先将高级语言程序全部翻译成机器代码程序,第二步才是执行这个机器代码程序。

因此,编译对源程序的处理是先翻译,后执行。

)1.3 请画出编译程序的总框图。

如果你是一个编译程序的总设计师,设计编译程序时应当考虑哪些问题? 【解答】编译程序总框图如图1-1所示。

作为一个编译程序的总设计师,首先要深刻理解被编译的源语言其语法及语义;其次,要充分掌握目标指令的功能及特点,如果目标语言是机器指令,还要搞清楚机器的硬件结构以及操作系统的功能;第三,对编译的方法及使用的软件工具也必须准确化。

总之,总设计师在设计编译程序时必须估量系统功能要求、硬件设备及软件工具等诸因素对编译程序构造的影响等。

第二章2.1 正规式M1和M2等价是指:M1和M2所识别的语言集相等。

2.2 什么是扫描器?扫描器的功能是什么?【解答】扫描器就是词法分析器,它接受输入的源程序,对源程序进行词法分析并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。

编译原理-第1章 编译概述--习题答案

编译原理-第1章 编译概述--习题答案

第1章编译概述1.判断下面的陈述是否正确。

(1)编译器生成的目标程序都是可执行的程序。

(2)汇编器将高级语言程序翻译成汇编语言程序。

(3)编译程序和解释程序的根本区别在于解释程序对源程序并没有真正进行翻译。

(4)因为编译程序和解释程序具有不同的功能,所以它们的实现技术也完全不同。

(5)编译程序的五个组成部分缺一不可。

(6)许多编译程序在识别出语法单位后并不真正构造语法树。

(7)高级语言程序到低级语言程序的转换是基于语义的等价变换。

(8)含有优化部分的编译程序的执行效率高。

(9)优化的任务在于对中间代码进行加工和变换,以使其能产生运行结果更为准确的目标代码。

(10)编译前端主要由与源语言和目标机相关的那些部分组成。

(11)无论一遍扫描的编译器还是多遍扫描的编译器都要对源程序至少扫描一遍。

(12)在编译过程中,既可以将几个不同的阶段合为一遍,也可以把一个阶段的工作分为若干遍。

(13)取编译程序前端改写其后端以生成不同机器上的目标代码,目前技术上还难以实现。

(14)支持程序设计人员进行程序计开发的工具,除了编译程序以外,还需要编辑程序、链接程序和调试程序等其他一些工具。

2. 指出下列错误信息是编译的哪个阶段报告的A. 词法B. 语法C. 语义(1)else没有匹配的if(2)使用的标识符没有定义(3)标识符中出现?号(4)赋值语句写成:x+y=1;(5)float a=1.1, b=2, c ; c=a%b;(6)数组下标越界3. 阅读教材第1章,回答以下问题:(1)计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?(2)画出编译程序的总体逻辑结构图,以语句“Area=3.14*r*r”编译过程为例,简述编译各个阶段的主要任务。

习题答案1.(1) × (2) × (3) × (4) × (5) × (6) √ (7) √(8) × (9) × (10) × (11) √ (12) √ (13) × (14) √2.BCABCC。

编译原理-第1-5章习题课答案解析

编译原理-第1-5章习题课答案解析
二义性的含义: 如果文法存在某个句子对应两棵以上
不同的语法树,或者两种以上不同的最 左/右推导,则称这个文法是二义的。
首先:找到此文法对应的一个句子 iiiei 其次:构造与之对应的两棵语法树
S
S
i SeS
iS
iS
i
i S eS
i
ii
结论:因为该文法存在句子iiiei对应两棵 不同的语法树,因而该文法是二义的。
思路:先写出满足条件的正规式,由正规式构造 NFA,再把NFA确定化和最小化。
满足条件的正规式:(0|10)*
(0|10)*
x
y
1
0
1
0
0
1
2
0
x 1
y
编译原理
确定化: 给状态编号:
0
1
2
0
x 1
{X,1,Y} {1,Y} {2}
0
{1,Y} {1,Y} {1,Y}
0
0
1
1
1
2
1
chapter1~5习题
(1){0,1}上的含有子串010的所有串。 正规式:(0 | 1)* 010 (0 | 1)*
(2) {0,1}上不含子串010的所有串。 正规式:1*(0|11*1)* 1*( 0 | 11)*1* 1*0*1* (0 | 11)*(0 | 1) DFA做法同第7题。
编译原理
chapter1~5习题
编译原理
chapter1~5习题
8、给出下面正规表达式 (5)沒有重複出現的數字的數字符號串的全體
令ri=i| ,i=0,1,2...9 R0|R1|R2|...|R9記為∑Ri i (0,1,2...,9) P(0,1,2...,9)表示0,1,2...,9的全排列

编译原理课后习题答案

编译原理课后习题答案

(a) 0 ( 0 | 1)* 0
由0和1组成且以0开始和结束的符号串全体. (b) ( ( | 0 ) 1* ) * 由0和1组成的符号串全体.
(c) ( 0 | 1 )* 0 ( 0 | 1) ( 0 | 1) 由0和1组成且以000,001,010或011结束的符号串全体. 长度大于等于3且倒数第3个字符为0的01符号串全体.
R R ‘|’ S | S S ST | T T U* | U U (R) | a | b
a
a
a
28
4.5 dangling-else文法: stmt if expr then stmt | matched-stmt matched-stmt if expr then matched-stmt else stmt | other 试说明此文法是二义性的。 句子 if e1 then if e2 then s1 else if e3 then s2 else s3 if e1 then if e2 then s1 else if e3 then s2 else s3
0|1 B 1 D E 0 ABDE ABDE ABCDE ABDE 1 ABCDE ABCDE
start
A
1
C
NFA 0
start A' 1
0
B'
0
1
start
A'
1
最小化DFA
24
DFA
3.8 给定右线性文法G: S 0S | 1S | 1A | 0B A 1C |1 B 0C | 1 C 0C | 1C | 0 | 1 试求一个等价的左线性文法G’.
20
3.6 给出接受下列在字母表{0,1}上的DFA。 (a)所有以00结束的符号串的集合; (1|0)*00

(完整版)哈工大编译原理习题及答案

(完整版)哈工大编译原理习题及答案

何谓源程序、目标程序、翻译程序、编译程序和解释程序它们之间可能有何种关系一个典型的编译系统通常由哪些部分组成各部分的主要功能是什么选择一种你所熟悉的程序设计语言,试列出此语言中的全部关键字,并通过上机使用该语言以判明这些关键字是否为保留字。

选取一种你所熟悉的语言,试对它进行分析,以找出此语言中的括号、关键字END以及逗号有多少种不同的用途。

试用你常用的一种高级语言编写一短小的程序,上机进行编译和运行,记录下操作步骤和输出信息,如果可能,请卸出中间代码和目标代码。

第一章习题解答1.解:源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:C语言的关键字有:auto break case char const continue default do double else enum externfloat for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)
5【解答】
(1)句型(S,(a))的语法树如图2-8-3所示
(2)由图2-8-3可知:
①短语:S、a、(a)、S,(a)、(S,(a));
4、有文法G:S→aAcB|Bd
A→AaB|c
B→bScA|b
(1)试求句型aAaBcbbdcc和aAcbBdcc的句柄;
(2)写出句子acabcbbdcc的最左推导进程.
5、对于文法G[S]:
S→(L)|aS|aL→L, S|S
(1)画出句型(S,(a))的语法树.(2)写出上述句型的所有短语、直接短语、句柄和素短语.
c.构词规矩d.等价变换规矩
二、多项选择题
1、编译程序各阶段的工作都涉及到.
a.语法剖析b.表格治理c.出错处理
d.语义剖析e.词法剖析
2、编译程序工作时,通常有阶段.
a.词法剖析b.语法剖析c.中间代码生成
d.语义检讨e.目的代码生成
三、填空题
1、说明程序和编译程序的区别在于.
2、编译进程通常可分为5个阶段,分离是、语法剖析、代码优化和目的代码生成.3、编译程序工作进程中,第一段输入是,最后阶段的输出为程序.
断定解答1、对2、错3、错4、错5、错6、错
简答[解答]
1、句柄:一个句型的最左直接短语称为该句型的句柄.
2、素短语:至少含有一个终结符的素短语,并且除它自身之外不再含任何更小的素短语.
3、语法树:知足下面4个条件的树称之为文法G[S]的一棵语法树.
①每一终结均有一标识表记标帜,此标识表记标帜为VN∪VT中的一个符号;
SÞaSPQÞaaSPQPQÞaaabQPQPQÞaaabPQQPQÞaaabPQPQQÞaaaPPQQQÞ
aaabbPqqqÞaaabbQQQÞaaabbbcQQÞaaabbbccQÞaaabbbccc

编译原理考题答案(一二三章)

编译原理考题答案(一二三章)

第一章能够完成从一种语言到另一种语言的变换的软件称为翻译器编译器是一种翻译器,他进行语言变换的特点是目标语言比源语言低级编译的各个阶段:字符流-词法分析器-记号流-语法分析器-语法树-中间代码生成器-中间表示-独立与机器的代码优化器-中间表示-代码生成器-目标机器代码-依赖于机器的代码优化器-目标机器代码第二章语法分析器的任务是把构成源程序的字符流翻译成词法记号流。

2.1词法分析是编译的第一阶段,它的主要任务是扫描输入字符流,产生用于词法分析的词法记号序列。

完成的其他任务(实验一)其一是剥去源程序的注解和由空格、制表或换行符等引起的空白,另一任务是把来自编译器各个阶段的错误信息和源程序练习起来。

2.12词法记号的属性必考略2.21 字母表上的串是该字母表符号的有穷序列术语语言表示字母表上的一个串集,属于该语言的串称为该语言的句子或字。

如果x和y都是串,那么x和y的链接(xy)是吧y加到x后边形成的串。

对连接运算而言,空串是一个恒等元素。

表2.2 语言运算的定义(未打印)例2.2 略2.3 语言的识别器是一个程序,它取串x作为输入,当x是语言的句子时,他回答是,否则回答不是。

可以通过构造称为优先自动机的更一般的转换图,把正规式翻译成识别器。

有限自动机分为确定的和不确定的两种情况。

不确定的含义是:存在这样的状态,对于某个输入符号,它存在不止一种转换。

NFA转化为DFA 略DFA 化简略课后习题:第三章源程序 图3.1 分析器在编译器模型中的位置3.1 一个上下文无关文法G是一个四元组(Vt,Vn,S,P),其中:Vt是一个终结符集合,Vn是非终结符集合Vt并Vn=空集,S是一个终结符,称为开始符号,P是产生式的有限集合。

3.1.2代换句型中最左边非终结符的推导,这样的推导叫做最左推导。

最右推导,略。

3.14二义性一个文法如果存在某个句子有不止一颗分析树与之对应,那么称这个文法是二义的。

3.2.5 消除二义性。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章1、将编译程序分成若干个“遍”是为了。

b.使程序的结构更加清晰2、构造编译程序应掌握。

a.源程序b.目标语言c.编译方法3、变量应当。

c.既持有左值又持有右值4、编译程序绝大多数时间花在上。

d.管理表格5、不可能是目标代码。

d.中间代码6、使用可以定义一个程序的意义。

a.语义规则7、词法分析器的输入是。

b.源程序8、中间代码生成时所遵循的是- 。

c.语义规则9、编译程序是对。

d.高级语言的翻译10、语法分析应遵循。

c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到。

b.表格管理c.出错处理2、编译程序工作时,通常有阶段。

a.词法分析b.语法分析c.中间代码生成e.目标代码生成三、填空题1、解释程序和编译程序的区别在于是否生成目标程序。

2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。

3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。

4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题1、文法G:S→xSx|y所识别的语言是。

a. xyxb. (xyx)*c.x n yx n(n≥0) d. x*yx*2、文法G描述的语言L(G)是指。

a. L(G)={α|S+⇒α , α∈V T*}b. L(G)={α|S*⇒α, α∈V T*}c. L(G)={α|S*⇒α,α∈(V T∪V N*)} d. L(G)={α|S+⇒α, α∈(V T∪V N*)}3、有限状态自动机能识别。

a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G 的任意终结符对a、b有以下关系成立。

a. 若f(a)>g(b),则a>bb.若f(a)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章习题解答
2.编译程序有哪些主要构成成分?各自的主要功能是什么?
编译程序的主要构成成分有:词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序及出错处理程序。

(1)词法分析程序:从左到右扫描源程序,识别单词及其有关属性;
(2)语法分析程序:分析源程序的结构, 判别它是否为相应程序设计语言中的一个合法程序;
(3)语义分析程序:审查源程序有无语义错误,为代码生成阶段收集类型信息;
(4)中间代码生成程序:将源程序变成一种内部表示形式;
(5)代码优化程序:对前阶段产生的中间代码进行变换或进行改造,使生成的目标代码更为高效;
(6)目标代码生成程序:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码;
(7)表格管理程序:保存编译过程中的各种信息;
(8)出错处理程序:若编译过程中发现源程序存在错误,则报告错误的性质和错误发生的地点,有些还可以自动校正错误。

3.什么是解释程序?它与编译程序的主要不同是什么?
解释程序接受某个语言的程序并立即运行这个源程序。

它的工作模式是一个个的获取、分析并执行源程序语句,一旦第一个语句分析结束,源程序便开始运行并且生成结果,它特别适合程序员交互方式的工作情况。

而编译程序是一个语言处理程序,它把一个高级语言程序翻译成某个机器的汇编或二进制代码程序,这个二进制代码程序再机器上运行以生成结果。

它们的主要不同在于:解释程序是边解释边执行,解释程序运行结束即可得到该程序的运行结果,而编译程序只是把源程序翻译成汇编或者二进制程序,这个程序再执行才能得到程序的运行结果。

(当然还有其他不同,比如存储组织方式不同)。

相关文档
最新文档