收藏 分销(赏)

编译原理期末试卷(含答案).doc

上传人:xrp****65 文档编号:6908972 上传时间:2024-12-23 格式:DOC 页数:7 大小:164KB 下载积分:10 金币
下载 相关 举报
编译原理期末试卷(含答案).doc_第1页
第1页 / 共7页
编译原理期末试卷(含答案).doc_第2页
第2页 / 共7页


点击查看更多>>
资源描述
编译原理试题 计算机学院2001级 班 学号 姓名 题号 一 二 三 四 五 六 七 八 九 十 十一 十二 总分 满分 12 6 8 7 8 8 12 12 7 6 6 8 100 得分 一 选择题(12分) 【 】1.词法分析器的输入是 。 A.符号串 B.源程序 C.语法单位 D.目标程序 【 】2.两个有穷自动机等价是指它们的 。 A.状态数相等 B.有向弧数相等 C.所识别的语言相等 D.状态数和有向弧数相等 【 】3.文法G:S → xSx | y 所识别的语言是 。 A.xy*x B.(xyx)* C.xx*yxx* D.x*yx* 【 】4.设a,b,c为文法的终结符,且有优先关系aºb和bºc,则 。 A.必有aºc B.必有cºa C.必有bºa D.选项A、B和C都不一定成立 【 】5.若状态k含有项目“A→α.”,且仅当输入符号a∈FOLLOW(A)时,才用规则“A →α”归约的语法分析方法是 。 A.ALR分析法 B.LR(0)分析法 C.LR(1)分析法 D.SLR(1)分析法 【 】6.生成中间代码时所依据的是 。 A.语法规则 B.词法规则 C.语义规则 D.等价变换规则 【 】7.表达式(┐a∨b)∧(c∨d)的逆波兰表示为 。 A.┐ab∨∧cd∨ B.a┐b∨cd∨∧ C.ab∨┐cd∨∧ D.a┐b∨∧cd∨ 【 】8.基本块 。 A.只有一个入口语句和一个出口语句 B.有一个入口语句和多个出口语句 C.有多个入口语句和一个出口语句 D.有多个入口语句和多个出口语句 二 判断题(6分。认为正确的填“T”,错的填“F”) 【T 】1.同心集的合并有可能产生“归约/归约”冲突。 【T 】2.一个文法所有句子的集合构成该文法定义的语言。 【 】3.非终结符可以有综合属性,但不能有继承属性。 【T 】4.逆波兰表示法表示表达式时无需使用括号。 【 】5.一个有穷自动机有且只有一个终态。 【】6.若过程p第k次被调用,则p的DISPLAY表中就有k+1个元素。 三 填空题(8分) 1.最常用的两类语法分析方法是 自顶向下     和  自低向上  分析法。 2.对于文法G[E]:E→T|E+T T→F|T*F F→P↑F|P P→(E)|i,句型T+T*F+i的直接短语为    ,句柄为    。 3.在LR(0)分析法中,若a,βÎV*且aÎ则称“A ®a.”为 规约   项目,称“S ®a.aβ”为  移进  项目。 4.在PL/0的目标代码解释执行时,寄存器B总是指向当前执行过程活动记录的 起始地址   ,而寄存器T总是指向 栈顶   。 四(7分)有穷自动机M接受字母表S={0,1}上所有满足下述条件的串:串中至少包含两个连续的0或两个连续的1。请写出与M等价的正规式。 五(8分)构造下列文法相应的有穷自动机。 G[S]: S → aA | bQ A → aA | bB | b B → bD | aQ Q → aQ | bD | b D → bB | aA E → aB | bF F → bD | aE | b 六(8分)写一个文法,使其语言是: L = { ambmanbn | m,n≥0 } 七(12分)已知文法 G[A]: A → aAB | a B → Bb | d (1)构造与G[A]等价的LL(1)文法; (2)构造G’[A]的预测分析表。 八(12分)考虑文法 G[S]: S → AS | b A → SA | a (1)构造文法的可归前缀图(活前缀的DFA); (2)判断文法是否是LR(0)文法,并说明理由。 九(7分)将下面程序段翻译成四元式序列。 while A<C∧B<D do   if A=1 then C:=C+1   else while A<D do   A:=A+2; 十(6分)设有以下程序段 program main; var a,b:integer; procedure p(x,y,z:integer); begin y:=y+1; z:=z+x end; begin a:=2; b:=3; p(a+b,a,a); write(a) end. 对于下列参数传递方式,分别写出执行程序后a的输出值。 (1)传名; (2)传地址。 十一(6分)有一语法制导翻译如下所示: S → bAb { print(”1”) } A →(B { print(”2”) } A → a { print(”3”) } B → Aa) { print(”4”) } 若对输入序列b(((aa)a)a)b 进行自底向上分析,请写出输出序列。34242421 十二(8分)对PL/0语言扩充ELSE子句: <条件语句> ::= IF <条件> THEN <语句> [ ELSE <语句> ] 请在空缺处填空,完成条件语句的编译算法: switch (SYM) { …… case IFSYM: GetSym() ; CONDITION(SymSetUnion(SymSetNew(THENSYM),FSYS),LEV,TX); if (SYM==THENSYM) GetSym(); else Error(16); CX1=CX; GEN(JPC,0,0); STATEMENT(SymSetUnion(SymSetNew(ELSESYM),FSYS),LEV,TX); if ( SYM!=ELSESYM ) CODE[CX1].A=CX; else { CX2=CX; GEN(JMP,0,0); CODE[CX1].A= cx (或者cx2+1) ; STATEMENT(FSYS,LEV,TX); CODE[cx2].A=cx ; } break; …… } CP_sample答案 题号 一 二 三 备 注 1 B ○ 自顶向下 自底向上 2 C ○ T,T*F , i T 3 D ╳ 归约 移进 4 D ○ 起始地址 栈顶 5 D ╳ 6 C ╳ 7 B 8 A Z S A B D Q a b a a b b b b b b a a 四. 五. 六.G: S→AB A→aAb|ε B→aBb|ε 七.修改后的文法G’[A] : A→aA’ Select (A→aA’)={a} A’→AB|ε Select (A’→AB)={a} Select(A’→ε)={#,d} B→dB’ Select(B→dB’)={d} B’→bB’|ε Select(B’→bB’)={b} Select(B’→ε)={#} Select(A’→AB) Select(A’→ε)=F Select(B’→bB’) Select(B’→ε)=F G’[A]为LL(1)文法 预测分析表: a b d # A A→aA’ A’ A’→AB A’→ε A’→ε B B→dB’ B’ B’→bB’ B’→ε 八.(1)可归前缀图 (2)因为存在冲突,所以不是LR(0)文法。 九.100(J<, A, C, 102) 或: 100 if A<C goto 102 101(J, , , 113) 101 goto 113 102(J<, B, D, 104) 102 if B<D goto 104 103(J, , , 113) 103 goto 113 104(J=, A, 1, 106) 104 if A=1 goto 106 105(J, , , 108) 105 goto 108 106(+, C, 1, C) 106 C:=C+1 107(J, , , 112) 107 goto 112 (或goto 100) 108(J, A, D, 110) 108 if AD goto 110 109(J, , , 112) 109 goto 112 (或goto 100) 110(+, A, 2, A) 110 A:=A+2 111(J, , , 108) 111 goto 108 112(J, , , 100) 112 goto 100 113 113 十. (1) 9 十一.34242421 十二. GetSym() (2) 8 SYM!=ELSESYM cx (或者cx2+1) CODE[cx2].A=cx - 7 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服