编译原理 2022 期末考试试卷答案
2007
一、简答题(共 15 分。)
1.通过合并LR(1)文法中的同心状态得到的LALR(1)文法可能会产生
哪些冲突?一定不会
产生哪些冲突?为什么?(5 分)
答:可能会产生归约-归约冲突,一定不会产生移进-归约冲突。因为
在对LR(1)合并同心集合时,有可能将原本没有冲突的同心集的项目集合
并后造成一些归约项目向前搜索符集合的交集不是空,产生归约-归约冲
突。但是由于文法本身已经是LR(1)文法,因此可知,在项目集中一定不
存在移进-归约冲突,也就是移进项目要求输入的终结符和任意归约项目
的向前搜索符集合的交集都是空集。这样,在将同心集合并之后,移进项
目要求输入的终结符和归约项目的向前搜索符集合的交集也还是空集。
2.如果在A 机器上我们有C 语言编译器CCA,也有它的源码SA(用 C
语言写成)。如何
利用它通过尽量少的工作来得到 B 机器的 C 语言编译器 CCB。(5 分)
答:A 机器上C 语言编译器CCA 的结构如下:
CAA
其源码SA 结构如下:
CCA