《编译原理样题1(有答案).docx》由会员分享,可在线阅读,更多相关《编译原理样题1(有答案).docx(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、编译原理一、是非题(下列各题你认为正确的,请在题干的括号内打“上,错的打“X, 每题1分, 共5分)1、一个LL(1)文法一定是无二义的。()2、逆波兰法表示的表达式亦称前缀式。()3、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。()4、正规文法产生的语言都可以用上下文无关文法来描述。()5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。()二、填空题(每题2分,共5分)1、语法分析是依据语言的()规则进行的,中间代码产生是依据语言的()规进行的。2、程序语言的单词符号一般可以分为()等等。3、语法分析器的输入是(),其输出是()o4、所谓自上而下分析法是指
2、()o5、如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()o6、对于文法G,仅含终结符号的句型称为()。7、逆波兰式ab十c + d*e所表达的表达式为()。8、一个名字的属性包括()和()o9、对于数据空间的存贮分配,FORTRAN采用()策略,PASCAL采用()策略。10、所谓优化是指()o三、名词解释题(每题2分,共10分)1、词法分析器:2、语法:3、最右推导:4、语法制导翻译:5、基本块:四、简述题(每题4分,共24分)1、考虑下面的程序:Var i: integer;a: arrayb-2 of integer; procedure Q( b);Var b: in
3、teger;Begini: =1; b: =b 十 2; i: =2; b: =b + 3End;Beginal: =5; a2: =6;i: = 1 ;Q(ai); print(al, a2)End.a2的值试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出aI 是什么?2、画出识别pascal中实常数(可带正负号,但不含指数部分)的状态转换图。3、已知文法G (S):S-a| (A)T-T, S|S的优先关系如下:a (),a,(三)A, 4、写出表达式(a+b) / (a-b) (a+b*c)的三元序列及四元序列。 5、符号表的作用是什么?符号表的查找和整理技术有哪几种? 6、
4、何谓DISPLAY表?其作用是什么?五、计算题(10分)1、写一个文法使其语言为偶数集,且每个偶数不以0开头。(5分)2、已知文法G (S):S-a|(T)TT, S|S(1)给出句子(a, (a, a)的最左推导并画出语法树;(2)给出句型(T, s)a )的短语、直接短语、句柄。(8分) 3、把语句if x0 y0 then z: =x + y else Beginx: =x + 2y: =y + 3End;翻译成四元式序列。(6分)4、设某语言的for语句的形式为for i:=E(1) to E(2) do S其语义解释为i:=E(,)LIMIT:=E(2)again: if i1|3|
5、5|7|9|BD-0|C2.知)最左推导:(2分) S )今(a T )5 a-T, S) 今(区,(S.S),Xa(aj$)J诺法树. (2分)S /I (T(2)短语:(2分)(T,(T,T,S), S)S(T,S),Qa)直接短语:(1分)T, Sa句柄:(1分)T, S3.解:(1) if x0 goto 3goto 8if y0 goto 5 goto 8 tl=x+y z=tl goto 12 t2=x+2 x=t2(10) t3=y+3(11) y=t3(控制结构3分,其它3分)4.解:(1) (2 分)F一fbri: =E (1)1)to E doS-FS(2)(每个语义动作2
6、分)Ffbri=E )to E 2;doGEN (: =E-place, 一, entry (i);F-place: = entry (i);LIMIT : =Newtemp;GEN (: =, E2)-place, 一,LIMIT);q: =NXQ;FQUAD: =q;GEF (j, (entry (i), LIMIT, q + 2)F chain: =NXQ;G (j, , , 0)SF S BACKPATCH (S(1)-chain, NXQ);GEN (十,F-place, 1, F-place);GEN (j,FQUAD);S-chain: = F-chain);5.解:(1)(消除左递归2分,提公因左因子2分)S 一 aFS,| + aFSS一+aFS|eF*aFFF|e(2) (3 分)FIRST (S) = a,十FIRST (50) = + , 8FIRST (F) = *FIRST (F) = *, 8(3) (3 分)FOLLOW (S) = # FOLLOW (S) = # FOLLoW (F) = ( + , # FOLLOW ( + , # )*,SSf + aFS,卜Ff F解:(1) DAG: (3 分)(2)四元式序列:(3分)T2: =A-BT3:=A+BT4=T2*T3L:=T4 + 24