编译原理复习题及复习资料

合集下载

《编译原理》期末复习资料(完整版)

《编译原理》期末复习资料(完整版)

1.给出语言{a n b n a m b m | n,m≥0}的一个上下文无关文法。

(6分)解:G[S]:S—>ABA—>aAb |εB—>aBb |ε2.给出语言{1 n 0 m 1 m0 n | n,m≥0}的一个上下文无关文法。

解:G[S]:S—>1S0 | AA—>0A1 |ε3.P48 第6题(5)、(6).画语法树6、已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i(5)i+(i+i) (6)i+i*i解:(5)语法树:(6)语法树:4.P48第13题直接短语等13、一个上下文无关文法生成句子abbaa的推导树如下:(3)求直接短语解:直接短语有:a ε bP102例题6.1及其分析.( 后加画语法树)例6.1 设文法G[S]为:(1)S—>aAcBe(2)A—>b(3)A—>Ab(4)B—>d对输入串abbcde#进行分析,检查该符号串是否是G[S]的句子。

步骤符号栈输入符号串动作(1)# abbcde# 移进(2)#a bbcde# 移进(3)#ab bcde# 归约(A—>b)(4)#aA bcde#移进(5)#aAb cde# 归约(A—>Ab)(6)#aA cde# 移进(7)#aAc de# 移进(8)#aAcd e# 归约(B—>d)(9)#aAcB e# 移进(10)#aAcBe # 归约(S—>aAcBe)(11)#S # 接受一、计算分析题(60%)1、正规式→ NFA→ DFA→最简DFAP72第1题(1)、(4);第一题1、构造下列正规式相应的DFA.(1)1(0|1)*101解:先构造NFA0 1S AA A ABAB AC ABAC A ABZABZ AC AB除S,A外,重新命名其他状态,令AB为B、AC为C、ABZ为D,因为D含有Z(NFA的终态),所以0 1S AA A BB C BC A DD C B(4) b((ab)*|bb)*ab解:先构造NFA得到DFA如下所示:P72第4题(a)4、把下图确定化和最小化解:确定化:a b0 01 101 01 11 0、{1},其中A为初态,A,B为终态,因此有:a bA B CB B CC A最小化::初始分划得终态组{A,B},非终态组{C}Π0:{A,B},{C},对终态组进行审查,判断A和B是等价的,故这是最后的划分。

编译原理复习题

编译原理复习题

编译原理复习题1. 定义和分类- 什么是编译原理?- 编译器的主要功能是什么?- 列举编译器的几种类型,并简要描述它们的特点。

2. 词法分析- 词法分析在编译过程中的作用是什么?- 描述词法分析器的工作原理。

- 举例说明如何使用正则表达式进行词法分析。

3. 语法分析- 语法分析的目的是什么?- 解释上下文无关文法和上下文有关文法的区别。

- 描述递归下降解析器的工作原理。

4. 语义分析- 语义分析的任务是什么?- 描述如何使用属性文法进行语义分析。

- 解释类型检查的重要性及其在语义分析中的应用。

5. 中间代码生成- 中间代码的作用是什么?- 列举常见的中间代码形式,并解释它们的优缺点。

- 描述如何从源代码生成三地址代码。

6. 代码优化- 代码优化的目标是什么?- 解释局部优化和全局优化的区别。

- 描述几种常见的代码优化技术。

7. 目标代码生成- 目标代码生成的重要性是什么?- 描述如何将中间代码转换成目标机器代码。

- 解释寄存器分配和指令调度的概念。

8. 符号表管理- 符号表在编译过程中的作用是什么?- 描述符号表的组织结构。

- 解释如何在编译过程中维护和更新符号表。

9. 错误处理- 编译过程中常见的错误类型有哪些?- 描述错误检测和报告的策略。

- 解释如何设计一个有效的错误恢复机制。

10. 编译原理的应用- 编译原理在现代软件开发中的重要性是什么?- 列举编译原理在不同领域的应用实例。

- 讨论编译原理在人工智能和机器学习领域的潜在应用。

结束语编译原理不仅仅是计算机科学中的一个理论领域,它在实际的软件开发和系统设计中扮演着至关重要的角色。

通过深入理解编译原理,我们可以更有效地编写和优化软件,提高程序的性能和可靠性。

希望这些复习题目能够帮助你更好地掌握编译原理的基础知识和应用技巧。

(完整word版)编译原理复习题(word文档良心出品)

(完整word版)编译原理复习题(word文档良心出品)

编译原理复习一、简述题1、简述编译程序的工作过程编译程序的工作,即从输入源程序开始到输出目标程序为止的整个过程是非常复杂的。

通常,编译程序的工作过程可以划分为5个阶段:第1阶段,词法分析。

词法分析的任务是输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词(亦称单词符号或简称符号),如保留字(基本字)、标识符、算符、界符等。

依循的原则:构词规则描述工具:有限自动机第2阶段,语法分析。

语法分析的任务是在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位(语法范畴),如语句、程序块、函数等,判断整个输入串是否是一个语法上正确的“程序”。

依循的原则:语法规则描述工具:上下文无关文法第3阶段,语义分析与中间代码产生。

这一阶段的任务是对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。

通常的中间代码有三元式、四元式、间接三元式、逆波兰式等。

依循的原则:语义规则第4阶段,优化。

优化的任务在于对前段产生的中间代码进行加工变换,以期在最后阶段能产生更为高效(省时间和空间)的目标代码。

优化的主要方法有公共子表达式的提取、循环优化等。

依循的原则:程序的等价变换规则第5阶段,目标代码生成。

这一阶段的任务是把中间代码(或经优化处理之后的中间代码)变换成特定机器上的低级语言代码。

目标代码三种形式:绝对指令代码: 可直接运行可重新定位指令代码: 需要连接装配汇编指令代码: 需要进行汇编2、编译程序在分析语言程序的过程中将源语言程序的各种信息都保留在各种表格中,同时,在源语言程序出错时,编译程序要帮助进行错误判断、错误定位等,因此表格管理及出错处理和编译程序的各个阶段都有关联。

编译程序的结构图如图所示。

其中词法分析器,又称扫描器,输入源程序,进行词法分析,输出单词符号。

语法分析器,简称分析器,对单词符号串进行语法分析,识别出各类语法单位,最终判断输入串是否构成语法上正确的“程序”。

编译原理复习题

编译原理复习题

编译原理(一)一、是非题1、算符优先关系表不一定存在对应的优先函。

………………………………………()2、数组元素的地址计算与数组的存储方式有关。

……………………………()3、仅考虑一个基本块,不能确定一个赋值是否真是无用的。

…………………………()4、每个文法都能改写为LL(1)文法。

……………………………………………()5、对于数据空间的存贮分配,FORTRAN采用动态贮存分配策略。

………………()二、填空题1、从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

2、扫描器的任务是从()中识别出一个个()。

3、所谓最右推导是指:()。

4、语法分析最常用的两类方法是()和()分析法。

5、一个上下文无关文法所含四个组成部分是()。

6、所谓语法制导翻译方法是()。

7、符号表中的信息栏中登记了每个名字的有关的性质,如()等等。

8、一个过程相应的DISPLA Y表的内容为()。

9、常用的两种动态存贮分配办法是()动态分配和()动态分配。

10、产生式是用于定义()的一种书写规则。

三、名词解释1、遍--2、无环路有向图(DAG)--3、语法分析--4、短语--5、后缀式--四、简述题1、考虑下面程序…………V ar a:integer;Procedure S(X);V ar X:integer;Begina:=a+1;X:=a+XEnd;Begina:=5;S(a);Print(a)End.试问:若参数传递方式分别采取传名和传值时,程序执行后输出a的值是什么?2、画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

3、写出表达式(a+b*c)/(a+b)-d的逆波兰表示及三元式序列。

4、已知文法G(S)S→a|∧|(T)T→T,S|S写出句子((a,a),a)的规范归约过程及每一步的句柄。

5、何谓优化?按所涉及的程序范围可分为哪几级优化?6、目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?五、计算题1、写一个文法,使其语言是奇数集,且每个奇数不以0开头。

编译原理复习资料

编译原理复习资料

第1部分一简答题1.编译程序按功能分为哪几个阶段?各个阶段的主要功能?2.实现高级语言程序的途径有哪几种?它们之间的区别?3.给出描述非0数字作为开始符的奇数字符串的正则表达式或正则式。

4.判断字符串a n b n(n >0)是否可用确定自动机识别?如果能,则画出自动机,否则说明原因5.对如下文法:G[S]:S → a b S | a a B | a dB → b b B | b分别给出句子abaabbb和ad的句柄6.有如下文法,给出每个产生式的Predict集。

P → begin S endS → id := E ; S |E → n | id7.什么是可规约活前缀?举一例说明。

8.通过合并LR(1)文法中的同心状态得到的LALR(1)文法可能会产生哪些冲突?一定不会产生哪些冲突?9.设对偶表(L,N)分别表示程序在当前位置的层数和偏移量,确定下面程序段中括号部分的内容。

假设系统规定整型(int)变量占1个单元,实型(real)变量占2个单元。

(L, N) Type at = array of [1..10] of int;(①) var x :real;(②) function f ( ( ?,M) var a: at,(③) b: at,(④) var x: real ) : int10.给出活动记录空间结构?并给出各部分的存储对象?11.有如下文法:G[S]:S → ( L ) | aL → S PP → , S P |给出该文法的动作文法打印每个a的嵌套深度。

例如(a,(a),(a))打印1,2,2。

12.文法可分为几类;各举一例。

13.Display表的作用?14.如下是当前执行某个过程时的活动记录,设变量x的层数和偏移量分别为L和Off,说明如何访问变量x。

15.当实参为变量,形参分别为变参和值参时,传参的区别。

二、说明如下文法是否是LL(1)文法,若不是,将其转换为LL(1)文法。

编译原理期末总结复习

编译原理期末总结复习

编译原理期末总结复习编译原理期末总结复习篇一:一、简答题1.什么是编译程序?答:编译程序是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序。

将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。

2.请写出文法的形式定义?答:一个文法G抽象地表示为四元组 G=(Vn,Vt,P,S)–其中Vn表示非终结符号– Vt表示终结符号,Vn∪Vt=V(字母表),Vn∩Vt=φ– S是开始符号,–P是产生式,形如:α→β(α∈V+且至少含有一个非终结符号,β∈V*)3.语法分析阶段的功能是什么?答:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。

确定整个输入串是否构成语法上正确的程序。

4.局部优化有哪些常用的技术?答:优化技术1—删除公共子表达式优化技术2—复写传播优化技术3—删除无用代码优化技术4—对程序进行代数恒等变换(降低运算强度)优化技术5—代码外提优化技术6—强度削弱优化技术7—删除归纳变量优化技术简介——对程序进行代数恒等变换(代数简化)优化技术简介——对程序进行代数恒等变换(合并已知量)5.编译过程分哪几个阶段?答:逻辑上分五个阶段:词法分析、语法分析、语义分析与中间代码生成、代码优化、目标代码生成。

每个阶段把源程序从一种表示变换成另一种表示。

6. 什么是文法?答:文法是描述语言的语法结构的形式规则。

是一种工具,它可用于严格定义句子的结构;用有穷的规则刻划无穷的集合;文法是被用来精确而无歧义地描述语言的句子的构成方式;文法描述语言的时候不考虑语言的含义。

7. 语义分析阶段的功能是什么?答:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码);并对静态语义进行审查。

8.代码优化须遵循哪些原则?答:等价原则:不改变运行结果有效原则:优化后时间更短,占用空间更少合算原则:应用较低的代价取得较好的优化效果9.词法分析阶段的功能是什么?答:逐个读入源程序字符并按照构词规则切分成一系列单词任务:读入源程序,输出单词符号—滤掉空格,跳过注释、换行符—追踪换行标志,指出源程序出错的行列位置—宏展开,……10.什么是符号表?答:符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息。

《编译原理》期末复习资料汇总

《编译原理》期末复习资料汇总

《编译原理》期末复习资料【题1】1.(a|b)*(aa|bb)(a|b)*画出状态转换图。

Ia Ib①1,2,3 2,3,4 2,3,5②2,3,4 2,3,4,6,7,8 2,3,5③2,3,5 2,3,4 2,,3,5,6,7,8④2,3,4,6,7,8 2,3,4,6,7,8 2,3,5,7,8⑤2,3,5,6,7,8 2,3,4,7,8 2,3,5,6,7,8⑥2,3,5,7,8 2,3,4,7,8 2,3,5,6,7,8⑦2,3,4,7,8 2,3,4,6,7,8 2,3,5,7,8Ia Ib1 2 32 4 33 2 54 4 65 7 56 7 57 4 6新的状态转换图如下:(1)A={1,2,3},B={4,5,6,7} Aa={2,4} ×(2)A={1,3},B={2},C={4,5,6,7} Aa={2}⊂B,Ab={3,5} ×(3)A={1},B={2},C={3},D={4,5,6,7}(单元素可以不用看,必有,古先看D)Da={4,7}⊂D,Db={5,6}⊂D,Aa={2}⊂B,Ab={3}⊂C,Ba={4}⊂D,Bb={3}⊂C,Ca={2}⊂B,Cb={5}⊂C,则有baA B CB D CC B DD D D2.(a*|b*)b(ba)*的状态转换图。

Ia Ib①1,2,3,4 2,4 3,4,5,6,8②2,4 2,4 5,6,8③3,4,5,6,8 --- 3,4,5,6,7,8④5,6,8 --- 7⑤3,4,5,6,7,8 6,8 3,4,5,6,7,8⑥7 6,8 ---⑦6,8 --- 7Ia Ib1 2 32 2 43 --- 54 --- 65 7 56 7 ---7 --- 6新的状态转换图如下:化简:(用终结状态与非终结状态,然后输出状态一致分一类)。

(1)A={1,2,6},B={3,4,5,7} Aa={2} ×(2)A={1,2},B={6},C={3,4,7},D={5} Cb={5,6} ×(只要有一个不属于任何一个集合,就不行) (3)A={1,2},B={6},C={3},D={4,7},E={5} Ab={3,4} × (4) A={1},B={2},C={6},D={3},E={4,7},F={5} Aa={2}⊂B ,Ab={3}⊂D ,Ba={2}⊂B ,Bb={4}⊂E ,Ca={7}⊂E ,Db={5}⊂F ,Eb={6}⊂C ,Fa={7}⊂E ,Fb={5}⊂Fa b A B D B B E C E --- D --- F E --- C FEF[注意事项]:[知识要点]:正则表达式:******|,|,)|(,)|(,)(,,|,ab a b a a b a a b a ab ab b a a{}a a aaa aa a a ,,,,*ε⇔;{}b a a b a ,)b (|⇔或;{}ab b a ab ⇔)(和;(){},,,,*ababab abab ab ab ε⇔;()()()(){} ,,,,,,||||*baba aabb aab b a b a b a b a b a ε⇔⇔()*|b a a 是最左边一个字母一定是a ,其余字母为b a 、的任意组合,不包括ε。

(完整版)编译原理复习题

(完整版)编译原理复习题

(完整版)编译原理复习题《编译原理》常见题型一、填空题1、编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,目标代码生成等几个基本阶段。

2、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

3、编译方式与解释方式的根本区别在于是否生成目标代码。

5、对编译程序而言,输入数据是源程序,输出结果是目标程序。

7、若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

8、一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。

其中,词法分析器用于识别单词。

10、一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。

12、产生式是用于定义语法成分的一种书写规则。

13、设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为L(G)={x│S*x,x∈V T*} 。

14、设G是一个给定的文法,S是文法的开始符号,如果S*x(其中x∈V*),则称x是文法的一个句型。

15、设G是一个给定的文法,S是文法的开始符号,如果S*x (其中x∈V T*),则称x是文法的一个句子。

16、扫描器的任务是从源程序中识别出一个个单词符号。

17、语法分析最常用的两类方法是自上而下和自下而上分析法。

18、语法分析的任务是识别给定的终结符串是否为给定文法的句子。

19、递归下降法不允许任一非终结符是直接左递归的。

20、自顶向下的语法分析方法的关键是如何选择候选式的问题。

21、递归下降分析法是自顶向下分析方法。

22、自顶向下的语法分析方法的基本思想是:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

23、自底向上的语法分析方法的基本思想是:从给定的终结符串开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

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

编译原理复习题及答案一、选择题1.一个正规语言只能对应(B)A 一个正规文法B 一个最小有限状态自动机2.文法G[A]:A→εA→aB B→Ab B→a是(A)A 正规文法B 二型文法3.下面说法正确的是(A)A 一个SLR(1)文法一定也是LALR(1)文法B 一个LR(1)文法一定也是LALR(1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)A 必要条件B 充分必要条件5.下面说法正确的是(B)A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是(A)A 归约速度快B 对文法限制少7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(A)A Lex是一个词法分析器的生成器B Yacc是一个语法分析器9.下面说法正确的是(A)A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C)。

A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序12.(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序13.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器14.源程序是句子的集合,(B)可以较好地反映句子的结构。

A. 线性表B. 树C. 完全图D. 堆栈15.词法分析器的输出结果是(D)。

A、单词自身值B、单词在符号表中的位置C、单词的种别编码D、单词的种别编码和自身值16.词法分析器不能(D)A. 识别出数值常量B. 过滤源程序中的注释C. 扫描源程序并识别记号D. 发现括号不匹配17.文法:G:S→xSx | y所识别的语言是(D)。

A、xyxB、(xyx)*C、x*yx*D、x n yx n (n≥0) 18.如果文法G是无二义的,则它的任何句子α(A)A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能不同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但它们对应的语法树相同19.正则文法(A)二义性的。

A. 可以是B. 一定不是C. 一定是20.(B)这样一些语言,它们能被确定的有穷自动机识别,但不能用正则表达式表示。

A. 存在B. 不存在C. 无法判定是否存在21.给定文法A→bA | ca,为该文法句子的是(C)A. bbaB. cabC. bcaD. cba22.设有文法G[S]:S S1|S0|Sa|Sc|a|b|c,下列符号串中是该文法的句子有(D)A. ab0B. a0c01C. a0b0aD. bc1023.描述一个语言的文法是(B)A.唯一的 B. 不唯一的 C. 可能唯一24.一个文法所描述的语言是(A)A.唯一的 B. 不唯一的 C. 可能唯一25.采用自上而下分析,必须(A)。

A、消除回溯B、消除左递归C、消除右递归D、提取公共左因子26.编译过程中,语法分析器的任务是(A)①分析单词的构成②分析单词串如何构成语句③分析语句是如何构成程序④分析程序的结构A. ②③B. ④C. ①②③④D. ②③④27.词法分析器的输入是( A)。

A.符号串B.源程序C.语法单位D.目标程序28.两个有穷自动机等价是指它们的(C)。

A.状态数相等B.有向弧数相等C.所识别的语言相等D.状态数和有向弧数相等29.若状态k含有项目“A→α·”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A →α”归约的语法分析方法是(D)。

A.LALR分析法B.LR(0)分析法C.LR(1)分析法D.SLR(1)分析法30.若a为终结符,则A→α · aβ为(B)项目。

A.归约B.移进C.接受D.待约31.在使用高级语言编程时,首先可通过编译程序发现源程序的全部和部分(A)错误。

A. 语法B. 语义C. 语用D. 运行32.乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。

其中3型文法是(B)A. 非限制文法B. 正则文法C. 上下文有关文法D. 上下文无关文法33.一个上下文无关文法G包括四个组成部分,它们是一组非终结符号,一组终结符号,一个开始符号,以及一组(B)A. 句子B. 产生式C. 单词D. 句型34.词法分析器用于识别(C)A. 句子B. 产生式C. 单词D. 句型35.编译程序是一种(B)A. 汇编程序B. 翻译程序C. 解释程序D. 目标程序36.按逻辑上划分,编译程序第三步工作是(A)A. 语义分析B. 词法分析C. 语法分析D. 代码生成37.在语法分析处理中,FIRST集合、FOLLOW集合均是(B)A. 非终结符集B.终结符集C. 字母表D. 状态集38.编译程序中语法分析器接收以(A)为单位的输入。

A. 单词B. 表达式C. 产生式D. 句子39.编译过程中,语法分析器的任务就是(B)A. 分析单词是怎样构成的B. 分析单词串是如何构成语句和说明的C. 分析语句和说明是如何构成程序的D. 分析程序的结构40.若一个文法是递归的,则它所产生的语言的句子(A)。

A.是无穷多个B.是有穷多个C.是可枚举的D.个数是常量41.识别上下文无关语言的自动机是(C)A. 下推自动机B. NFAC. DFAD. 图灵机42.编译原理各阶段工作都涉及(B)A.词法分析B.表格管理C.语法分析D.语义分析43.正则表达式R1和R2等价是指(C)A. R1和R2都是定义在一个字母表上的正则表达式B. R1和R2中使用的运算符相同C. R1和R2代表同一正则集D. R1和R2代表不同正则集44.已知文法G[S]:S→A1,A→A1|S0|0。

与G 等价的正规式是(C)A. 0(0|1)*B. 1*|0*1C. 0(1|10)*1D. 1(10|01)*045.与(a|b)*(a|b)等价的正规式是(C)。

A.a*| b*B.(ab)*(a|b)C. (a|b)(a|b)*D.(a|b)*46.(D)文法不是LL(1)的。

A. 递归B. 右递归C. 2型D.含有公共左因子的47.给定文法A→bA|cc,则符号串①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc中,是该文法句子的是(D)A. ①B. ③④⑤C. ②④D. ①⑤48.LR(1)文法都是()A. 无二义性且无左递归B. 可能有二义性但无左递归C. 无二义性但可能是左递归D. 可以既有二义性又有左递归49.文法E→E+E|E*E|i的句子i*i+i*i有(C)棵不同的语法树。

A. 1B. 3C. 5D.750.文法S→aaS|abc 定义的语言是(C)。

A.{a2kbc|k>0}B.{akbc|k>0}C.{a2k-1bc|k>0}D.{akakbc|k>0}51.若B为非终结符,则A→.B为(D)。

A.移进项目B.归约项目C.接受项目D.待约项目52.同心集合并可能会产生新的(D)冲突。

A.二义B.移进/移进C.移进/归约D.归约/归约53.就文法的描述能力来说,有(C)A.SLR(1) ⊂ LR(0) B.LR(1) ⊂ LR(0) C.SLR(1) ⊂LR(1) D.无二义文法⊂LR(1) 54.如图所示自动机M,请问下列哪个字符串不是M所能识别的(D)。

A. bbaaB. abbaC. ababD. aabb55.有限状态自动机能识别(C)A.上下文无关语言B.上下文有关语言C.正规语言D.0型文法定义的语言56.已知文法G是无二义的,则对G的任意句型α(A)A.最左推导和最右推导对应的语法树必定相同B.最左推导和最右推导对应的语法树可能相同C.最左推导和最右推导必定相同D.可能存在两个不同的最左推导,但他们对应的语法树相同57.(B)不是DFA的成分A.有穷字母表B.多个初始状态的集合C.多个终态的集合D.转换函数58.与逆波兰式(后缀表达式)ab+c*d+对应的中缀表达式是(B)A. a+b+c*dB. (a+b)* c+dC. (a+b)* (c+d)D. a+b*c+d59.后缀式abc−+−d+可用表达式(B)来表示。

A.(− (a+b)−c)+d B.−(a+(b−c))+d C.−(a−(b+c))+d D.(a−(−b+c))+d 60.表达式A*(B-C*(C/D))的后缀式为(B)。

A.ABC-CD/** B.ABCCD/*-* C.ABC-*CD/* D.以上都不对61.(D)不是NFA的成分。

A. 有穷字母表B. 初始状态集合C. 终止状态集合D. 有限状态集合二、问答题1.将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

G[S]:S→bSAe | bAA→Ab | d答:文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]为:S→bBB→SAe | AA→d A'A' →bA' | ε2.将文法G[S] 改写为等价的G'[S],使G'[S]不含左递归和左公共因子。

G[S]:S→SAe|AeA→dAbA|dA|d答:文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]为:S →AeS'S' →AeS'|εA →dA'A' →AB|εB →bA |ε3.将文法G[S] 改写为等价的G'[S],使G'[S]不含左递归和左公共因子。

G[S]:S→[AA→B]|ASB→aB|a答:文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]为:S →[AA →B]A′A′→SA′|εB →aB′B′→B|ε4.判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表。

S→aHH→aMd | dM→Ab | εA→aM | e答:首先计算文法的FIRST集和FOLLOW集如下表。

文法的FIRST集和FOLLOW集非终结符FIRST集FOLLOW集S {a}.........{# }...H {a ,d}.....{# }...M {a ,e ,ε}{d ,b}A {a ,e}.....{b}....由于predict(H→aMd)∩predict(H→d)={a}∩{d }=predict(M→Ab)∩predict(M→ε)={a ,e}∩{d ,b }=predict(A→aM)∩predict(A→e)={ a }∩{ e }=所以该文法是LL(1)文法,LL(1)分析表如下表。

相关文档
最新文档