视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
编译原理 试题 陈火旺(含答案)
2025-09-24 00:03:37 责编:小OO
文档
编译原理试题国教A   (2005.2.4)

一、回答下列问题:(30分)

1.(6分)对于下面程序段

program  test (input, output)

    var  i, j: integer;

    procedure  CAL(x, y: integer);

      begin

        y:=y*y;  x:=x-y;  y:=y-x

      end; 

    begin

      i:=2;  j:=3;  CAL(i, j)

      writeln(j)

    end. 

若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。

答: (1) 3    (2) 16        (3) 16     (每个值2分)

2.(6分)计算文法G(M)的每个非终结符的FIRST和FOLLOW集合,并判断该文法是否是LL(1)的,请说明理由。

G(M):

M → TB

T → Ba | 

B → Db | eT | 

D → d | 

解答:

计算文法的FIRST和FOLLOW集合:(4分)

FIRST(M) = { a,b,e,d, }        FIRST(T) = { a,b,e,d, }

FIRST(B) = {b,e,d, }            FIRST(D) = {d,}

FOLLOW (M) = {#}                    FOLLOW (T) = { a,b,e,d,#}

FOLLOW (B) = {a,# }                FOLLOW (D) = { b}

检查文法的所有产生式,我们可以得到:

1. 该文法不含左递归,

2. 该文法中每一个非终结符M,T,B,D的各个产生式的候选首符集两两不相交。

3. 该文法的非终结符T、B和D,它们都有候选式,而且

FIRST(T)∩FOLLOW(T)={ a,b,e,d }≠    

所以该文法不是LL(1)文法。(2分)

3.(4分)考虑下面的属性文法

        产 生 式

               语 义 规 则

      S→ABC

      

        A→a

        B→b

        C→c

               B.u := S.u

               A.u := B.v + C.v

               S.v := A.v

               A.v :=3*A.u

               B.v := B.u

               C.v := 1 

(1)画出字符串abc的语法树;

(2)对于该语法树,假设S.u的初始值为5,属性计算完成后,S.v的值为多少。

答:(1)  (2分)

    

(2) S.v的值为18  (2分)

4.(4分)运行时的DISPLAY表的内容是什么?它的作用是什么?

答:DISPLAY表是嵌套层次显示表。每当进入一个过程后,在建立它的活动记录区的同时建立一张嵌套层次显示表diaplay.假定现在进入的过程层次为i,则它的diaplay表含有i+1个单元,自顶向下每个单元依次存放着现行层、直接外层、…、直至最外层(主程序,0层)等每层过程的最新活动记录的起始地址。通过DISPLAY表可以访问其外层过程的变量。

5. (5分)对下列四元式序列生成目标代码: 

A:=B*C

D:=E+A

G:=B+C

H:=G*D

其中,H在基本块出口之后是活跃变量, R0和R1是可用寄存器。

答:  目标代码序列

LD        R0        B

MUL        R0        C

LD        R1        E

ADD        R1        R0

LD        R0        B

ADD        R0        C

MUL        R0        R1

ST        R0        H

6.(5分)写出表达式a+b*(c-d)对应的逆波兰式、三元式序列和抽象语法树。

答:

逆波兰式:(abcd-*+)  (1分)

三元式序列:  (2分)

        OP  ARG1    ARG2

   (1)   -      c        d

   (2)   *      b       (1)

   (3)   +      a       (2)

抽象语法树:(2分)

二、(8分) 构造正规式 (0|1)*00 相应的DFA并进行化简。 

答: 

(2分)

确定化:(3分)

01
{1,2,3}

{2,3,4}

{2,3}

{2,3,4}

{2,3,4,5}

{2,3}

{2,3}

{2,3,4}

{2,3}

{2,3,4,5}

{2,3,4,5}

{2,3}

最小化:(3分)

{1,2,3}{4}

{1,2,3}0={2,4}

{1,3}{2}  {4}

三、 (6分)写一个文法使其语言为L(G)={anbncm| m,n≥1,n为奇数,m为偶数}。

答:

文法G(S):

四、(8分)对于文法G(S):

    

1. 写出句型b(Ma)b的最右推导并画出语法树。

2. 写出上述句型的短语,直接短语和句柄。

答:

1. (4分)

  

2. (4分)

短语:  Ma),  (Ma), b(Ma)b

直接短语:  Ma)

句柄:  Ma)

五、(12分)对文法G(S):

S → a | ^ | (T)

T → T,S | S

(1) 构造各非终结符的FIRSTVT和LASTVT集合;

(2) 构造算符优先表;

(3) 是算符优先文法吗?

(4) 构造优先函数。

答:

(1) (4分)

 (2) (4分)

a^(),
a>>
^>>
(<<<=<
)>>
,<<<>>
(3) 是算符优先文法,因为任何两个终结符之间至多只有一种优先关系。 (1分)

(4) 优先函数(3分)

a^(),
F44244
G55523
六、(8分)设某语言的do-while语句的语法形式为 

    S  do  S(1)  While  E

其语释为:

针对自下而上的语法分析器,按如下要求构造该语句的翻译模式:

(1) 写出适合语法制导翻译的产生式;

(2) 写出每个产生式对应的语义动作。

答:(1). 适合语法制导翻译的文法(4分)

    G(S):

         R do

         UR  S(1)  While

         SU  E

    (2). (4分)

         R do

           {  R.QUAD:=NXQ   }

         UR  S(1)  While

           {  U.QUAD:=R.QUAD;

              BACKPATCH(S.CHAIN, NXQ) }

        SU E

           {  BACKPATCH(E.TC, U.QUAD);

              S.CHAIN:=E.FC }

答案二:

(1) S  do  M1  S(1)  While  M2  E 

M ε   (4分)

(2)     M ε { M.QUAD := NXQ }   (4分)

        S  do  M1  S(1)  While  M2  E

        {

BACKPATCH(S(1).CHAIN, M2.QUAD);

BACKPATCH(E.TC, M1.QUAD);

       S.CHAIN:=E. FC

        }

七、(8分)将语句

if  ((A<0)  (B>0))  then  while  (C>0)  do  C:=C-D

翻译成四元式。

答:

100 (j<, A, 0, 104)

101 (j, -, -, 102)

102 (j>, B, 0, 104)

103 (j, -, -, 109)

104 (j>, C, 0, 106)

105 (j, -, -, 109)

106 (-, C, D, T1)

107 (:=, T1, -, C)

108 (j, -, -, 104)

109

(控制结构3分,其他5分)

八、(10分)设有基本块如下:

T1:=3

T2:=A*B

T3:=9+T1

M:=A*B

T4:=C-D

L:=T3*T4

T2:=C+D

N:=T2

1.画出DAG图;

2.设L,M,N 是出基本块后的活跃变量,请给出优化后的四元式序列。

答:

1. (6分)

                                              L

 

                                                  *

                              T2,M                    T4        T2,N

                                 *                        -      +

                       T1                        T3

            3         A       B       12        C       D

2. (4分)

M:=A*B

S1:=C-D

L:=12*S1

N:=C+D

九、(8分)文法G(S)及其LR分析表如下,请给出串baba#的分析过程。

(1) S → DbB        (2) D → d        (3) D → ε

(4) B → a        (5) B → Bba        (6) B → ε

                   LR分析表

ACTIONGOTO
bDa#SBD
0r3s312
1acc
2s4
3r2
4r6S5r66
5r4r4
6s7r1
7S8
8r5r5
解答:

步骤    状态        符号        输入串

0        0            #            baba#

1        02            #D            baba#

2        024        #Db        aba#

3        0245        #Dba        ba#

4        0246        #DbB        ba#

5        02467        #DbBb        a#

6        024678    #DbBba    #

7        0246        #DbB        #

8        01            #S            #        acc下载本文

显示全文
专题