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

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

ID:11946436

大小:292.50 KB

页数:6页

时间:2018-07-15

编译原理2007期末考试试卷答案_第1页
编译原理2007期末考试试卷答案_第2页
编译原理2007期末考试试卷答案_第3页
编译原理2007期末考试试卷答案_第4页
编译原理2007期末考试试卷答案_第5页
资源描述:

《编译原理2007期末考试试卷答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、2007一、简答题(共15分。)1.通过合并LR(1)文法中的同心状态得到的LALR(1)文法可能会产生哪些冲突?一定不会产生哪些冲突?为什么?(5分)答:可能会产生归约-归约冲突,一定不会产生移进-归约冲突。因为在对LR(1)合并同心集合时,有可能将原本没有冲突的同心集的项目集合并后造成一些归约项目向前搜索符集合的交集不是空,产生归约-归约冲突。但是由于文法本身已经是LR(1)文法,因此可知,在项目集中一定不存在移进-归约冲突,也就是移进项目要求输入的终结符和任意归约项目的向前搜索符集合的交集都是空集。这样,在将同心集合并之后,移进项目要求输入的终结符和归

2、约项目的向前搜索符集合的交集也还是空集。2.如果在A机器上我们有C语言编译器CCA,也有它的源码SA(用C语言写成)。如何利用它通过尽量少的工作来得到B机器的C语言编译器CCB。(5分)答:A机器上C语言编译器CCA的结构如下:其源码SA结构如下:首先,用C语言编写一个从C语言到B机器语言的编译器,成为SB,其结构如下:第二步,将这个编译器放到CCA中进行编译,得到用A机器语言编写的,将C语言编译成B机器代码的编译器,其过程和结构如下:第三步,再将SB放入新得到的这个编译器中去编译,就得到了要求的编译器CCB,其过程和结构如下:1.Pascal语言允许过程嵌

3、套声明,C语言的过程声明不能嵌套。在Pascal程序中,数据分为局部数据、非局部数据,而C程序中,数据分为局部数据和全局数据。因此,C程序执行时只用到了控制链(动态链),不需要使用访问链(静态链)。试根据前面的已知说明,为什么Pascal程序执行时需要使用访问链,而c程序不需要。(5分)答:由于C语言不允许嵌套的过程声明,因此所有的非局部名字都可以静态地绑定到所分配的存储单元,因此,可以不使用访问链。而Pascal语言允许过程的嵌套,并使用静态作用域,确定用于名字的声明需要根据过程的嵌套层次来决定。和C语言不同的是,Pascal语言的非局部名字不一定就是全局

4、的。运行时访问非局部名字的时候,我们首先要确定该非局部名字被绑定到的活动记录,因此就必须要用到访问链。二、简单计算题(共25分)1.令文法G[E]为E→T

5、E+T

6、E-TT→F

7、T*F

8、T/FF→(E)

9、i(1)证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。(2)给出i+i*i、i*(i+i)的最左推导和最右推导;(10分)答:(1)E=>E+T=>E+T*F,其短语有:T*F,E+T*F;直接短语是T*F,句柄是T*F(2)i+i*i的最左推导:最右推导E=>E+TE=>E+T=>T+T=>E+T*F=>F+T=>E+T*i=>i+

10、T=>E+F*i=>i+T*F=>E+i*i=>i+F*F=>T+i*i=>i+i*F=>F+i*i=>i+i*i=>i+i*ii*(i+i)的最左推导:最右推导E=>TE=>T=>T*F=>T*F=>F*F=>T*(E)=>i*F=>T*(E+T)=>i*(E)=>T*(E+F)=>i*(E+T)=>T*(E+i)=>i*(T+T)=>T*(T+i)=>i*(F+T)=>T*(F+i)=>i*(i+T)=>T*(i+i)=>i*(i+F)=>F*(i+i)=>i*(i+i)=>i*(i+i)1.已知语言写出相应的文法:(6分)(1)已知语言L={WaWr

11、

12、W属于(0

13、a)*,Wr表示W的逆},试构造相应的上下文无关文法。(2)已知语言L={1n0m1m0n

14、m>0,n>=0},试构造相应的上下文无关文法。(3)已知语言L={anbnambm

15、m>=0,n>0},试构造相应的上下文无关文法答:(1)文法为:({S},{0,a},P,S),其中P为S→0S0

16、aSa

17、a(2)文法为:({A,S},{0,1},P,S),其中P为S→1S0

18、AA→0A1

19、01(2)文法为:({A,B,S},{a,b},P,S),其中P为S→ABA→aAb

20、abB→aBb

21、ε2.构造一个NFA,(1)接受字母表{a,b}上的正规式(a

22、b

23、a)*b+描述的集合。(2)将(1)中的NFA转换为等价的DFA(3)将(2)中的DFA转换为最小状态DFA(写出步骤)(9分)答:构造的NFA如下:确定化过程:状态集合ab{0}A{0,1}B{2}C{0,1}B{0,1}B{0,2}D{2}C{2}C{0,2}D{0,1}B{2}C确定的DFA如下:上面的DFA已经是最小化的。三、证明推导题(共30分,每题10分)2下列文法由开始符号S产生一个二进制数,令综合属性val给出该数的值:S→L.L

24、LL→LB

25、BB→0

26、1试设计求S.val的属性文法,其中,已知B的综合属性c,给出由B产生的二进位的结果值

27、。答:产生式语义规则SàL1.L2S.val:=L1

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。