编译原理第1~5章习题课汇总解答_第1页
编译原理第1~5章习题课汇总解答_第2页
编译原理第1~5章习题课汇总解答_第3页
编译原理第1~5章习题课汇总解答_第4页
编译原理第1~5章习题课汇总解答_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、chapter11、何谓源程序、目标程序、翻译程序、编译程序、何谓源程序、目标程序、翻译程序、编译程序 和解释程序?它们之间可能有何种关系?和解释程序?它们之间可能有何种关系?源程序:用源语言编写的程序。源程序:用源语言编写的程序。目标程序:源程序经翻译程序过加工处理后生成的程序。目标程序:源程序经翻译程序过加工处理后生成的程序。翻译程序:将源程序转换为与其逻辑上等价的目标程序。翻译程序:将源程序转换为与其逻辑上等价的目标程序。编译程序:编译程序: 源语言为高级语言,目标语言为汇编语言或机源语言为高级语言,目标语言为汇编语言或机器语言的翻译程序。器语言的翻译程序。解释程序:解释程序: 源语言程

2、序作为输入,但不产生目标程序,而源语言程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。是边解释边执行源程序本身。 先翻译后执行先翻译后执行 边解释边执行边解释边执行执行速度快执行速度快 有利于程序的调试有利于程序的调试多次运算多次运算 1次运算次运算2、一个典型的编译系统通常由有哪些部分组成?、一个典型的编译系统通常由有哪些部分组成? 各部分的主要功能是什么?各部分的主要功能是什么?chapter1编译系统编译系统编译程序编译程序语法分析语法分析语义分析与中间代码生成语义分析与中间代码生成优化优化目标代码生成目标代码生成运行系统运行系统词法分析词法分析 语法分析语法分析(Synta

3、x Analysis): 在词法分析的基础上将单词序列分解成各类语法在词法分析的基础上将单词序列分解成各类语法短语,如短语,如“程序程序”,“语句语句”,“表达式表达式”等等。等等。 语义分析语义分析(Syntactic Analysis): 语义分析是在语法分析程序确定出语法短语后,审语义分析是在语法分析程序确定出语法短语后,审查有无语义错误,并为代码生成阶段收集类型信息。查有无语义错误,并为代码生成阶段收集类型信息。 chapter1 词法分析词法分析(Lexical Analysis): 从左到右一个字符一个字符的读入源程序,对从左到右一个字符一个字符的读入源程序,对构成源程序的字符串进

4、行扫描和分解,从而识别出构成源程序的字符串进行扫描和分解,从而识别出一个个单词(也称单词符号或简称符号)。一个个单词(也称单词符号或简称符号)。 chapter1 代码优化代码优化(Optimization of code): 为了使生成的目标代码更为高效,可以对产生的中为了使生成的目标代码更为高效,可以对产生的中间代码进行变换或进行改造,这就是代码的优化。间代码进行变换或进行改造,这就是代码的优化。 代码生成代码生成(Generation of code): 目标代码生成是编译器的最后一个阶段。在生成目目标代码生成是编译器的最后一个阶段。在生成目标代码时要考虑以下几个问题:计算机的系统结构、

5、指标代码时要考虑以下几个问题:计算机的系统结构、指令系统、寄存器的分配以及内存的组织等。令系统、寄存器的分配以及内存的组织等。 中间代码生成中间代码生成(Generation of intermediate code): 完成语法分析和语义处理工作后,编译程序将源程完成语法分析和语义处理工作后,编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间序变成一种内部表示形式,这种内部表示形式叫做中间语言或称中间代码,它是一种结构简单、含义明确的记语言或称中间代码,它是一种结构简单、含义明确的记号系统。号系统。chapter21.写出写出C语言和语言和Java语言的输入字母表。语言的输入字母

6、表。C语言:语言:09数字,大小写英文字母,键盘上可见的字符数字,大小写英文字母,键盘上可见的字符Java语言:语言:Unicode可以包括的所有字符。可以包括的所有字符。6.文法文法G6为为: N D|ND D 0|1|2|3|4|5|6|7|8|9 (1) G6的语言是什么的语言是什么? G6的语言是:的语言是: 09的数字组成的任意的数字组成的任意非空非空串串L(G6)=x|x0,1,2,3,4,5,6,7,8,9+(2)给出句子)给出句子0127、34和和568的最左和最右推导。的最左和最右推导。7、 写一文法,使其语言是写一文法,使其语言是奇数集奇数集。 要求:不以要求:不以0打头。

7、打头。复杂的情况复杂的情况: :分三部分分三部分末尾:以末尾:以1|3|5|7|9结尾结尾( (一位一位):):D 1|3|5|7|9开头:除了开头:除了0的任意数字的任意数字中间部分:空或者任意数字串中间部分:空或者任意数字串 D1|3|5|7|9 CCA| A0|B所以题目要求的文法所以题目要求的文法GNGN可以写成:可以写成:N BCD|DD 1|3|5|7|9B 2|4|6|8|DC CA |A 0 | BB2|4|6|8|D9、证明文法、证明文法: S iSeS | iS | i 是二义的。是二义的。二义性的含义二义性的含义: :如果文法存在如果文法存在某个句子某个句子对应两棵以上对

8、应两棵以上不同的语法树,或者两种以上不同的最不同的语法树,或者两种以上不同的最左左/ /右推导,则称这个文法是二义的。右推导,则称这个文法是二义的。首先:找到此文法对应的一个句子首先:找到此文法对应的一个句子 iiiei其次:构造与之对应的两棵语法树其次:构造与之对应的两棵语法树S i S e S i S i i S i S i S e S i i结论:因为该文法存在句子结论:因为该文法存在句子iiieiiiiei对应两棵对应两棵 不同的语法树,因而该文法是二义的。不同的语法树,因而该文法是二义的。11、给出下面语言的相应文法、给出下面语言的相应文法L1=anbnci| n1,i0 G1(S)

9、: SAB AaAb|ab BcB|从从n,i的不同取值来把的不同取值来把L1分成两部分:分成两部分:A aAb | ab 前半部分是前半部分是 an bn : 后半部分是后半部分是 c i :B Bc | 所以整个文法所以整个文法G1S可以写为:可以写为:L2=aibncn| n1,i0G2(S): SAB AaA| BbBc|bcL3=anbnambm| m,n0G3(S): SAB AaAb| BaBb|L4=1n 0m 1m 0n| n,m0可以看成是两部分:可以看成是两部分:剩下两边的部分就是:剩下两边的部分就是:S 1S0中间部分是中间部分是 0m 1m :A 0A1 | 所以所以

10、G4S可以写为:可以写为: S 1S0 | A A 0A1 | Achapter37.构造下列正规式相应的构造下列正规式相应的DFA。步骤步骤: :. .根据正规式画出对应的根据正规式画出对应的状态转换图状态转换图; ;. .根据状态转换图画出对应的根据状态转换图画出对应的状态转换矩阵状态转换矩阵; ;. .根据状态转换矩阵得到根据状态转换矩阵得到重命名后的状态转换矩阵重命名后的状态转换矩阵; ;. .根据重命名后的状态转换矩阵得出最后的根据重命名后的状态转换矩阵得出最后的DFA. .问题:将状态转换图与问题:将状态转换图与DFA混淆。混淆。1(0|1)*101.状态转换图状态转换图 abad

11、b1(0|1)*101a1(0|1)*101dcef101101ggg.状态转换矩阵状态转换矩阵II0I1ab,c,db,c,dc,dc,d,ec,dc,dc,d,ec,d,ec,d,fc,d,ec,d,fc,dc,d,e,gc,d,e,gc,d,fc,d,e1abdcef10101gII0I1ab,c,db,c,dc,dc,d,ec,dc,dc,d,ec,d,ec,d,fc,d,ec,d,fc,dc,d,e,gc,d,e,gc,d,fc,d,e. .重命名后的状态转换矩阵重命名后的状态转换矩阵S01A(始态始态)BBCDCCDDEDECF(终态终态)F(终态终态)EDAB10C1D010E1

12、0101F.DFA1(1010*|1(010)*1)*0abdc10e0101fghi01110jklmn.状态转换图状态转换图 .状态转换矩阵状态转换矩阵II 0I 101,2,31,2,345,9,10,115,9,10,116,122,36,122,3,7,8,132,345,9,10,112,3,7,8,132,3,4,8,10,115,9,10,112,3,4,8,10,112,3,4,8,122,3,5,9,10,112,3,4,8,122,3,4,85,9,10,11,132,3,5,9,10,114,6,122,3,5,9,10,112,3,4,82,3,4,85,9,10,1

13、15,9,10,11,136,10,11,122,34,6,122,3,7,8,136,10,11,12122,3,7,8,1312131310,1110,11122,3. .重命名后的状态转换矩阵重命名后的状态转换矩阵II 0I 112234456576347848910911121013101111412146137141571516161717156.DFA8、给出下面正规表达式、给出下面正规表达式(1)以)以01结尾的二进制数串。结尾的二进制数串。(0 | 1)*01(2)能被能被5整除的十进制数。整除的十进制数。(3)包含奇数个)包含奇数个1或奇数个或奇数个0的二进制串。的二进制串。

14、0*1(0|10*1)* | 1*0(1|01*0)* (d1d2*| ) (0|5) d1 为为1-9 d2 为为0-9 (4)英文字母组成的所有符号串,要求符号串中的)英文字母组成的所有符号串,要求符号串中的 字母按字典序排列。字母按字典序排列。(A | a)* (B | b)* (C | c)* (Z | z)*(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的全排列的全排列 ri0ri1.

15、ri9 i0i1. i9 P(0,1,2.,9)从从n个不同元素中任取个不同元素中任取m(mn)个元素,按照一)个元素,按照一定的顺序排列起来,叫做从定的顺序排列起来,叫做从n个不同元素中取出个不同元素中取出m个元素的一个排列。当个元素的一个排列。当m=n时所有的排列情况叫时所有的排列情况叫全排列。全排列。(6) 最多有一个重复出现的数字的数字符号串全体最多有一个重复出现的数字的数字符号串全体 i ri0ri1.ri9i (0,1,2.,9) i0i1. i9 P(0,1,2.,9)(8.7) 不包含子串abb的由a和b组成的符号串的全体b*(a|ab)*ba213ab9、对下面情况给出、对下

16、面情况给出DFA及正规表达式:及正规表达式:(1)0,1上的含有子串上的含有子串010的所有串。的所有串。正规式:正规式:(0 | 1)* 010 (0 | 1)* DFA做法同第做法同第7题。题。(2) 0,1上不含子串上不含子串010的所有串。的所有串。正规式:正规式:1*(0|111*)1*两端均不为两端均不为0,中间不能出现单个的,中间不能出现单个的112、将图、将图3.18的的(a)和和(b)分别确定化和最少化。分别确定化和最少化。(a)aaa,b10.状态转换矩阵状态转换矩阵 I Ia Ib 00,1110,10,110. .重命名后的状态转换矩阵重命名后的状态转换矩阵 I Ia

17、Ib 012211200a2baba.DFA.最小化最小化0=(0,1,2)10,1a=10,1b=2因此,不能再分因此,不能再分02baa023145aaaabbbbbbaa(b)这道题实质上已经是确定化了的,所以我们只需最小化这道题实质上已经是确定化了的,所以我们只需最小化 :2,3,4,5 0,1 2,3,4,5a=0,1,3,5 分属两区,所以分为分属两区,所以分为2,4 3,5 0,1a=1 0,1b=2,4 所以所以 0,1等价等价2,4a=0,1 2,4b=3,5 所以所以2,4等价等价 3,5a=3,5 3,5b=2,4 所以所以3,5等价等价所以分为所以分为 0,1 2,4

18、3,5 023aabbba14、构造一个、构造一个DFA,它接受,它接受=0,1上所有满足如下上所有满足如下 条件的字符串:每个条件的字符串:每个1都有都有0直接跟在右边。直接跟在右边。思路:先写出满足条件的正规式,由正规式构造思路:先写出满足条件的正规式,由正规式构造 NFA,再把,再把NFA确定化和最小化。确定化和最小化。满足条件的正规式:满足条件的正规式:(0|10)* 正规式不同,则构造的正规式不同,则构造的NFA及确定化的及确定化的DFA可能可能不同,但最小化的不同,但最小化的DFA是唯一的。是唯一的。02100最小化后的最小化后的DFA:14. 构造DFA, 它接受=0,1上所有满

19、足如下条件的字符串: 每个1都有0直接跟在右边XY(0|10)*XY10201X2010XY1020101X,1,Y 1,Y 21,Y1,Y 221,Y确定化确定化0 1X X 22 X最小化最小化X201015、给定右线性文法、给定右线性文法G:求一个与:求一个与G等价的左线性文法。等价的左线性文法。S 0S | 1S | 1A | 0BA 1C | 1B 0C | 0C 0C | 1C | 0 | 1SABCZ001110001101GZ:Z Z0|Z1|B0|A1B A0 | 0A B1 | 1确定化、最小化后的确定化、最小化后的DFA为:为:SB0A110Z010,1补充:构造一右线性

20、文法,使它与如下文法等价:补充:构造一右线性文法,使它与如下文法等价: SAB AUT Ua|aU Tb|bT Bc|cB 并根据所得右线性文法,构造出相应的状态转换图。并根据所得右线性文法,构造出相应的状态转换图。思路:思路: 先写出原文法所描述的语言先写出原文法所描述的语言 L(G)=ambnck|m,n,k1GS: S aS|aB B bB|bC C cC|caSaCbcBbcTchapter41、考虑下面文法、考虑下面文法G1:S a | | (T) T T,S | S(1)消去)消去G1的左递归;的左递归;S a | | (T)T STT ,S T |(2)经改写后的文法是否是)经改

21、写后的文法是否是LL(1)文法,给出预测分析表。文法,给出预测分析表。经改写后的文法满足经改写后的文法满足3个条件,所以是个条件,所以是LL(1)的的预测分析表构造算法预测分析表构造算法:1.对文法中的每个产生式对文法中的每个产生式A 执行第二步和第三步执行第二步和第三步;2.对每个终结符对每个终结符a FIRST( ),把把A a加到加到MA,a中中;S a; S ; S (T); T ST; T ,ST T FTRST(a)=aFIRST()=FIRST(T)=( FIRST(ST)=a,(,(FIRST(,(,ST)=,FIRST()= a(,)#S T T S aS S (T)T ST

22、T STT STT ,ST3.若若 FIRST( ),则对于任何则对于任何b FOLLOW(A)把把A 加至加至MA,b中中FOLLOW(T)=FOLLOW(T)=)T P81.2.对文法对文法G: E TE E +E| T FT T T| F PF F *F| P (E)|a|b| FIRST(E)=FIRST(T) =FIRST(F) =FIRST(P) =(,a,b, FIRST(E)=+, FIRST(T) =FIRST(T) = (,a,b, , FIRST(F)=*, FOLLOW(E) =#,)FOLLOW(E) =FOLLOW(E)= #,)FOLLOW(T) =FIRST(E

23、) FOLLOW(E)= +,#,)FOLLOW(T) =FOLLOW(T)= +,#,)FOLLOW(F) =FIRST(T) FOLLOW(T)=(,a,b, , +,#,)FOLLOWF) =FOLLOW(F) =(,a,b, , +,#,)FOLLOW(P) =FIRST(F) FOLLOW(F)= *, (,a,b, , +,#,) (ab+*)#EETTFFPE TE E TE E TE E TEE +EE E T FT T FT T FT T FT T T T T T T T T T T T F PF F PF F PF F PF F F F F F F * FF F P(E)

24、Pa Pb P 补充题:有文法:补充题:有文法: E TE E ATE | T FT T MFT | F (E)| i A + | - M * | /(1)求)求First、Follow集,判断是否是集,判断是否是LL(1)文法?)文法?(2)若是构造)若是构造LL(1)分析表?)分析表?(3)简述)简述LL(1)分析器的工作原理。)分析器的工作原理。E TEE ATE |T FTT MFT |F (E)| iA + | -M * | /FIRST(M)=* , /FIRST(A)=+,- FIRST(F)=(, iFIRST(T)=* ,/ , FIRST(T)=(, i)FIRST(E)=

25、+ ,- , FIRST(E)=(, iFOLLOW(E)=# ,)FOLLOW(E)=# ,)FOLLOW(T)= + ,- ,# ,)FOLLOW(T)= + ,- ,# ,)FOLLOW(F)=* ,/ , + ,- ,# ,) FOLLOW(A)= (, iFOLLOW(M)= (, iEE TE E TE E E ATEE ATE E E TT FT T FT T T-T T MFTT MFT T T FF i F (E) A A +A - M M *M / i+-*/()#chapter51、令文法、令文法G1为:为: EE+T | T TT*F | F F(E) | i 证明证明

26、E+T*F是它的一个句型,指出这个句型的所有是它的一个句型,指出这个句型的所有短语、直接短语和句柄。短语、直接短语和句柄。EE+TT*FT*F是句型是句型E+T*F相对于相对于T的短语的短语E+T*F句型句型E+T*F相对于相对于E的短语的短语T*F是句型是句型E+T*F相对于相对于T的直接短语的直接短语T*F是句柄是句柄2、考虑下面的表格结构文法、考虑下面的表格结构文法G2: Sa | | (T) T T,S | S(1)给出)给出(a,(a,a)和和(a,a),(a),a)的最左和最右推导。的最左和最右推导。(a,(a,a)的最左推导:的最左推导:S (T) (T,S) (S,S) (a,

27、S) (a,(T) (a,(T,S) (a,(S,S) (a,(a,S) (a,(a,a)(a,a),(a),a)的最左推导:的最左推导:S (T) (T,S) (S,S) (T),S) (T,S),S) (T,S,S),S) (S,S,S),S) (T,S),S,S),S) (S,S),S,S),S) (a,S),S,S),S) (a,a),S,S),S) (a,a),S),S) (a,a),a),S) (a,a),a),a)(a,a),(a),a)的最右推导:的最右推导:S (T) (T,S) (S,S) (S,a) (T),a) (T,S,S),S) (S,S,S),S) (T,S),S

28、,S),S) (S,S),S,S),S) (a,S),S,S),S) (a,a),S,S),S) (a,a),S),S) (a,a),a),S) (a,a),a),a)(a,(a,a)的最右推导:的最右推导:S (T) (T,S) (T,(T) (T,(T,S) (T,(T,a) (T,(S,a) (T,(a,a) (S,(a,a) (a,(a,a)2)指出)指出(a,a),(a),a)的规范归约及每一步的句柄。的规范归约及每一步的句柄。S(T)T,Sa(T)ST,ST,S(T)Sa(T)ST,SaSa句型句型句柄句柄归约规则归约规则(a,a),(a),a)aSa(S,a),(a),a)STS(T,a),(a),a)aSa(T,S),(a),a)T,STT , S(T),(a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论