大学《编译原理》期末试题含答案
一、回答下列问题:(30分)
1.什么是S-属性文法?什么是L-属性文法?它们之间有什么关系?
解答:
S-属性文法是只含有综合属性的属性文法。          (2分)
L-属性文法要求对于每个产生式A X1X2Xn,其每个语义规则中的每个属性或者是综合属性,或者是Xj的一个继承属性,且该属性仅依赖于:
(1)产生式Xj的左边符号X1,X2Xj-1的属性;
(2)A的继承属性。                      (2分)
S-属性文法是L-属性文法的特例。              (2分)
2.什么是句柄?什么是素短语?
一个句型的最左直接短语称为该句型的句柄。(3分)素短语是这样的一个短语,它至少包含一个终结符并且不包含更小的素短语。(3分)
3.划分程序的基本块时,确定基本块的入口语句的条件是什么?
解答:
(1)程序第一个语句,或
(2)能由条件转移语句或无条件转移语句转移到的语句,或
(3)紧跟在条件转移语句后面的语句。
4.(6分)运行时的DISPLAY表的内容是什么?它的作用是什么?
答:DISPLAY表是嵌套层次显示表。每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。通过DISPLAY表可以访问其外层过程的变量。
5.(6分)对下列四元式序列生成目标代码:
A:=B*C
D:=E+F
G:=A+D
H:=G*2
其中,H是基本块出口的活跃变量, R0R1是可用寄存器
答:
LD  R0, B
MUL  R0, C
LD  R1, E
ADD  R1, F
ADD  R0, R1
MUL  R0, 2
ST  R0, H
二、设 ={0,1}上的正规集S由倒数第二个字符为1的所有字符串组成,请给出该字集对应的正规式,并构造一个识别该正规集的DFA。(8分)
答:
构造相应的正规式:(0|1)*1(0|1)    (3分)
NFA:  (2分)
                1                        1
                                1       
                  0                        0
确定化:(3分)
I
{0,1,2}
{1,2}
{1,2,3}
{1,2}
{1,2}
{1,2,3}
{1,2,3}
{1,2,4}
{1,2,3,4}
{1,2,4}
{1,2}
{1,2,3}
{1,2,3,4}
{1,2,4}
{1,2,3,4}
                            0
                                                      1
              0          1        0          0
                      0                1
           
                  1                      1
三、写一个文法使其语言为L(G)={ anbmambn | m,n1}(6分)
答:文法G(S):
S  aSb | B
B  bBa | ba
四、对于文法G(E): (8分)
E T|E+T
T F|T*F
F (E)|i
1. 写出句型(T*F+i)的最右推导并画出语法树。
2. 写出上述句型的短语,直接短语、句柄和素短语。
答:
1. (4分)
E T F (E)  (E+T)  (E+F)
(E+i) (T+i) (T*F+i)
2.  (4分)
短语:(T*F+i),  T*F+i,  T*F,  i
直接短语:T*F, i
句柄:T*F
素短语:T*F, i
五、设文法G(S):(12分)
1.构造各非终结符的FIRSTVTLASTVT集合;
2.构造优先关系表和优先函数。(12分)
答:(6分)
FIRSTVT(S)={ i,+,),( }
FIRSTVT(A)={ +,),( }
FIRSTVT(B)={ ),( }
LASTVT(S)={ i,+,*,( }
LASTVT(A)={ +,*,( }
LASTVT(B)={ *,( }
优先关系表: (3分)
i
+
(
)
*
i
>
<
<
<
+
>
>
<
<
>
(
>
>
>
)
<
<
<
*
>
>
>
优先函数: (3分)
i
+
(
)
*
f
2
6
6
1
6
g
1
4
6
6
1
六、设某语言的do-while语句的语法形式为 (9分)
    S  do  S(1)  While  E
其语义解释为:
针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:
(1) 写出适合语法制导翻译的产生式;
(2) 写出每个产生式对应的语义动作。
答:(1). 适合语法制导翻译的文法(3分)
    G(S):
        R  do
        U R  S(1)  While
        S U  E
    (2). (6分)
        R  do
          {  R.QUAD:=NXQ  }
字符串截取倒数第二个
        U R  S(1)  While
          {  U.QUAD:=R.QUAD;
              BACKPATCH(S.CHAIN, NXQ) }
        S U E
          {  BACKPATCH(E.TC, U.QUAD);
              S.CHAIN:=E.FC }
答案二:
(1) S  do  M1 S(1)  While  M2 E
M  ε  (3分)
(2)    M  ε { M.QUAD := NXQ }  (6分)
        S  do  M1 S(1)  While  M2 E

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。