最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

编译原理 试题 陈火旺(含答案)

来源:动视网 责编:小OO 时间:2025-09-24 00:03:37
文档

编译原理 试题 陈火旺(含答案)

编译原理试题国教A(2005.2.4)一、回答下列问题:(30分)1.(6分)对于下面程序段programtest(input,output)vari,j:integer;procedureCAL(x,y:integer);beginy:=y*y;x:=x-y;y:=y-xend;begini:=2;j:=3;CAL(i,j)writeln(j)end.若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。答:(1)3(2)16(3)16(每个值2分)2.(6分
推荐度:
导读编译原理试题国教A(2005.2.4)一、回答下列问题:(30分)1.(6分)对于下面程序段programtest(input,output)vari,j:integer;procedureCAL(x,y:integer);beginy:=y*y;x:=x-y;y:=y-xend;begini:=2;j:=3;CAL(i,j)writeln(j)end.若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。答:(1)3(2)16(3)16(每个值2分)2.(6分
编译原理试题国教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

文档

编译原理 试题 陈火旺(含答案)

编译原理试题国教A(2005.2.4)一、回答下列问题:(30分)1.(6分)对于下面程序段programtest(input,output)vari,j:integer;procedureCAL(x,y:integer);beginy:=y*y;x:=x-y;y:=y-xend;begini:=2;j:=3;CAL(i,j)writeln(j)end.若参数传递的方法分别为(1)传值、(2)传地址,(3)传名,请写出程序执行的输出结果。答:(1)3(2)16(3)16(每个值2分)2.(6分
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top