编译原理期末复习题(含答案2011-5) 联系客服

发布时间 : 星期六 文章编译原理期末复习题(含答案2011-5)更新完毕开始阅读ff1ad9a5f524ccbff1218403

A、可以 B、不可以

15、( B )正规文法能产生下面的语言:L={ambn|n>1} A、存在一个 B、不存在任何 c、无法判断

16、编译程序中的语法分析器接受以( C )为单位的输入,并产生有关信息供以后各阶段使用。

A、表达式 B、产生式 C、单词 D、语句

17、高级语言编译程序常用的语法分析方法中,递归下降分析法属于( B )分析方法。

A、自左至右 B、自顶向下 C、自底向上 D、自右至左

18、算符优先分析法每次都是对( E )进行归约,简单优先分析法每次都是对( C )进行归约。

A、最左短语 B、简单短语 C、句柄 D、素短语 E、最左素短语 19、文法G(S):S—>aTb|,,T->R,R—>R/S|S的句型aR/aSb/aTb,b的最左素短语为( B )。

A、aTb B、aSb C、S D、R/ E、,

20、LR语法分析栈中存放的状态是识别( B )的DFA状态。 A、前缀 B、可归前缀 C、项目 D、句柄

21、已知文法G[S]:s->LaR|R,L->bR|c,R->L 该文法是( B )。 (1)LR(0)文法;(2)SLR(1)文法;(3)LR(1)文法;(4)LALR(1)文法;(5)都不是 A、(1)(2) B、(3)(4) C、(1)(2)(3)(4) D、(5) E、(6)

22、若一个句型中出现了某一产生式的右部,则此右部( B )是该句型的句柄。

A、一定 B、不一定 23、LR(K)方法是( D )。

A、从左到右分析,每次走K步的一种编译方法 B、从左到右分析,共经过K步的一种编译方法 C、从左到右分析,每次向前预测K步的一种编译方法 D、从左到右分析,每次向貌似句柄的符号串后看K个输入符号的一种编译方法 24、文法G[S]:S->AA,A->Aa|a 不是LR(1)文法的理由是( D ) A、FIRST(S)NFIRST(A)≠ф B、FIRST(A)NFOLLLOW(A) ≠ф C、FIRST(Aa)NFIRST(a) ≠ф D、都不是

25、下列关于标识符和名字的叙述中,正确的是( C )。

A、标识符有一定的含义 B、名字是一个没有意义的字符序列 C、名字有确切的属性 D、都不对

26、编译程序在其工作过程中使用最多的数据结构是( C )。它记录着源程

序中的各种信息,以便查询或修改。

A、线性表 B、链表 C、表 D、符号表

27、在编译程序在其工作过程中使用的各种表中,以( D )最重要,其生存期最长,使用也最频繁。

A、线性表 B、链表 C、表 D、符号表 28、编译程序使用( B )区别标识符的作用域。

A、说明标识符的过程或函数名 B、说明标识符的过程或函数的静态层次 C、说明标识符的过程或函数的动态层次 D、标识符的行号 29、动态存储分配时,可以采用的分配方法有( C )。

(1)以过程为单位的栈式动态存储分配;(2)堆存储分配;(3)最佳分配方法 A、(1) B、(2) C、(1)(2) D、(1)(2)(3) 30、过程调用时,参数的传递方法通常有( D )。 (1)传值;(2)传地址;(3)传结果;(4)传名

A、(1)(2) B、(1)(2)(3) C、(1)(2)(4) D、(1)(2)(3)(4) 31、在编译方法中,动态存储分配的含义是( A )。

A、在运行阶段对源程序中的量进行分配 B、在编译阶段对源程序中的量进行分配

C、在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变

D、以上都不对

32、PASCAL中过程说明的局部量地址分配在( B )。

A、调用者的数据区中 B、被调用者的数据区 C、主程序的数据区 D、公共数据区

33、表达式-a+b*c+d+(e*f)/d*e,如果优先级由高到低依次为-、+、*、/,且均为左结合,则其后缀式为( D )。

A、abc*+d+ef*d/e*+- B、a-bc*def*d/e*+++ C、a-bc*+def*d/e*++ D、a-b+cd+ef*+*de*/

34、表达式a*b-c-d$e$f-g-h*i中,运算符的优先级由高到低依次为-、*、$,且均为右结合,则其后缀式为( D )。

A、ab*c-d-e$fg-h-i*$ B、$*a-b-cd$e*-f-ghi C、bcd--a*efgh--i*$$ D、abcd--*efgh--i*$$ E、ab*c-d-e$fg-h-i*$ 35、a:= a+b*c↑(d/e)/f的逆波兰记号表示是( C )。

A、aabc*+↑de/f/:= B、aabcde↑/*f/:= C、aabcde/↑*f/+:= D、以上都不对。

三、简答题:

1、什么是语法制导翻译?

答:所谓语法制导翻译,是指在语法规则的制导下,通过计算语义规则,完成对输入符号的翻译。

由于使用属性文法时把语法规则和语义规则分开,但在使用语法规则进行推导或归约的同时又使用这些语义规则来指导翻译与最终产生目标代码,所以称为语法制导翻译。

2、写出算术表达式A+B*(C-D)+E/(C-D)**N 的三元式、四元式序列。

答:四元式: 三元式:

(-,C,D,T1) (1) (-,C,D) (*,B,T1,T2) (2)(*,B,(1)) (+,A,T2,T3) (3) (+,A,(2)) (-,C,D,T4) (4) (-,C,D) (**,T4,N,T5) (5) (**,(4),N) (/,E,T5,T6) (6)(/,E,(5)) (+,T3,T6,T7) (7) (+,(3),(6))

3、写出条件语句 IF a<0 THEN x:=x+1 ELSE x:=4*(x-1)的四元式形式。 答:

(1) (>,a,0,T1)

(2) (BMZ,T1, ,(6)) (3) (+,x,1,T2) (4) (:=,T2, ,x) (5) (BR, , ,(9)) (6) (-,x,1,T3) (7) (*,4,T3,T4) (8) (:=,T4, ,x) (9)

4、把语句 IF A∨B

答:(1) (《,B,D,T1》

(2) (∨,A,T1 ,T2) (3) (BMZ,T2, ,(6)) (4) S1的四元式序列

(5) (JMP, , ,(7)) (6) S2的四元式序列 (7)

5、给出表达式A+B*(C-D)-E/F↑G 的三元式、逆波兰和四元式表示。 答: A、三元式 B、四元式 (1)(-,C,D) (1)(-。C。D。T1) (2)(*,B,(1)) (2)(*,B,T1,T2) (3)(+,A,(2)) (3)(+,A,T2,T3) (4)(↑,F,G) (4)(↑,F,G,T4) (5)(/,E,(4)) (5)(/,E,T4,T5) (6)(-,(3),(5)) (6)(-,T3,T5,T6) C、逆波兰: ABCD-*+EFG↑/-

6、给出算术表达式 -(a+b)*(c+d)-(a+b+c)的四元式序列。

答:(1) (+,a,b,T1) (2) (neg,T1, ,T2) (3) (+,c,d,T3) (4) (*,T2,T3,T4) (5) (+,a,b,T5) (6) (+,T5,c,T6) (7) (-,T4,T6,T7) 7、写出当型语句 while x+y>3 do begin a:=a+3*b;

b:=a+e-f*e;

end; 的四元式序列。

答: (1) (+,x,y,T1) (2) (>,T1,3,T2) (3) (BMZ,T2, ,(12)) (4) (*,3,b,T3) (5) (+,a ,T3,T4) (6) (:=,T4, ,a) (7) (+,a,e,T5)