编译原理试题2
- 格式:doc
- 大小:237.50 KB
- 文档页数:9
东师《编译原理》15春在线作业2一、单选题(共20 道试题,共60 分。
)V 1. 在语法分析处理中,FIRST集合、FOLLOW集合均是什么样的集合()。
A. 非终极符集B. 终极符集C. 字母表D. 状态集满分:3 分2. 在BNF表示方法中,“|”表示什么()。
A. 与B. 或C. 非D. 引导开关参数满分:3 分3. 如果一个DFA的两个不同的状态s和t具有什么关系,则称s和t等价()。
A. 已区分B. 待区分C. 可区分D. 不可区分满分:3 分4. 假设某程序语言的文法如下:S→SaT∣T,T→TbR∣R,R→PdR ∣P,P→fSg∣e,那么,此文法是哪一类文法()。
A. 正规文法B. 算符文法C. 二义性文法D. LL(1)文法满分:3 分5. 基本块的性质中包含哪一条()。
A. 只有一个入口语句和一个出口语句B. 有一个入口语句和多个出口语句C. 有多个入口语句和一个出口语句D. 有多个入口语句和多个出口语句满分:3 分6. 表示流程图中各结点间控制关系的一种直观而有效的数据结构,称之为什么()。
A. 控制结点树B. 语法树C. 树形表示D. 二叉树满分:3 分7. 正则式的“*”读作什么()。
A. 并且B. 或者C. 连接D. 闭包满分:3 分8. 两个有穷自动机等价是指它们的什么相等()。
A. 状态数相等B. 有向弧数相等C. 所识别的语言相等D. 状态数和有向弧数相等满分:3 分9. 与正规式(a|b)* 等价的正规式是哪个()。
A. a*|b*B. a*b*C. (a*b*)*D. (ab)*满分:3 分10. 语法制导翻译的模式,就是对文法中的什么都附加一个语义动作或语义子程序()。
A. 非终结符号B. 产生式C. 终结符号D. 开始符号满分:3 分11. 项目A→α•Bβ称为什么项目,其中B∈VN()。
A. 移进B. 归约C. 待约D. 接受满分:3 分12. 代码优化的主要目标是什么()。
编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。
答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。
2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。
它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。
三、论述题1. 论述编译器中的代码优化技术及其重要性。
答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。
常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。
代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。
四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
编译原理考试试卷一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码转换成目标代码,以下哪个不是编译器的基本组成部分?A. 词法分析器B. 语法分析器C. 代码优化器D. 运行时环境2. 词法分析器通常不负责以下哪项任务?A. 识别关键字B. 识别标识符C. 进行语义分析D. 去除空白字符3. 语法分析中,递归下降分析是一种:A. 确定性分析方法B. 非确定性分析方法C. 基于语法制导的分析方法D. 基于语法树的分析方法4. LR分析器是用于处理:A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 链式文法5. 语义分析的目的是:A. 检查源代码的语法是否正确B. 检查源代码的语义是否正确C. 将源代码转换为目标代码D. 优化源代码6. 代码生成阶段,编译器将抽象语法树转换成:A. 目标代码B. 源代码C. 汇编代码D. 机器代码7. 编译优化中,常量折叠是一种:A. 局部优化B. 全局优化C. 过程间优化D. 模块内优化8. 编译器的前端主要负责:A. 源代码的输入B. 目标代码的生成C. 源代码的解析和翻译D. 运行时错误检测9. 编译器的后端主要负责:A. 词法分析B. 语法分析C. 代码优化D. 目标代码的生成和链接10. 以下哪个是编译原理中常用的数据结构?A. 栈B. 队列C. 链表D. 所有选项都是二、简答题(每题10分,共30分)1. 简述编译原理中词法分析器的作用及其实现方式。
2. 描述语法分析中自顶向下分析和自底向上分析的区别。
3. 解释编译优化的重要性,并给出一个优化的例子。
三、计算题(每题25分,共50分)1. 给定一个简单的算术表达式 "3 + 4 * 2 - 1",请说明如何使用递归下降分析器来解析这个表达式,并给出相应的语法树。
2. 假设你有一个简单的编译器后端,需要将四元式 "(a, b, +, c)" 转换成目标代码。
编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。
2. 简要描述编译过程中的四个基本步骤。
3. 解释词法分析器的功能和作用。
4. 解释语法分析器的功能和作用。
答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。
编译器是将高级语言文本转换成等价的机器语言的软件工具。
它负责将源代码转化为目标代码,以便计算机能够理解和执行。
2. (1) 词法分析:将源代码分解成一系列单词或标记。
(2) 语法分析:根据语法规则组织单词或标记形成语法树。
(3) 语义分析:分析语法树以检测语义错误。
(4) 代码生成:根据语法树生成目标代码。
3. 词法分析器的功能是将源代码分解成一系列单词或标记。
它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。
词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。
4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。
它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。
语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。
编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了 _B__。
A . 提高程序的执行效率 B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指 __C__。
A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。
C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。
A.语法规则 B •词法规则 C •语义规则 D •等价变换规则 4.后缀式ab+cd+/可用表达式__B_来表示。
A. a+b/c+d B . (a+b)/(c+d) C a+b/(c+d) D a+b+c/d6. 一个编译程序中,不仅包含词法分析, _A _______ ,中间代码生成,代码优化,生成等五个部分。
A .( ) 语法分析B .( ) 文法分析C .( ) 语言分析D .( ) 解释分析 7. 词法分析器用于识别 __C___。
A .( ) 字符串B .( ) 语句C .( ) 单词D .( ) 标识符 8. 语法分析器则可以发现源程序中的 ___D__。
A .( ) 语义错误B .( ) 语法和语义错误C .( ) 错误并校正D .( ) 语法错误 9. 下面关于解释程序的描述正确的是 __B___。
(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的A .( ) (1)(2)B .( ) (1)C .( ) (1)(2)(3)D .( ) (2)(3) 10. 解释程序处理语言时 , 大多数采用的是 __B___方法。
A .( ) 源程序命令被逐个直接解释执行B .( ) 先将源程序转化为中间代码 , 再解释执行C .( ) 先将源程序解释转化为目标程序 , 再执行D .( ) 以上方法都可以11. 编译过程中 , 语法分析器的任务就是 (1) 分析单词是怎样构成的 (2) (3) 分析语句和说明是如何构成程序的 A .( ) (2)(3) B .( ) (2)(3)(4)C .( ) (1)(2)(3) D .( ) (1)(2)(3)(4) 12. 编译程序是一种 ___C__。
2-3 习题(含解答)目录第1章编译原理概述 (1)第2章PL/O编译程序的实现 (4)第3章文法和语言 (4)第4章词法分析 (13)第5章自顶向下语法分析方法 (28)第6章自底向上优先分析 (39)第7章LR分析 (42)第8章语法制导翻译和中间代码生成 (60)第9章符号表 (67)第10章目标程序运行时的存储组织 (70)第11章代码优化 (73)第12章代码生成 (76)综合练习一 (79)综合练习二 (84)综合练习三 (90)综合练习四 (95)综合练习五 (101)综合练习六 (107)第1章编译原理概述一、选择题1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 (1) 。
其中, (2) 和代码优化部分不是每个编译程序都必需的。
词法分析器用于识别 (3) ,语法分析器则可以发现源程序中的 (4) 。
(1) A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器(2) A.语法分析 B.中间代码生成 C.词法分析 D.目标代码生成(3) A.字符串 B.语句 C.单词 D.标识符(4) A.语义错误 B.语法和语义错误 C.错误并校正 D.语法错误2.程序语言的语言处理程序是一种 (1) 。
(2) 是两类程序语言处理程序,他们的主要区别在于 (3) 。
(1) A.系统软件 B.应用软件 C.实时系统 D.分布式系统(2) A.高级语言程序和低级语言程序 B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序(3) A.单用户与多用户的差别 B.对用户程序的查错能力C.机器执行效率D.是否生成目标代码3.汇编程序是将翻译成,编译程序是将翻译成。
A.汇编语言程序B.机器语言程序C.高级语言程序D. A 或者BE. A 或者CF. B或者C4.下面关于解释程序的描述正确的是。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. (1)(2)B. (1)C. (1)(2)(3)D.(2)(3)5.高级语言的语言处理程序分为解释程序和编译程序两种。
编译原理试题及答案一、选择题1. 下列哪个不是编译器所需的基本处理步骤?A. 词法分析B. 语法分析C. 语义分析D. 目标代码优化答案:D2. 编译器的主要功能是将高级语言程序翻译成什么形式?A. 汇编语言B. 机器语言C. 中间代码D. 高级语言答案:B3. 下列哪个不属于编译器的后端阶段?A. 代码优化B. 目标代码生成C. 词法分析D. 目标程序优化答案:C二、填空题1. 编译器的输入是源程序,输出是目标程序。
2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。
3. 语法分析阶段的输出是抽象语法树。
三、简答题1. 请简述编译器的工作原理。
编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。
2. 请说明词法分析的作用是什么,如何实现?词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。
实现词法分析可以通过有限状态自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词法单元。
常用的方法有手写分析器和使用词法分析生成器等。
3. 简要介绍一下代码优化的目的和方法。
代码优化的目的是通过对程序的中间代码或目标代码进行调整,以达到提高程序性能、减小程序的空间占用或减小程序的执行时间等目的。
代码优化的方法主要包括局部优化和全局优化两种。
局部优化主要针对某个代码块进行优化,如常量折叠、公共子表达式消除等。
全局优化则考虑整个程序,对程序的整体结构进行优化,如循环优化、函数内联等。
总结:编译原理试题及答案主要涵盖了选择题、填空题和简答题三个部分。
其中选择题主要考察对编译器基本处理步骤和功能的理解。
编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。
答案:语义分析2. 编译器的后端主要负责________和目标代码生成。
答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。
答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。
答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。
答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。
2. 解释一下什么是语法制导翻译。
答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。
3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。
四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。
答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。
2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。
参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符B .单词C .句子D .句型6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是 A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
课程测试试题(A卷)
一、填空(30分)
1、编译过程的各阶段都需要进行()管理和()处理,所以在典型编译程序框图中,各阶段对应的程序都和上述管理或处理操作程序相联系。
2、对给定文法G[E],由推导序列E=>E+T=>T+T=>i+T=>i+i 可知:该推导为()推导,从该推导序列可得到()个句型,其中的()同时也是句子。
3、语法分析方法分为自上而下与自下而上两类,自上而下的分析方法方要有递归子程序分析法和();而自下而上的分析方法主要有()和()。
4、用四元组G =(V N,V T,P,S)表示文法,则其元素V N表示()集;元素V T表示()集;元素P表示规则集;元素S表示开始符号,它必须是一个()符号。
5、YACC是一种()分析程序的自动构造工具;而LEX是一种()分析程序的自动构造工具。
6、用优先函数表示优先关系的优点是(),缺点是()。
根据优先关系矩阵计算优先函数可用Floyed迭代法和()法。
7、对一个文法G,在其LR(0)项目集规范族DFA中,当有归约项目和()项目或()项目共存于同一个状态中时,该文法就不是LR(0) 文法。
8、当一个过程调用其他过程时,调用过程和被调用过程之间的通信经由非局部变量或者经由参数传递,常用的参数传递方式有()、()等。
9、在句型N
1a
1
N
2
a
2
…N
i-1
a
i-1
N
i
a
i
N
i+1
a
i+1
…a
j
N
j+1
a
j+1
N
j+2
…中,寻找最左素短语进行
归约时,最左素短语N
i a
i
N
i+1
a
i+1
…a
j
N
j+1
中的终结符应满足如下优先关系:()、
()、()。
10、所谓优化实质上是对代码进行等价变换,使得变换后的代码运行结果与变换前的代码运行结果相同,但运行速度加大或占用的()减少。
常用的优化技术有删除多余运算、()、强度削弱、变换循环控制条件、合并已知变量与复写传播及()等。
11、在语法分析过程中,随着分析的步步进展,根据每个规则所对应的语义子程序或语义动作进行翻译的办法,称为()翻译方法,它被现代很多编译程序所采用。
12、在编译程序中用符号表来存放语言程序中出现的有关()的属性信息,这些信息集中反映了标识符的语义特征属性。
符号表的功能可以归结为三个主要方面,即()、作为上下文语义合法性检查的依据和作为()的依据。
二、现有文法G[S]: (共10分)
S→SS*
S→SS+
S→a
1、证明aa+a*是文法的一个句子。
(2分)
2、构造句型aa+a*的语法推导树。
(2分)
3、指出该句型所有短语、直接短语和句柄。
(6分)
三、给定正规式R=0(0|1)0*1,要求: (12分)
1、构造对应的NFA M状态图,使得L(M)=L(R)。
(4分)
2、将所得NFA M确定化和最小化。
(8分)
四、已知G[E]: (15分)
E→a|*|(T)
T→T,E|E
1、给出(*,(a,*))的最右推导。
(3分)
2、将G[E]改写为LL(1)文法,再给出它的预测分析表;(7分)
3、给出输入串(a,*)#的分析过程。
(5分)
五、现有文法G[S]:(共15分)
S →S;D|D
D →D(T)|H
H →a|(S)
T →T+S|S
1、计算G[S]的FIRSTVT和LASTVT,再据此构造G[S]的算符优先关系表,并说明G[S]是否为算符优先文法;(9分)
2、给出输入串(a+a)# 的算符优先分析过程,并根据分析过程总结算符优先分析方法的优缺点。
(6分)
六、对给定文法G[S’]: (共18分)
0) S’→S
1) S →A
2)S →B
3) A →aAc
4) A →a
5) B →bBd
6) B →b
1、构造其LR(0)项目集规范族DFA,并据此判断它是否为LR(0)文法。
(7分)
2、进一步判断它是否为SLR(1)文法,并给出对应的SLR(1)分析表。
(6分)
3、给出输入串aac#的SLR(1)分析过程。
(5分)
编译原理课程测试试卷评分标准
(张家界学院03A卷)
第一题:填空题(30分)
1、共有30个空,每空1分, 30×1=30分。
2、参考答案:
第二题:(10分)
1、证明(3分):因为存在推导序列S=>SS*=>SS+S*=>aS+S* =>aa+S*=>aa+a*,即有 S *
aa+a*成立,且aa+a*全部由终结符构成,所以aa+a*是文法的一个句子。
2、语法树(2分): S S S + a 3
a 1 a 2
3、句型分析(5分)
句型aa+a*相对于S 的短语有: a 1a 2+a 3*, a 1a 2+, a 1,a 2,a 3。
(2分) 句型aa+a*相对于S →a 的直接短语有: a 或 a 1,a 2,a 3。
(2分) 句型aa+a*的句柄为: a 1。
(1分)
第三题:(12分) 1、NFA (4分):
2、确定化(4分):
将集合T0至T5各用一个状态表示,确定化后所得DFA M如下:
3、最小化(4分):
步骤如下表所示(可省):
最后有四个不可再分割的子集,每个子集对应一个状态,即有最小化DFA如下:
第四题: (15分)
1、给出(*,(a,*))的最右推导:(3分)
E=>(T)=>(T,E)=>(T,(T))=>(T,(T,E))=>(T,(T,*))=>(T,(E,*))=>(T,(a,*))
=>(E,(a,*))=>(*,(a,*))
2、(1)将G[E]改写如下:(3分)
G[E]:
E→a|*|(T)
T’→,E T’|ε
T→E T’
(2)预测分析表:(4分)
4
第五题: (15分)
1、(1)对文法进行拓广,加入规则S’→S 后得G[S’],其非终结符的FIRSTVT、LASTVT 集计算如下:(4分)
由FIRSTVT、LASTVT 集构造≮和≯如下:
(2)优先关系表为:(4分)
(3)该文法是算符优先文法(1分)。
2、(1)输入串(a+a)# 的算符优先分析过程:(4分)
(2
由上述分析过程可知,用算符优先分析法分析在确定句柄时只考虑终结符之间的优先关系,而与非终结符无关,这使得算符优先分析法具有效率高的优点;但是,由于去掉了单非终结符之间的归约,有可能将错误的句子识别为正确的。
上例中对输入串(a+a)#能分析成功,但(a+a)#并不是文法G[S]的句子。
这就是算符优先分析法的缺点。
第六题: (18分)
1、(1)G[S’]的LR(0)项目集规范族DFA(5分):
(2)检查发现I4 ={A →a., A →.aAc, A →.a }和I5 ={B →b., B →.bBd, B →.b }中存在移进—归约冲突,所以,G[S’]不是LR(0)文法。
(2分)
2、(1)在I4 ={A →a., A →.aAc, A →.a }中,由于根据归约项目A →
a.所得的FOLLOW(A)={c,# }中不含移进项目A →.aAc,或 A →.a中的“a”。
在构造LR分析表时,遇到移进项目A →.aAc,或 A →.a时,在“a”列置移进标记S4;遇到归约项目A →a.时,只在“c”,“#”两列置归约标记r4。
所以,I4中的移进—归约冲突通过引入FOLLOW集得到了解决。
、
同样,在I5 ={B →b., B →.bBd, B →.b }中,由于FOLLOW(B)={d,# }中不含“b”。
在构造LR分析表时,遇到移进项目B →.bBd, B →.b时,在“b”列置移进标记S5;遇到归约项目 B →b.时,只在“d”,“#”两列置归约标记r5。
所以,I5中的移进—归约冲突通过引入FOLLOW集也得到了解决。
故G[S’]是 SLR(1)文法。
(3分)
(2)SLR(1)分析表如下:(3分)
3。