编译原理期末考试试卷(A卷)
- 格式:doc
- 大小:67.50 KB
- 文档页数:7
编译原理期末考试试题及答案一、选择题(每题2分,共20分)1. 编译器的前端主要负责以下哪项工作?A. 代码优化B. 目标代码生成C. 词法分析和语法分析D. 运行时支持2. 词法分析器的主要任务是什么?A. 识别语法结构B. 识别词法单元C. 构建语法树D. 代码优化3. 语法分析中,使用哪种方法可以避免回溯?A. 递归下降分析B. LR分析C. LL分析D. 自顶向下分析4. 下列哪个选项不是中间代码的形式?A. 三地址代码B. 四元组C. 抽象语法树D. 汇编语言5. 代码优化的目标不包括以下哪项?A. 提高代码执行速度B. 减少程序占用的内存C. 增加程序的可读性D. 减少程序的执行时间二、简答题(每题10分,共30分)1. 简述编译器的主要组成部分及其功能。
2. 解释什么是语法制导翻译,并举例说明其在编译过程中的应用。
3. 描述静态作用域规则和动态作用域规则的区别。
三、计算题(每题15分,共30分)1. 给定一个简单的算术表达式 `3 + (4 * 5) - 2`,请使用逆波兰表示法表示,并说明其转换过程。
2. 假设有一个简单的文法如下:```S -> A BA -> a A | εB -> b B | ε```请写出使用该文法生成字符串 "ab" 的所有派生树。
四、论述题(每题20分,共20分)1. 论述编译器中代码优化的重要性,并举例说明常见的优化技术。
参考答案一、选择题1. C2. B3. B4. D5. C二、简答题1. 编译器的主要组成部分包括前端、中端和后端。
前端负责词法分析和语法分析,中端进行语义分析和中间代码生成,后端则负责代码优化和目标代码生成。
2. 语法制导翻译是一种基于文法规则的翻译技术,它将源程序的语法结构映射到相应的语义操作上。
例如,在编译过程中,语法制导翻译可以用于将源代码中的条件语句转换为中间代码中的跳转指令。
3. 静态作用域规则是指变量的作用域在编译时确定,而动态作用域规则是指变量的作用域在运行时确定。
编译原理期末试卷1.给出LL(1)分析方法的总控流程图。
(5分)2.按指定类型给出下列语言的文法。
(10分)(1) L1={ ca n b m| n≥0,m>0 } 用正规文法。
S→cA A→aA|aB|a B→bB|b(2) L2={ 0n a 1n b m| n>0,m ≥0} 用二型文法。
S→0S1B|0a1 B→bB|c3.文法G[S]为:(10分)S→SdT | T T→T<G | G G→(S) | a试给出句型adT<(S)的短语、简单(直接)短语、句柄和最左素短语。
短语:a, T, (S), T<(S), adT<(S) 直接短语:a, (S) 句柄:a 最左素短语:a 4.将文法G[S] 改写为等价的G'[S],使G'[S]不含左递归和左公共因子。
(5分)S→[A A→B]|AS B→aB|+aS→[A A→B]A’A’→SA’|εB→aB|+a5.判断下面文法是否为LL(1)文法,若是,请构造相应的LL(1)分析表,并写出aabbb 的分析过程。
(10分)S→aD D→STe|ε T→bM M→bH H→M|ε6.简述编译程序概念及构成。
(10分)编译程序是现代计算机系统的基本组成部分.从功能上看,一个编译程序就是一个语言翻译程序,它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序.7.设G=(V N,V T,P,<S>)是上下文无关文法,产生式集合P中任意一个产生式应具有什么样的形式?若G是正则文法呢?(10分)2型(上下文无关):规则形式:A→βA ∈VN,β∈ (VT⋃VN)*3型(右线性):A→aB或A→a(右线性)A→Ba或A→a (左线性)a ∈VT⋃{ε}8.为文法G[E]:(10分)V → N | N[E] E → V | V+E N → i构造递归下降识别程序E( ){ V( ); if symbol = ‘+’E( ); }V( ){ N(); if symbol = ‘[’ { E(); if symbol != ‘]’error(); }N( ){ if symbol != ‘i ’ error(); }/* 这样的写法很简化,当文法提取左公因子后,需要计算相关非终结符的Follow 集,才能确定什么时候用空串规则推导。
《编译原理》试卷A 参考答案注意事项:1. 请考生按要求在试卷装订线内填写姓名、学号和年级专业。
2. 请仔细阅读各种题目的回答要求,在规定的位置填写答案。
3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。
4. 满分100分,考试时间为120分钟。
题号一二三四总分统分人得分一、单项选择题(每小题2分共20分)1.中间代码生成所依据的是语言的(C )。
A: 词法规则B: 语法规则C: 语义规则D: 产生式规则2.词法分析器的加工对象是(C )。
A: 中间代码B: 单词C: 源程序D: 元程序3.同正则表达式a*b*等价的文法是(C )。
A: G1: S aS|bS|εB: G2: S aSb|εC: G3: S aS|Sb|εD: G4: S abS|ε4.文法G[A]:A→b A→bH H H →BA B→Ab H →a 不是(B ):A: 2型文法B: 正规文法C: 0型文法D: 1型文法5.算符优先分析每次都是对(算符优先分析每次都是对( B B B )进行规约。
)进行规约。
A: A: 短语短语短语 B: B: B: 最左素短语最左素短语最左素短语 C: C: C: 素短语素短语素短语 D: D: D: 句柄句柄6.一个LR (1)文法合并同心集后,如果不是LALR(1)文法必定存在(B ):A: 移进-归约冲突B: 归约-归约冲突C: 识别句型D: 收集类型信息7.下列不属于类型检查范畴的描述是(C )。
A: 运算符的分量类型的相容性B: 形参和实参类型的相容性C :形参和实参的个数的一致性D: 赋值语句的左右部类型的相容性8.( B B )不是)不是DFA 的成分。
A:A:有穷字母表有穷字母表有穷字母表 B: B: B:初始状态集合初始状态集合C:C:终止状态集合终止状态集合终止状态集合 D: D: D:有限状态集合有限状态集合9.若B 为非终结符,则A α.B β为(为( B B B )项目。
《编译原理》考试试卷A适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1.解释系统与编译系统的区别在于和。
2.在编译过程中始终伴随着管理和出错处理过程。
3.语法分析的方法为和两大类。
4.LL(1)文法中不能有和。
5.词法分析器中单词的描述工具是 ,单词的识别工具。
6.算符优先语法分析,在符号栈栈顶出现时,进行规约处理。
二、单选题(每小题2分,共10分)1.词法分析器的加工对象是()A.中间代码B.单词C.源程序D.元程序2.同正则表达式a*b*等价的文法是()A. G1:S→aS|bS|εB. G2: S→aSb|εC. G3:S→aS|Sb|εD. G4: S→abS|ε3.文法G[A]:A→bH H→BA B→Ab H→a 不是()A. 2型文法B. 3型文法C. 0型文法D.1型文法4.算符优先分析每次都是对()进行规约。
A.短语B.最左素短语C.素短语D.句柄5.( )不是DFA的成分。
A.有穷字母表B. 初始状态集合C.终止状态集合D.有限状态集合三、问答题(第1,5小题每题15分,其余每小题10分,共80分)1. (15分)解释下列术语:(1)编译程序(2)句柄(3)上下文无关文法2.编译程序主要有哪些构成成分?(10分)3.给出描述语言L={a n b2n c m|n,m≥0}的cfg。
(10分)4.(10分)将下图中的DFA M最小化。
5. (15分)判断文法G[S]:S→aHH→aMd|dM→Ab|εA→aM|e是否为LL(1)文法?给出判断过程。
6. (10分)改写文法G[E]:E → E+T|TT →T*F|FF →(E)| a为无左递归文法。
7. (10分)已知文法G[S]为:S→VV→T|ViTT→F|T+FF→)V*|(请指出句型(+(i( 规范推到,并指出句型F+Fi( 中的短语、句柄和素短语。
《编译原理》考试试卷A参考答案适用专业:考试日期:闭卷所需时间:120分钟总分:100分一、填空题:(每空1分,共10分)1. 边翻译边执行和不生成目标代码。
XX大学20XX~202X学年第X学期期末考试《编译原理》试卷(A卷)一单选题 (共3题,总分值15分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
)1. 一个正则语言只能对应?(B)(5 分)A. 一个正则文法B. 一个最小有限状态自动机C. 一个自然语言D. 一个上下文有关文法2. 一个句型中最左的(A )称为该句型的句柄。
(5 分)A. 简单短语B. 短语C. 非终结符号D. 终结符号3. Micro语言只有三种语句:(B)、输入语句和输出语句。
(5 分)A. GOTO语句B. 赋值语句C. 条件语句D. 循环语句二填空题 (共3题,总分值15分 )4. 描述高级语言语法的常用方法有__语法图________和BNF范式。
(5 分)5. 对于编译程序而言,输入数据是 __目标程序_______ ,输出数据是 __目标程序_______ 。
(5 分)6. 给出在字母表{0,1}上的“所有以00结尾的符号串的集合”的语言的正则表达式:__(0/1)*00________。
(5 分)三简答题 (共2题,总分值20分 )7. 简述DFA与NFA有何区别。
(10 分)答:解: DFA与NFA的区别主要有两点:1是NFA可以若千个开始状态,而DFA仅只一个开始状态。
2是DFA的映象M是从KX E到K,而NFA的映象M是从KX E到K的子集,即映象 M将产生一个状态集合(可能为空集),而不是单个状态。
8. 给出与正规式R=(ab)*(a|b*)ab等价的NFA。
(10 分)答:四综合计算题 (共2题,总分值50分 )9. 判断分析下列文法是否具有二义性:G[P]: P→PaP|PbP|cP|Pe|f (25 分)答:10. 对于下面的文法G[Z],构造句子(i*i+i)*i的最左和最右推导及相应的语法树。
(1)Z::=E(2)E::=T+E(3)E::=T(4)T::=F*T(5)T::=F(6)F::=(E)(7)F::=i(25 分)解:最左:Z=>E=>T=>F*T=>(E)*T=>(T+E)*T=>(F*T+E)*T=>(i*T+E)*T=>(i*F+E)*T=>(i*i+E)*T =>(i*i+T)*T=>(i*i+F)*T=>(i*i+i)*T=>(i*i+i)*F=>(i*i+i)*i最右:Z=>E=>T=>F*T=>F*F=>F*i=>(E)*i=>(T+E)*i=>(T+T)*i=>(T+F)*i=>(T*i)*i=>(F*T+i)*i =>(F*F+i)*i=>(F*i+i)*i=>(i*i+i)*iXX大学20XX~202X学年第X学期期末考试《编译原理》试卷(B卷)一单选题 (共4题,总分值20分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。
编译原理期末考试试卷(A卷)一、简述编译程序的工作过程.(10)二、构造下列正规式相应的DFA(用状态转换图表示)(15)(1)1(0 |1)*100(2)0*10*10*10*1(3)letter(letter | digit)*三、给出下面语言的相应文法:(15)L1={a n b n|n≥1}L2={a n b m+n a m| n≥1,m≥0}四、对下面的文法G:S→a | b | (T)T→T,S | S(1)消去文法的左递归,得到等价的文法G2;(2) 判断文法G2是否LL(1)文法,如果是,给出其预测分析表。
(15)五、设有文法G[A]:A→BCc |gDBB→bCDE |εC→DaB | caD→dD |εE→gAf |c(1)计算该文法的每一个非终结符的FIRST集和FOLLOW集;(2)试判断该文法是否为LL(1)文法。
(15)六、对表达式文法G:E →E+T |TT →T*F | FF →(E) | I(1)造各非终结符的FIRSTVT和LASTVT集合;(2)构造文法的算符优先关系表。
(15)七、有定义二进制整数的文法如下:L →LB | BB →0 | 1构造一个翻译模式,计算该二进制数的值(十进制的值)。
(15)简述编译程序的工作过程。
(10)编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;④代码优化,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式.二、构造下列正规式相应的DFA(用状态转换图表示)(15) (4)(5) (6)(1) (2)(3)三、给出下面语言的相应文法:(15)L1={a n b n | n ≥1} L 2={a n b m+n a m | n ≥1,m ≥0}G1:A →aAb |abG1: S →ABA →aAb | abB →bBa | ε四、对下面的文法G:S→a |b | (T)T→T,S | S(1) 消去文法的左递归,得到等价的文法G2;(2)判断文法G2是否LL(1)文法,如果是,给出其预测分析表。
二、选择题(每题3分,共30分)1、作为编译程序的源语言不能是____________A、高级语言B、C语言C、低级语言D、Pascal语言2、正规式M1和M2等价是指__________。
A、M1和M2的状态数相等 B、M1和M2的有向边条数相等C、M1和M2所识别的语言集相等 D、M1和M2的状态数和有向边条数相等3、由文法的开始符号经0步或多步推导产生的文法符号序列是_________。
A、短语B、句柄C、句型D、句子4、设∑={0,1},则∑上所有以1开头,后跟若干个010的字的集合对应的正规式为________。
A.1(010)* B.1(010)+ C.(010)*1 D.(010)+15、文法G(S) :S xSx|y所识别的语言是________。
A.xyx B. (xyx)* C. x n yx n(n>=0) D.x*yx*6、一个________指明了在分析过程中的某时刻所能看到的产生式多大一部分。
A.活前缀B.前缀C.项目D.项目集7、LL(1)文法的条件是______。
A.对形如U->Xl|X2|…|Xn的规则,要求FIRST(Xi)∩FIRST(Xj)=Φ,(i≠j)B.对形如U->Xl|X2|…|Xn的规则,若Xi=>*ε,则要求FIRST(Xj)∩FOLLOW(U)=ΦC.a和bD.都不是8、已知文法G[E]E->TE'E'->+TE'|εT->FT'T'->*FT'|εF一(E)|idFOLLOW(F)=______A.{*,+}B. {#,)} C.{+,#,)} D.{*,+,#,)}9、语法制导的翻译程序能同时进行__________和语义分析。
A、词法分析B、语法分析C、优化D、目标代码生成10、在LR 分析法中,分析栈中存放的状态是识别规范句型_____的DFA 状态。
编译原理期末考试试卷(A卷)一、简述编译程序的工作过程。
(10)
二、构造下列正规式相应的DFA(用状态转换图表示)(15)
(1)1(0 | 1)*100
(2)0*10*10*10*1
(3)letter(letter | digit)*
三、给出下面语言的相应文法:(15)
L1={a n b n | n≥1} L2={a n b m+n a m| n≥1,m≥0}
四、对下面的文法G:
S→a | b | (T)
T→T,S | S
(1) 消去文法的左递归,得到等价的文法G2;
(2) 判断文法G2是否LL(1)文法,如果是,给出其预测分析表。
(15)
五、设有文法G[A]:
A→BCc | gDB
B→bCDE |ε
C→DaB | ca
D→dD |ε
E→gAf | c
(1)计算该文法的每一个非终结符的FIRST集和FOLLOW集;
(2)试判断该文法是否为LL(1)文法。
(15)
六、对表达式文法G:
E →E+T | T
T →T*F | F
F →(E) | I
(1)造各非终结符的FIRSTVT和LASTVT集合;
(2)构造文法的算符优先关系表。
(15)
七、有定义二进制整数的文法如下:
L →LB | B
B →0 | 1
构造一个翻译模式,计算该二进制数的值(十进制的值)。
(15)
简述编译程序的工作过程。
(10)
编译程序的工作过程,是指从输入源程序开始到输出目标程序为止的整个过程,是非常复杂的,就其过程而言,一般可以划分为五个工作阶段:①词法分析,对构成源程序的字符串进行扫描和分解,识别出一个个的单词;②语法分析,根据语言的语法规则,把单词符号串分解成各类语法单位;③语义分析与中间代码产生,即对各类语法单位,分析其汉一并进行初步翻译;④代码优化,以期产生更高效的代码;⑤目标代码生成,把中间代码变换成特定机器上的低级语言指令形式。
二、构造下列正规式相应的DFA (用状态转换图表示)(15) (4)
(5) (6)
(1)
(2)
(3)
三、给出下面语言的相应文法:(15)
L 1={a n b
n | n ≥1} L 2={a n b m+n a m
| n ≥1,m ≥0}
G1:
A →aAb |ab
G1: S →AB
A →aAb | ab
B →bBa | ε
四、对下面的文法G:
S→a | b | (T)
T→T,S | S
(1) 消去文法的左递归,得到等价的文法G2;
(2) 判断文法G2是否LL(1)文法,如果是,给出其预测分析表。
(15)G2:
S→a | b | (T)
T→ ST’
T’→,S T’ | ε
G2是LL(1)文法。
五、设有文法G[A]:
A→BCc | gDB
B→bCDE |ε
C→DaB | ca
D→dD |ε
E→gAf | c
(1)计算该文法的每一个非终结符的FIRST集和FOLLOW集;
(2)
是
六、对表达式文法G:
E →E+T | T
T →T*F | F
F →(E) | I
(1)造各非终结符的FIRSTVT和LASTVT集合;
(2)构造文法的算符优先关系表。
(15)
L →LB | B
B →0 | 1
构造一个翻译模式,计算该二进制数的值(十进制的值)。
(15)引入L、B的综合属性val,翻译模式为:
S→L {print(L.val)}
L →L1B {L.val= L1.val*2+B.val}
L →B {L.val= B.val}
B →0 {B.val=0}
B →1 {B.val=1}。