编译原理习题及答案1~3(课堂PPT)
编译原理试题及答案(二)ppt课件
CH.4.练习题1(P81.)
1.考虑下面文法G1:
S→a|^|(T) T→T,S|S (1) 消去G1的左递归。然后对每个非终结符,写出 不带回溯的递归子程序。
解(1) 消左后的文法G1’: S→a|^|(T) T→ST’ T’→ ,ST’|ε
2018/11/15 2
3
CH.4.练习题1(P81.)
解(1) 不带回溯的递归 子程序: T→ST’ Procedure T; Begin S; T’ end;
解(1) 不带回溯的递归 子程序: T’→,ST’|ε procedure T’; begin if sym=‘,’ then begin advance; S; T’ end End;
4
CH.4.练习题1(P81.)
(2) 经改写后的文法是否是LL(1)的? 给出它的预测分析表。
消左后的文法G1’ :
(2) 因为G1’ : ① 文法不含左递归; ② 对 S→a|^|(T) FIRST(a)={a}, FIRST(^)={^}, FIRST( (T) )={ ( }, 集合互不相交且不含ε; ③ 对 T’→,ST’|ε FIRST( ,ST’ )={ , }, FIRST(ε)={ε}, 其交集为空。 但ε∈FIRST(T’)=FIRST( ,ST’ )∩FIRST(ε)={,,ε}, 然而,FOLLOW(T’)={ ) } FIRST(T’)={,,ε} ,两者 不 相交。 所以,G1’是LL(1)文法。 5
动作, 所用产生式
.
7
CH.4.练习题3(P82.)
3.下面文法中, 哪些是LL(1)的, 说明理由。 (1) S→ABc A→ a|ε B→ b|ε。
编译原理习题与答案省名师优质课赛课获奖课件市赛课一等奖课件
1)将文法G[S]改写为LL(1)文法。
FIRST(C)={(,)}
FIRST(B’)={+, ε}
FIRST(B)={(,)}
FIRST(A’)={i, ε}
FIRST(A)={(,)}
FIRST(S)={(,)}
FOLLOW(S)={$}
FOLLOW(A)={$,*}
FOLLOW(A’)={$,*} FOLLOW(B)={i,$,*}
解:先由产生式得: B=aA 将B代入A中得:A=bA|aaA|b =(b|aa)A|b 利用规则(A->xA|y)得: A= (b|aa) * b 将A代入S中得:S=a (b|aa) * b 即为所求正规式
3.4 给出文法G[S],构造相应最小旳DFA。 G:S→aS | bA | b A→aS
3)构造相应旳预测分析表。
第四章
S→A B→C|B+C
A→B|AiB C→)A*|(
1)将文法G[S]改写为LL(1)文法。 文法G[S]为左递归文法,削去文法左递归
后旳文法为:
S→A A→BA’ A’→ iBA’|ε B→CB’ B’ → +CB’|ε
C→)A*|(
第四章
S→A A→BA’ A’→ iBA’|ε B→CB’ B’ → +CB’|ε
a
0
b
1
a
➢ 最小化:此状态图已经为最简了。
第三章
1.指出与正规式匹配旳串。 a) (ab|b)*c 与背面旳那些串匹配?
ababbc abab c aaabc babc b) ab*c*(a|b)c 与背面旳那些串匹配?
acac acbbc abc abbcac acc c) (a|b)aa*(ba)* 与背面旳那些串匹配?
编译原理教程-课后习题答案第三章语法分析ppt课件
a. LALR文法 b. LR(0)文法
c. LR(1)文法 d. SLR(1)文法
第三章 语法分析
(8) 同心集合并有能够产生新的 冲突。
a. 归约
b. “移进〞/“移进〞
c.“移进〞/“归约〞 〞
d. “归约〞/“归约
【解答】 (1) c (2) a (3) c (5) b (6) b (7) d (8) d
#⋖ (⋖,⋖ (⋖a⋗)⋗)⋗# 因此,素短语为a。
第三章 语法分析
3.8 下述文法描画了C言语整数变量的声明语句: G[D]: D→TL T→int|long|short L→id|L,id
(1) 改造上述文法,使其接受一样的输入序列, 但文法是右递归的;
(2) 分别用上述文法G[D]和改造后的文法G[D′] 为输入序列int a,b,c构造分析树。
第三章 语法分析
(2) 为了构造字母表Σ={a,b}上同时只需奇数个a 和奇数个b的一切串集合的正规式,我们画出如图3-3 所示的DFA,即由开场符S出发,经过奇数个a到达形状 A,或经过奇数个b到达形状B;而由形状A出发,经过 奇数个b到达形状C(终态);同样,由形状B出发经过奇 数个a到达终态C。
第三章 语法分析
第三章 语法分析
3.1 完成以下选择题:
(1) 文法G:S→xSx|y所识别的言语是 。
a. xyx
b. (xyx)*
c. xnyxn(n≥0)
d. x*yx*
(2) 假设文法G是无二义的,那么它的任何句子α 。
a. 最左推导和最右推导对应的语法树必定一样
b. 最左推导和最右推导对应的语法树能够不同 c. 最左推导和最右推导必定一样
能否不画出语法树,而直接由定义(即在句型中)寻觅满足某 个产生式的候选式这样一个最左子串(即句柄)呢?例如,对句型 aAaBcbbdcc,我们可以由左至右扫描找到第一个子串AaB,它恰好 是满足A→AaB右部的子串;与树(a)对照,AaB确实是该句型的句 柄。能否这一方法一直正确呢?我们继续检查句型aAcbBdcc,由 左至右找到第一个子串c,这是满足A→C右部的子串,但由树(b) 可知,c不是该句型的句柄。由此可知,画出对应句型的语法树然 后寻觅最左直接短语是确定句柄的好方法。
编译原理 清华大学出版社 习题参考答案[优质ppt]
7
第 16题
• • 给出生成下述语言的三型文法: • (3){anbmck|n,m,k>=0 } • • 答案: • • (3) • A→aA|B • B→bB|C • C→cC|ε •
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
• 为只包含数字、加号和减号的表达式,例 如9-2+5,3-1,7等构造一个文法。
•
•
•
ห้องสมุดไป่ตู้
•
•
•
•
1
2
3
第 11 题
•
• 令文法 G[E]为:
• E→T|E+T|E-T
• T→F|T*F|T/F
• F→(E)|i
• 证明 E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。
•
• 答案:
•
• 此句型对应语法树如右,故为此文法一个句型。
• 或者:因为存在推导序列: E=>E+T=>E+T*F,所
• 以 E+T*F句型
• 此句型相对于 E 的短语有:E+T*F; 相对于 T 的短语
• 有 T*F
• 直接短语为:T*F
•
句柄为:T*F
•
•
•
•
4
5
6
第 14题
• • 给出生成下述语言的上下文无关文法: • (1){ anbnambm| n,m>=0} • • 答案: • (1) • S→AA • A→aAb|ε
编译原理习题和课件
1.1.叙述正规式(00 | 11)*( (01 | 10) (00 | 11)* (01 | 10) (00 | 11)* )*描述的语言。
答案:该正规式所描述的语言是,所有由偶数个0和偶数个1构成的串。
另外,和该正规式等价的正规式有( 00 | 11 | ( (01 | 10) (00 | 11)* (01 | 10) ) )*。
备注:一、如果题目要求转化为NFA,则方法1:按照课本P54-55(或课件compiler –03)的方法转化。
方法2:见题目1.5的方法。
二、如果题目要求转化为DFA,则方法1:先将正规式转化为NFA,再按照课本P49-51(或课件compiler –03)的方法转化。
方法2:如果掌握的非常熟练,而且正规式比较简单,则可参照题目1.6的方法直接转化。
三、如果题目要求化简DFA,或得到最简DFA,则在得到DFA后,按照课本P56-57(或课件compiler-03)的方法化简。
1.2 给出下面的正规表达式:(1)能被五整除的十进制整数(2)包含奇数个1或奇数个0的二进制数串(3)包含偶数个0和奇数个1的二进制数串答案:(1) 以0|5结尾的十进制数→长度为1的十进制数或长度大于1的十进制数→长度为1的正规式为(0|5)→长度大于1的正规式为(1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)* (0|5)→正规式为:(0|5) | (1|2|3|4|5|6|7|8|9) (0|1|2|3|4|5|6|7|8|9)*(0|5)(2) 包含奇数个1或奇数个0的二进制串→包含奇数个1 或包含奇数个0→思考ing:(偶数个1)* 一定是偶数个1构成的串,但是(奇数个1)* 一定是奇数个1构成的串吗?答案是否定的→那么为了得到奇数个1组成的串怎么办?→1(偶数个1)* 肯定是奇数个1组成的串→为了得到奇数个1的二进制串,还需要补上0→得到正规式0*10*(10*10*)*→同理,可以得到奇个数0的二进制串,1*01*(01*01*)→正规式为0*10*(10*10*)* | 1*01*(01*01*)→与之等价的正规式为0*1(0|10*1)*|1*0(1|01*0)*(3) 包含偶数个0和奇数个1的二进制数串→由1.1可知,偶数个1和偶数个0的正规式为(00 | 11)*( (01 | 10) (00 | 11)* (01 | 10) (00 | 11)* )*,先给该正规式起个名字,even_0_even_1→ (00 | 11)*( (01 | 10) (00 | 11)* (01 | 10) (00 | 11)* )*→在此基础上,我们只需将even_0_even_1与奇数个1和偶数个0构成的串连接即可→对于二进制串,起始字符为1或0→如果是1,那么剩下的部分一定是偶数个0和偶数个1,即得到1 even_0_even_1→如果是0,那么经过若干个00或11,一定会出现一个01或10,才能保证0的个数是偶数,1的个数是奇数。
编译原理-第1-5章习题课答案ppt课件
9、对下面情况给出DFA及正规表达式:
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题。
I0 Φ {c,d} {c,d}
{c,d,f} {c,d} {c,d,f}
I1 {b,c,d} {c,d,e} {c,d,e} {c,d,e} {c,d,e,g} {c,d,e}
编
译
原 理 “雪亮工程"是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。
c
ε
1
1 d
e0f
1
g
编
译
原 理 “雪亮工程"是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。
②.状态转换矩阵
a 1
b
ε
0 c
ε
1
chapter1~5习题
1 d
e0f
1
g
I {a} {b,c,d} {c,d} {c,d,e} {c,d,f} {c,d,e,g}
1 {c,dF,e}
{c,d,e}
0{c,d,e}
{c,d,e,g} {c,d,e}
1 B D D D F(终态) D
编
译
原 理 “雪亮工程"是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。
南京邮电大学--编译原理-课后习题答案和讲解PPT课件
⑥(-,③,⑤)
(2)四元式:
①(+,a,b,T1)
②(-,a,b,T2)
③(/,T1,T2,T3)
④(*,b,c,T4)
⑤(+,a,T4,T5)
2021/3/9
⑥(-,T3,T5授,课:TX6X)X
9
刚才的发言,如 有不当之处请多指
正。谢谢大家!
2021/3/9
10
xxx6语法制导翻译是在文法规则中再配上语义动作翻译成后缀表达式并填入到post数组中假设数组元素下标从0开始
1、Chomsky 定义的四种形式语言文法中, 0 型文法又称为( )文法; A. 短语结构文法 B. 前后文无关文法 C. 前后文有关文法 D. 正规文法
2、文法:G:S→xSx | y所识别的语言是( )。
授课:XXX
1
5、对文法规则Z::=AB|AC|A用扩充的BNF可表示为 Z::=A(B|C|ε)(或是Z::=A[B|C])
6、语法制导翻译是在文法规则中再配上( 语义动作 )。
7、将 if a-b then c:=1 else d:=2 翻译成后缀表达式并填入到POST数组中, 假设数组元素下标从0开始。
2
已知文法G[S]: S->(AS)|(b) A->(SaA)|(a) 试分析句型(A((SaA)(b)))的短语、简单短语、句柄、最左素短语
2021/3/9
授课:XXX
3
画出正规式 (b*abb*)* 对应的DFA状态转换图,并化简
2021/3/9
授课:XXX
4
2021/3/9
授课:XXX
5
试利用算符优先关系,分析句子(a,(a,a))
编译原理答案课件
代码生成
总结词
将中间代码转换为目标代码。
详细描述
代码生成是编译过程的最后一个阶段,其主要任务是将中间代码转换为机器语言的目标 代码。在这个阶段,编译器会根据具体的机器语言规范和目标平台的特性,将中间代码 转换为可以在目标机器上执行的指令集合。这个阶段通常涉及到指令选择、寄存器分配
、内存管理等问题。
如何识别源代码中的词素?
如何根据语法规则构建抽象 语法树?
02
01 03
如何进行语义检查?
如何生成高效的目标代码?
04
05
如何处理源代码中的错误?
编译器设计的实践
01
使用现有的编译器工具,如Lex和 Yacc,进行词法分析和语法分析 。
02
使用现有的编译器框架,如LLVM ,进行代码生成和优化。
在设计编译器时,需要考虑语言 的特性和目标平台的特性,以生 成高效的目标代码。
编译原理答案课件
目录
• 编译原理概述 • 编译过程 • 编译器设计 • 编译原理的应用 • 编译原理的挑战与未来发展 • 编译原理案例分析
01
编译原理概述
编译原理的定义
编译原理
编译原理是计算机科学的一个分支,主要研究如何将高级语言编写 的源代码转换成计算机可以执行的机器码。
编译过程
编译过程包括词法分析、语法分析、语义分析、中间代码生成、优 化和目标代码生成等阶段。
案例三:中间代码生成器的设计与实现
要点一
总结词
要点二
详细描述
中间代码生成是编译过程中的第三个阶段,其任务是将抽 象语法树转换成中间代码。
中间代码生成器根据抽象语法树的结构,将其转换成中间 代码,如三地址代码或四元式。中间代码是一种更接近于 机器码的代码形式,便于后续的优化和代码生成。在实现 上,可以采用遍历抽象语法树的方法,对每个节点进行转 换。
最新编译原理(课后习题答案ppt课件
10
(b) 试对于句子 not ( true or false) 构造一棵分析树.
bexpr bterm bfactor not bfactor
a S b S
(d) 此文法产生的语言是什么?
由相同个数的a和b组成的字符串.
9
1.3 考虑文法 bexpr bexpr or bterm | bterm bterm bterm and bfactor | bfactor bfactor not bfactor | ( bfactor ) | true | false
(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符号串全体.
16
3.4 对于下列语言分别写出它们的正规表达式:
(a) 英文字母组成的所有符号串, 要求符号串中顺序包含 五个元音字母. 令letter={非元音的英文字母} letter* (a|A) letter* (e|E) letter* (i|I) letter* (o|O) letter* (u|U) letter*
18
(e) 带有偶数个0和奇数个1的由0和1组成的符号串全体. E为带有偶数个0和1的由0和1组成的符号串全体. 即 ( 00 | 11)* ( ( 01 | 10 ) ( 00 | 11)* ( 01 | 10 ) ( 00 | 11)* )* E1E|E0E1E0E
(完整版)编译原理课后习题答案
(完整版)编译原理课后习题答案第一章1.典型的编译程序在逻辑功能上由哪几部分组成?答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。
2. 实现编译程序的主要方法有哪些?答:主要有:转换法、移植法、自展法、自动生成法。
3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?答:编译法、解释法。
4. 编译方式和解释方式的根本区别是什么?答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。
第二章1.乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何?答:1)0型文法、1型文法、2型文法、3型文法。
2)2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。
答:Z→SME | BS→1|2|3|4|5|6|7|8|9M→ε | D | MDD→0|SB→2|4|6|8E→0|B3. 设文法G为:N→ D|NDD→ 0|1|2|3|4|5|6|7|8|9请给出句子123、301和75431的最右推导和最左推导。
答:N?ND?N3?ND3?N23?D23?123N?ND?NDD?DDD?1DD?12D?123N?ND?N1?ND1?N01?D01?301N?ND?NDD?DDD?3DD?30D?301N?ND?N1?ND1?N31?ND31?N431?ND431?N5431?D5431?7 5431N?ND?NDD?NDDD?NDDDD?DDDDD?7DDDD?75DDD?754 DD?7543D?75431 4. 证明文法S→iSeS|iS| i是二义性文法。
答:对于句型iiSeS存在两个不同的最左推导:S?iSeS?iiSesS?iS?iiSeS所以该文法是二义性文法。
编译原理习题及答案1~3[优质PPT]
《编译原理教程》习题解析
40
图2-16 正规式((a | b)*|aa)*b对应的NFA
故选D。
《编译原理教程》习题解析
17
(5) NFA可以有DFA与之等价,即两者描述能力相同; 也即,对于任一给定的NFA M,一定存在一个DFA M', 使L(M)=L(M′)。故选B。
(6) DFA便于识别,易于计算机实现,而NFA便于定 理的证明。故选C。
(7) 本题虽然是第二章的题,但答案参见第三章3.1.3 节。即选C。
实际上,当闭包*取0时,正规式(ab) *a与正规 式a(ba)*由初态X到终态Y之间仅存在一条a弧。由 于(ab)*在a之前,故描述(ab)*的弧应在初态结点X 上;而(ba)*在a之后,故(ba)*对应的弧应在终态结 点Y上。因此,(ab)*a和a(ba)*所对应的NFA也可 分别描述为如图2-9(a)和(b)所示的形式,它们确定 化并化简后仍可得到图2-8所示的最简DFA。
【解答】 计算机执行用高级语言编写的程序主要有两种途 径:解释和编译。
在解释方式下,翻译程序事先并不采用将高级语言程序全 部翻译成机器代码程序,然后执行这个机器代码程序的方法, 而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能 的机器代码语句串并执行,然后再读入下一条源程序语句并解 释执行,而所翻译的机器代码语句串在该语句执行后并不保留。 这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行 的,如果一语句处于一循环体中,则每次循环执行到该语句时, 都要将其翻译成机器代码后再执行。
《编译原理教程》习题解析
19
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的
有限自动机,其中f定义如下:
编译原理考试习题及答案PPT课件
自底向上的语法分析是从输入的字符串出发,逐步将其归约为文法的起始符号。
自底向上的语法分析通常采用LR(0)、SLR(1)、LALR(2)等算法。
自底向上的语法分析可以检测出输入的字符串是否符合语言的语法规则,并生成相应的语法结构。
01
02
03
自底向上的语法分析
语法分析的算法和数据结构
语法分析的算法包括预测分析法、移位/归约法、LR(0)、SLR(1)、LALR(2)等。
三地址代码的生成
对三地址代码进行优化可以提高目标代码的执行效率,常见的优化技术包括常量折叠、死代码删除、循环展开等。
三地址代码的优化
循环优化
循环是程序中常见的结构之一,对循环进行优化可以提高程序的执行效率。常见的循环优化技术包括循环展开、循环合并、循环剪枝等。
要点一
要点二
死代码删除
死代码是指程序中永远不会被执行的代码,删除这些死代码可以减小目标代码的大小并提高程序的执行效率。
习题及答案解析
词法分析习题及答案解析
题目
给定一个字符串,判断它是否是合法的标识符。
答案解析
合法的标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。
题目
给定一个字符串,判断它是否是关键字。
答案解析
关键字是编程语言中预定义的保留字,不能用作标识符。例如,在C语言中,关键字包括`int`, `float`, `if`, `else`等。
答案解析
上下文无关文法是一种形式文法,它的产生式右部不依赖于左部的任何符号。这意味着产生式右部是一个终结符或一个非终结符的序列。
题目
给定一个抽象语法树,判断它是否是二叉树。
答案解析
抽象语法树是源代码的树形表示,每个节点表示源代码中的一个结构。如果一个抽象语法树中的每个节点最多有两个子节点,则它是二叉树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
11
《编译原理教程》习题解析
12
(3) 词法分析器的输出是 。 A.单词的种别编码 B.单词的种别编码和自身的值 C.单词在符号表中的位置 D.单词自身值
(4) 状态转换图(见图2-1)接受的字集为 _______。 A.以0开头的二进制数组成的集合 B.以0结尾的二进制数组成的集合 C.含奇数个0的二进制数组成的集合 D.含偶数个0的二进制数组成的集合
C.汇编语言是计算机唯一能够直接识别并接受 的语言
D.高级语言接近人们的自然语言,但其依赖具 体机器的特性是无法改变的
2
《编译原理教程》习题解析
3
(2) 将编译过程分成若干“遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效
【解答】 计算机执行用高级语言编写的程序主要有两种途 径:解释和编译。
在解释方式下,翻译程序事先并不采用将高级语言程序全 部翻译成机器代码程序,然后执行这个机器代码程序的方法, 而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能 的机器代码语句串并执行,然后再读入下一条源程序语句并解 释执行,而所翻译的机器代码语句串在该语句执行后并不保留。 这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行 的,如果一语句处于一循环体中,则每次循环执行到该语句时, 都要将其翻译成机器代码后再执行。
14
《编译原理教程》习题解析
15
(7) 下面用正规表达式描述词法的论述中,不正确的 是。
A.词法规则简单,采用正规表达式已足以描述 B.正规表达式的表示比上下文无关文法更加简 洁、直观和易于理解 C.正规表达式描述能力强于上下文无关文法 D.有限自动机的构造比下推自动机简单且分析 效率高 (8) 与(a|b)*(a|b)等价的正规式是 。 A.(a|b) (a|b)* B.a*|b* C.(ab)*(a|b)* D.(a|b)*
《编译原理教程》习题解析
1
第一章 绪 论 第二章 词 法 分 析 第三章 语 法 分 析
1
《编译原理教程》习题解析
2
第一章 绪 论
1.1 完成下列选择题: (1) 下面叙述中正确的是 。
A.编译程序是将高级语言程序翻译成等价的机 器语言程序的程序
B.机器语言因其使用过于困难,所以现在计算 机根本不使用机器语言
5
《编译原理教程》习题解析
6
(4) 编译各阶段的工作都涉及到构造、查找或更新有 关表格,即编译过程的绝大部分时间都用在造表、查表和 更新表格的事务上。故选D。
(5) 由(1)可知,编译程序实际上实现了对高级语言程 序的翻译。故选D。
6
《编译原理教程》习题解析
7
1.2 计算机执行用高级语言编写的程序有哪些途径?它们 之间的主要区别是什么?
率
(3) 构造编译程序应掌握 。ຫໍສະໝຸດ A.源程序B.目标语言
C.编译方法
D.A~C项
3
《编译原理教程》习题解析
4
(4) 编译程序绝大多数时间花在 上。
A.出错处理
B.词法分析
B.目标代码生成
D.表格管理
(5) 编译程序是对 。
A.汇编程序的翻译
B.高级语言程序的
解释执行
C.机器语言的执行
D.高级语言的翻译
12
《编译原理教程》习题解析
13
图2-1 习题2.1的DFA M
13
《编译原理教程》习题解析
14
(5) 对于任一给定的NFA M, 一个DFA M′,使 L(M)= L(M′)。
A.一定不存在 B.一定存在 C.可能存在 D.可能不存在 (6) DFA适用于 。 A.定理证明 B.语法分析 C.词法分析 D.语义加工
9
《编译原理教程》习题解析
10
图1-1 编译程序总框图
10
《编译原理教程》习题解析
11
第二章 词 法 分 析
2.1 完成下列选择题: (1) 词法分析所依据的是
A.语义规则 C.语法规则 (2) 词法分析器的输入是 A.单词符号串 C.语法单位
。 B.构词规则 D.等价变换规则
。 B.源程序 D.目标程序
15
《编译原理教程》习题解析
16
【解答】 (1) 由教材第一章1.3节中的词法分析,可知词法分析
所遵循的是语言的构词规则。故选B。 (2) 词法分析器的功能是输入源程序,输出单词符号。
故选B。 (3) 词法分析器输出的单词符号通常表示为二元式:
(单词种别,单词自身的值)。故选B。 (4) 虽然选项A、B、D都满足题意,但选项D更准确。
故选D。
16
《编译原理教程》习题解析
17
(5) NFA可以有DFA与之等价,即两者描述能力相同; 也即,对于任一给定的NFA M,一定存在一个DFA M', 使L(M)=L(M′)。故选B。
(6) DFA便于识别,易于计算机实现,而NFA便于定 理的证明。故选C。
这两种途径的主要区别在于:解释方式下不生成目 标代码程序,而编译方式下生成目标代码程序。
8
《编译原理教程》习题解析
9
1.3 请画出编译程序的总框图。如果你是一个编译程 序的总设计师,设计编译程序时应当考虑哪些问题?
【解答】 编译程序总框图如图1-1所示。 作为一个编译程序的总设计师,首先要深刻理解被编 译的源语言其语法及语义;其次,要充分掌握目标指令的 功能及特点,如果目标语言是机器指令,还要搞清楚机器 的硬件结构以及操作系统的功能;第三,对编译的方法及 使用的软件工具也必须准确化。总之,总设计师在设计编 译程序时必须估量系统功能要求、硬件设备及软件工具等 诸因素对编译程序构造的影响。
4
《编译原理教程》习题解析
5
【解答】 (1) 编译程序可以将用高级语言编写的源程序转换成 与之在逻辑上等价的目标程序,而目标程序可以是汇编语 言程序或机器语言程序。故选A。 (2) 分多遍完成编译过程可使整个编译程序的逻辑结 构更加清晰。故选B。 (3) 构造编译程序应掌握源程序、目标语言和编译方 法这三方面内容。故选D。
7
《编译原理教程》习题解析
8
在编译方式下,高级语言程序的执行是分两步进行 的:第一步首先将高级语言程序全部翻译成机器代码程序, 第二步才是执行这个机器代码程序。因此,编译对源程序 的处理是先翻译,后执行。
从执行速度上看,编译型的高级语言比解释型的高级 语言要快,但解释方式下的人机界面比编译型好,便于程 序调试。