编译第3章习题(文法和语言)_09级
《编译原理》课后习题答案第三章第3章文法和语言第1

《编译原理》课后习题答案第三章第3 章文法和语言第1 题文法G=({A,B,S},{a,b,c},P,S)其中P 为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。
答案:L(G[S])={abc}第2 题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。
V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0 开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。
答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4 题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。
盛威网()专业的计算机学习网站 1《编译原理》课后习题答案第三章答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={anbn|n>=1}第5 题写一文法,使其语言是偶正整数的集合。
要求:(1) 允许0 打头;(2)不允许0 打头。
答案:(1)允许0 开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0 开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6 题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。
(5)i+(i+i)(6)i+i*i盛威网()专业的计算机学习网站 2 《编译原理》课后习题答案第三章答案:<表达式><表达式> + <项><因子><表达式><表达式> + <项><因子>i<项><因子>i<项><因子>i( )(5) <表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)<表达式><表达式> + <项><项> * <因子><因子> i<项><因子>ii(6) <表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i盛威网()专业的计算机学习网站 3《编译原理》课后习题答案第三章第7 题证明下述文法G[〈表达式〉]是二义的。
编译原理课后习题答案+清华大学出版社第二版

用以引用非局部(包围它的过程)变量时,寻找该变量的地址。 DL: 动态链,指向调用该过程前正在运行过程的数据段基地址,用以过程执行结束释放
数据空间时,恢复调用该过程前运行栈的状态。 RA: 返回地址,记录调用该过程时目标程序的断点,即调用过程指令的下一条指令的地
编译程序大致有哪几种开发技术?
答案:
(1)自编译:用某一高级语言书写其本身的编译程序。 (2)交叉编译:A 机器上的编译程序能产生 B 机器上的目标代码。 (3)自展:首先确定一个非常简单的核心语言 L0,用机器语言或汇编语言书写出它的编
译程序 T0,再把语言 L0 扩充到 L1,此时 L0⊂ L1 ,并用 L0 编写 L1 的编译程序 T1,再把语 言 L1 扩充为 L2,有 L1 ⊂ L2 ,并用 L1 编写 L2 的编译程序 T2,……,如此逐步扩展下 去, 好似滚雪球一样,直到我们所要求的编译程序。 (4)移植:将 A 机器上的某高级语言的编译程序搬到 B 机器上运行。
(main).
答案: 程序执行到赋值语句 b∶=10 时运行栈的布局示意图为:
1
《编译原理》课后习题答案第二章
第 3题 写出题 2 中当程序编译到 r 的过程体时的名字表 table 的内 容。
name
kind
level/val
adr
size
答案:
题 2 中当程序编译到 r 的过程体时的名字表 table 的内容为:
盛威网()专业的计算机学习网站
2
《编译原理》课后习题答案第一章
合实现方案,即先把源程序翻译成较容易解释执行的某种中间代码程序,然后集中解释执行 中间代码程序,最后得到运行结果。
编译作业参考答案

第3章文法和语言习题参考答案1. L(G)={abc}2. L(G[N])是无符号整数。
3.G3: E→D+E | D-E | DD→0|1|2|3|4|5|6|7|8|94. L(G[Z])={a n b n | n>0}5.(1) G5: N→DN | EE→0|2|4|6|8D→E|1|3|5|7|9(2) G5: N→AB|EB→DB|EA→1|2|3|4|5|6|7|8|9E→0|2|4|6|8D→A|06.(1) E⇒T E (5) E⇒ E+T E (6) E⇒ E+T E⇒F T ⇒⇒⇒i F ⇒ F+T T F ⇒ F+T T T * Fi ⇒ i+T F ( E ) ⇒ i+T F F i⇒ i+F i E + T ⇒ i+T*F i i⇒ i+(E) T F ⇒ i+F*F⇒ i+(E+T) F i ⇒ i+i*F⇒ i+(T+T) i ⇒ i+i*i⇒ i+(F+T)⇒ i+(i+T)⇒ i+(i+F)⇒ i+(i+i)7. E E i+i*i的两棵语法树不同,E O E E O E 故文法是二义的。
i + E O E E O E * ii * i i + i8. S S abc的两棵语法树不同,A c aB 故文法是二义的。
a b b c9. (1) S (2) 该文法生成的语言是后缀表达式,S S * 或称为逆波兰式。
S aa a10. (1)该文法生成的语言是“可并列或嵌套的配对的括号串”。
(2)文法是二义的,因为句子“()()”有两棵不同的语法树。
S SS ( S ) S S ( S ) SS ( S ) S εεεε S ( S ) Sεεεεεε11. 可构造E+T*F的语法树如右所示: E 短语:E+T*F T*F故为文法的句型。
+ T 其中,T*F是直接短语和句柄T * F13. (1)最左推导最右推导(2) 文法规则可有:(3) 短语直接短语句柄S⇒ABS S⇒ABS S→ABS | Aa |εabbaa⇒aBS ⇒ABAa A→a a a a⇒aSBBS ⇒ABaa B→SBB | b εε⇒aBBS ⇒ASBBaa b b⇒abBS ⇒ASBbaa b b⇒abbS ⇒ASbbaa bb⇒abbAa ⇒Abbaa a a⇒abbaa ⇒abbaa aa14. (1) G1: S→CD (2) G2: S→1S0|AC→aCb|ε A→0A1|εD→aDb|ε(3) G3: S→0S0|aSa|a15.{WaW}上下文无关,W对应编程语言中的各种括号;{a n b m c n d m}上下文有关。
编译原理 第3章习题解答

第三章习题参考解答3.1 构造自动机A,使得①②③当从左至右读入二进制数时,它能识别出读入的奇数;④它识别字母表{a, b}上的符号串,但符号串不能含两个相邻的a,也不含两个相邻的b;⑤它能接受字母表{0, 1}上的符号串,这些符号串由任意的1、0和随后的任意的11、00对组成。
⑥它能识别形式如±dd*⋅ d*E ±dd的实数,其中,d∈{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}。
3.2 构造下列正规表达式的DFSA:① xy*∣yx*y∣xyx;② 00∣(01)*∣11;③ 01((10∣01)*(11∣00))*01;④ a(ab*∣ba*)*b。
3.3 消除图3.24所示自动机的空移。
bεq1q2q3aba,bqaq6q4q5abεεε图3.24 含空移的自动机3.4 将图3.25所示NDFSA确定化和最小化。
xyqq1q2q4q3xyxyx,yx图3.25 待确定化的NDFSA3.5 设e、e1、e2是字母表∑上的正规表达式,试证明① e∣e=e;② {{e}}={e};③ {e}=ε∣e{e};④ {e1 e2} e1= e1{e2 e1};⑤ {e1∣e2}={{e1}{e2}}={{e1}∣{e2}}。
3.6 构造下面文法G[Z]的自动机,指明该自动机是不是确定的,并写出它相应的语言: G[Z]:Z→A0A→A0∣Z1∣03.7 设NDFSA M=({x, y},{a, b},f, x, {y}), 其中,f(x, a)={x, y}, f(x, b)={y}, f(y, a)=∅, f(y, b)={x, y}。
试对此NDFSA确定化。
3.8 设文法G[〈单词〉]:〈单词〉→〈标识符〉∣〈无符号整数〉〈标识符〉→〈字母〉∣〈标识符〉〈字母〉∣〈标识符〉〈数字〉〈无符号整数〉→〈数字〉∣〈无符号整数〉〈数字〉〈字母〉→a∣b〈数字〉→1∣2试写出相应的有限自动机和状态图。
编译原理第三章练习题答案

编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要学科,它研究的是如何将高级语言代码转化为机器语言的过程。
在编译原理的学习过程中,练习题是不可或缺的一部分,通过完成练习题可以更好地理解和掌握编译原理的知识。
本文将为大家提供编译原理第三章练习题的答案,希望对大家的学习有所帮助。
1. 什么是语法分析?语法分析是编译器中的一个重要模块,它的主要任务是根据给定的语法规则,对输入的源代码进行分析和解释。
语法分析器会根据语法规则构建一个语法树,用于表示源代码的结构和含义。
常用的语法分析方法有递归下降法、LL(1)分析法和LR分析法等。
2. 什么是LL(1)文法?LL(1)文法是一种特殊的上下文无关文法,它具有以下两个特点:(1) 对于任何一个句子,最左推导和最右推导是唯一的。
(2) 在预测分析过程中,只需要向前看一个输入符号就可以确定所采用的产生式。
LL(1)文法是一种常用的文法形式,它适用于递归下降法和LL(1)分析法。
3. 什么是FIRST集合和FOLLOW集合?FIRST集合是指对于一个文法符号,它能够推导出的终结符号的集合。
FOLLOW 集合是指在一个句型中,某个非终结符号的后继终结符号的集合。
计算FIRST集合和FOLLOW集合可以帮助我们进行语法分析,特别是LL(1)分析。
4. 什么是递归下降语法分析法?递归下降语法分析法是一种基于产生式的自顶向下的语法分析方法。
它的基本思想是从文法的开始符号开始,递归地根据产生式进行分析,直到推导出输入符号串或发现错误。
递归下降语法分析法的实现比较简单,但对于某些文法可能会出现回溯现象,影响分析效率。
5. 什么是LR分析法?LR分析法是一种自底向上的语法分析方法,它的基本思想是从输入符号串开始,逐步构建语法树,直到推导出文法的开始符号。
LR分析法具有较好的分析效率和广泛的适用性,常用的LR分析方法有LR(0)、SLR(1)、LR(1)和LALR(1)等。
编译第3章习题(文法和语言)参考答案

习题第3章文法和语言参考答案1.写一文法,使其语言是偶整数集合。
解:允许以0打头G:N→+A|-A|AA→DA|ED→0|1|2|3|4|5|6|7|8|9E→0|2|4|6|82.写一文法,使其语言是偶整数集合,但不允许由0打头。
解:0除外G:N→+A|-A|AA→CB|EB→DB|EC→1|2|3|4|5|6|7|8|9D→0|1|2|3|4|5|6|7|8|9E→0|2|4|6|83.写一文法G,使得L(G) = { a m b n| m≥0, n≥1 }解:G1:S→aS|T或 G2:S→aS|bT 或 G3:S→aS|Sb|bT→bT|b T→bT|ε4.写一文法G,使得L(G) = { a m b n c p| m≥0, n≥0, p≥0 }解:G1:S→ABC 或G2:S→Sc|T 或 G3:A→aA|bB|cC|εA→aA|ε T→Tb|R B→bB|cC|εB→bB|ε R→Ra|ε C→cC|εC→cC|ε5.设有文法G1:S → AaBS → aA → ABA → bA →εB → bBB →ε写一文法G2,使得L(G1) = L(G2),并且G2不含空规则。
解:G2:S→BaB|Ba|aB|a 或G2:S→bB|Sb|aB→bB|b6.写一文法,使其语言是十位数不是0的整数集合。
解:G:N→SAS→+|-|εA→D|CD|BCDB→B D|CC→1|2|3|4|5|6|7|8|9D→0|1|2|3|4|5|6|7|8|97.写出以下文法G所定义的语言L(G)。
G:S → SaSS → bS → d解:L(G)={(xa)n x|n≥0, x∈{b,d}}={((b|d)a)n(b|d)|n≥0}={(b|d)(a(b|d))n|n≥0}8.设有文法G1:S → Sab | c | d将其改写成以下形式的文法G2,每条规则形如:V → xW或V → y其中V和W为非终结符,x和y为终结符串。
编译原理第3章练习

第三章习题1.给出与下图中的DFA 等价的正规文法G 。
解:G(A):A → aD | bB B → aCC → bA | aD | ε D → aB | bD| ε2.构造与下列正规式等价的DFA (1) (a|b)* | ab*c + (2) b | a(aa*b)*b(1)答:①与之等价的εNFA 为-② 消除ε边后的NFA 为-③确定化过程如下:b--(2)答:本题可以直接得到DFA 如下(如果带有ε边,取消ε边,合并等价状态后同样可以该结果):+3. 将下列DFA 最小化+(b)-aa解答:{0,1},{2,3,4,5} {0,1},{2,4},{3,5}4. 将下面两个NFA确定化和最小化(如果具有ε边,先删除ε边). (1)答:标识隐含的开始状态和结束状态,并消除ε边后得到如下NFA:(2)现将该DFA 进行最小化:(ⅰ)按照结束或非结束状态,初始划分成两个子集,即{1,2}, {3,4}(ⅱ)为得到下一分划,考察子集{1,2}。
因为δ(1,a)= 3 , δ(2,a)= 1故1和2可拆分,于是便得到当前划分{1}, {2}, {3,4}(ⅲ)再考虑{3,4},因为δ(3,a)= 1 , δ(4,a)= 1,δ(3,b)= 4 ,δ(4,b)= 4所以3和4不可区分,故子集{3,4}已不能再分裂。
子集分裂的过程宣告结束。
(ⅳ) 现选择状态3作为{3,4}的代表,将状态4从状态转换图中删去,并将原来指向4的箭头都指向3,这样,我们就得到了最小化后的DFA 如下所示:-5. 对于以下DFA ,根据课件中给出的控制器,按照下列表格给出符号串abcbb#的识别过程。
+。
编译原理第三章答案

第3章文法和语言第1题文法G=({A,B,S},{a,b,c},P,S)其中P为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。
答案:L(G[S])={abc}第2题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。
V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。
答案:G[S]: S->S+D|S-D|D D->0|1|2|3|4|5|6|7|8|9第4题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。
答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={a n b n|n>=1}第5题写一文法,使其语言是偶正整数的集合。
要求:(1) 允许0打头;(2)不允许0打头。
答案:(1)允许0开头的偶正整数集合的文法E→NT|D T→NT|D N→D|1|3|5|7|9 D→0|2|4|6|8(2)不允许0开头的偶正整数集合的文法E→NT|D T→FT|G N→D|1|3|5|7|9 D→2|4|6|8 F→N|0 G→D|0第6题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。
(5)i+(i+i)(6)i+i*i第8题文法G[S]为:S→Ac|aBA→abB→bc该文法是否为二义的?为什么?答案:对于串abc(1)S=>Ac=>abc (2)S=>aB=>abc即存在两不同的最右推导。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题第3章文法和语言
1.写一文法,使其语言是偶整数集合,但不允许由0打头。
3.写一文法G,使得L(G) = { a m b n| m≥0, n≥1 }
4.写一文法G,使得L(G) = { a m b n c p| m≥0, n≥0, p≥0 } 5.设有文法G1:S → AaB
S → a
A → AB
A → b
A →ε
B → bB
B →ε
写一文法G2,使得L(G1) = L(G2),并且G2不含空规则。
6.写一文法,使其语言是十位数不是0的整数集合。
7.写出以下文法G所定义的语言L(G)。
G:S → SaS
S → b
S → d
8.设有文法G1:S → Sab
S → c
S → d
将其改写成以下形式的文法G2,每条规则形如:
V → xW
或V → y
其中V和W为非终结符,x和y为终结符串。
9.设有文法G1:S → abcdB
B → efgB
B → b
将其改写成以下形式的3型文法G2,每条规则形如:
V → pW
或V → q
其中V和W为非终结符,p和q为终结符。
10.设有文法G1:S → aBBaS
B → bbAA
A → aAbBc
A → a
将其改写成以下形式的文法G2,每条规则形如:
V → pX1X2…X n
或V → q
其中V和X i为非终结符,p和q为终结符。
11.已知C语言的下标变量形如:
a[E][E]…[E]
按第10题要求的文法G2的形式写出下标变量文法。
12.设有文法G1:S → aBcA
S → aBdB
A → bA
A → aB
B → Bd
B → a
将其改写成文法G2,使得对每个非终结符均无两个不同规则能导出相同的终结开头符。
13.设有文法G:S → aBbD
B → bSD
B → aDa
B → bb
D → aBD
证明L(G)为空语言。
14.设有文法G1:S → 0Y | 1X | 1Y | 1S |ε
X → 1Y | 1S |ε
Y → 1Z
Z → 1S |ε
将其改写成不含空规则的文法G2,且L(G1) = L(G2)∪{ε}。
15.设有文法G:E → E+T | T
T → T*F | F
F → i | (E)
(1)构造句子(i*i+i)*i的语法树,并写出该句子的规范推导过程;
(2)构造句型F*(T+i)+i的语法树,并求出该句型的所有短语、简单短语和句柄。
16.构造一个二义性文法。
17. 课本P49. 第14题(1)(2)
18. 课本P49. 第16题(2)。