编译原理2007期末考试试卷答案.docVIP

  • 24
  • 0
  • 约3.75千字
  • 约 6页
  • 2016-05-28 发布于重庆
  • 举报
编译原理2007期末考试试卷答案

2007 一、简答题(共15分。) 通过合并LR(1)文法中的同心状态得到的LALR(1)文法可能会产生哪些冲突?一定不会产生哪些冲突?为什么?(5分) 答:可能会产生归约-归约冲突,一定不会产生移进-归约冲突。 因为在对LR(1)合并同心集合时,有可能将原本没有冲突的同心集的项目集合并后造成一些归约项目向前搜索符集合的交集不是空,产生归约-归约冲突。但是由于文法本身已经是LR(1)文法,因此可知,在项目集中一定不存在移进-归约冲突,也就是移进项目要求输入的终结符和任意归约项目的向前搜索符集合的交集都是空集。这样,在将同心集合并之后,移进项目要求输入的终结符和归约项目的向前搜索符集合的交集也还是空集。 如果在A机器上我们有C语言编译器CCA,也有它的源码SA(用C语言写成)。如何利用它通过尽量少的工作来得到B机器的C语言编译器CCB。(5分) 答:A机器上C语言编译器CCA的结构如下: 其源码SA结构如下: 首先,用C语言编写一个从C语言到B机器语言的编译器,成为SB,其结构如下: 第二步,将这个编译器放到CCA中进行编译,得到用A机器语言编写的,将C语言编译成B机器代码的编译器,其过程和结构如下: 第三步,再将SB放入新得到的这个编译器中去编译,就得到了要求的编译器CCB,其过程和结构如下: Pascal语言允许过程嵌套声明,C语言的过程声明不能嵌套。在Pascal程序中,数据

文档评论(0)

1亿VIP精品文档

相关文档