【VIP专享】08计算机函授编译原理A卷答案及评分标准

合集下载

编译原理考试试卷+答案A卷

编译原理考试试卷+答案A卷

编译原理期末试卷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 集,才能确定什么时候用空串规则推导。

2009-2010编译原理A卷及答案汇总

2009-2010编译原理A卷及答案汇总

南昌航空大学2009 —2010 学年第二学期期末考试课程名称:编译原理 闭卷 A 卷 120 分钟一、 填空题(每空2分,共24分)1、一个上下文无关文法G 包括四个组成部分:一组终结符号,一组非终结符号,一个______________,以及一组产生式。

(2分)2、 自下而上分析方法的基本思想是:从输入符号串开始,利用文法规则逐步进行归约,直至归约到文法的______________。

(2分)3、自顶向下的语法分析方法的基本思想是:从文法的_____ _开始,根据给定的输入串并按照文法的产生式一步一步的向下进行_____ _,试图推导出文法的___ ___,使之与给定的输入串______。

(8分)4、S -属性文法中的每个文法符号,只含有______________ 属性。

(2分)5、对于文法的每个产生式都配备了一组属性的计算规则,称为 _____ 。

(2分)6、通过一便扫描来产生布尔表达式的代码主要问题在于,当生成某些转移语句时可能不知道该语句将要转移到的标号究竟是什么。

为了解决这个问题可以采用______________技术。

(2分)7、a*(b-c)的后缀式为______________。

(2分)8、假定G 是一个文法,S 是它的开始符号。

如果S α*⇒,则称α是一个______________。

仅含______________的句型是一个句子。

(2分)二、选择题(每题2分,共20分)1、_____是两类程序语言处理程序。

A.高级语言程序和低级语言程序B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序2、一个句型中的最左_____称为该句型的句柄。

A.短语B.简单短语C.素短语D.终结符号3.若一个文法是递归的,则它所产生的语言的句子_____。

A.是无穷多个B.是有穷多个 C.是可枚举的D.个数是常量4、在自底向上的语法分析方法中,分析的关键是_____。

A.寻找句柄B.寻找句型C.消除递归D.选择候选式5、若a为终结符,则A->α·aβ为_____项目。

编译原理(A卷)答案

编译原理(A卷)答案

湖北第二师范学院2014-2015学年度第二学期《编译原理》课程考试答案(A卷) 院系:计算机学院专业班级:学生姓名:学号:考试方式:闭卷………………………………………………………………………………………………………………一、填空题(每空1分,共10分)1.词法分析程序是逐个识别(字符),形成单词级别的(字符)串,词法分析程序输出的数据是(2 )个,它们分别是(种别编码)和(自身值)。

2.语法分析程序是逐个识别(单词),形成语句级别的(单词)串。

3.一遍扫描的编译方法,是以语法分析程序为主,调用(词法分析)程序、语义分析程序,再由语义程序调用中间代码生成、中间代码优化等。

4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。

二、综合题(共90分)1.(5分)将下面文法改写成3型文法:G=({S,A,B},{a,b,c,d,e},P,S)其中:P={S→abcA|edB,A→beB,B→d}答案:改写后的3型文法是(5分)G=({S,A,B,C,D,E,F},{a,b,c,d,e},P,S)其中:P={S→aC|eF, C→bD,D→cA,A→bE,E→eB,F→dB,B→d}2.(5分)给出下面表达式的四元式形式:a*b+(c-d)/e答案:四元式形式(5分)(*,a,b,t1)(-,c,d,t2)(/,t2,e,t3)(+,t1,t3,t4)3.(30分)给定文法 G[E] :E → E+T | E-T | TT → T*F | T/F | FF → (E) | i该文法是 LL(1) 文法吗?为什么?不是的能否改造为LL(1)文法,如果能够改造,给出改造后的文法,并给出改造后文法是LL(1)文法的证明过程。

无论改造前还是改造后的文法,如果是LL(1)文法,则给出(i+i)*i的分析过程(要求给出详细过程,并给出LL(1)的分析表)答案:(1)该文法不是LL(1)文法,因为文法的产生式含有左递归(2分)(2)该文法可改造为LL(1)文法,即消除左递归,改造后的文法是(3分)E → TE’E’→ +TE’ | -TE’ | εT → FT’T’→ *FT’ | /FT’ |εF → (E) | i证明改造后的文法是LL(1)文法的过程A.求可达ε的非终结符(1分)可达的是E’,T’B.求每个非终结符的First集合(3分)First(E)={ (,i}First(E’)={+,-}First(T)={ (,i}First(T’)={*,/}First(F)={ (,i}C.求每个产生式右部字符串的First集合(3分)First(TE’)={ (,i}First(+TE’)={+}First(-TE’)={-}First(FT’)={ (,i}First(*FT’)={*}First(/FT’)={/}First((E))={ ( }First(i)={ i }First(ε)={ ε}D.求每个非终结符的Follow集合(3分)Follow(E)={$,)}Follow(E’)= Follow(E)={$,)}Follow(T)=First(E’) ∪ Follow(E)={$,+,-,)}Follow(T’)= Follow(T)={$,+,-,)}Follow(F)= First(T’) ∪ Follow(T)={$,+,-, *,/,)}E.求每个非终结符的Select集合(5分)Select(E → TE’)=First(TE’)={ (,i }Select(E’→ +TE’)=First(+TE’)={ + }Select(E’→ -TE’)=First(-TE’)={ - }Select(E’→ε)=First(ε)-{ ε} ∪ Follow(E’)={ $,) }Select(T → FT’)=First(FT’)={ (,i }Select(T’→ *FT’)=First(*FT’)={ * }Select(T’→ /FT’)=First(/FT’)={ / }Select(T’→ε)=First(ε)-{ ε} ∪ Follow(T’)={ $,+,-,) }Select(F → (E))=First((E))={ ( }Select(F → i)=First(TE’)={ i }F.求有多个产生式的非终结符Select集合的交集(2分)显然有Select(E’→ +TE’)∩Select(E’→ -TE’) ∩Select(E’→ε)=ΦSelect(T’→ *FT’) ∩Select(T’→ /FT’) ∩Select(T’→ε)= ΦSelect(F → (E))= ∩Select(F → i)= Φ所以改造后的文法是LL(1)文法4.(10分)对下面的NFA进行确定化答题:第1第25.(15分)给定文法 G[E] :E → E+T | E-T | TT → T*F | T/F | F该文法是算符优先文法吗?是,则构造该文法的算符优先关系矩阵,并给出(i+i)*i的分析过程(要求给出详细过程)答案:(1)该文法是算符优先文法(1分)(2)构造该文法的算符优先矩阵A.求各非终结符的FirstVT集合(3分)FirstVT(E)={+,-,*,/,(,i}FirstVT(T)={*,/,(,i}FirstVT(F)={(,i}B.求各非终结符的LasttVT集合(3分)LastVT(E)={ +,-,*,/,),i }LastVT(T)={ *,/,),i }LastVT(F)={ ),i }C.构造优先关系表(4分)6.(25分)给定文法 G[E] :T → T*F | FF → (E) | i该文法是LR(0)文法吗?是,则构造该文法的LR(0)分析表,并给出(i+i)*i的分析过程,不是的,是SLR(1)文法吗,是,则构造该文法的SLR(1)分析表,并给出(i+i)*i的分析过程。

《编译原理》考试试题及答案

《编译原理》考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )11.一个优先表一定存在相应的优先函数。

( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( 最右推导 )称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

编译原理试卷A参考答案

编译原理试卷A参考答案

《编译原理》试卷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)卷一、填空题(每小题2分,共20分)1、字母表∑,用∑*表示∑上所有有穷长的串集合,∑*称为∑的①。

2、设z=abc,则z的固有头是①。

3、如何由语言基本符号组成程序中各个语法成分(包括程序)的一组规则叫①。

4、设∑={a,b},∑上的正规式(a|b)(a|b) 相应的正规集为①5、NFA的映象f是从"状态×字"映射到"状态子集",f为①值函数。

6、LR分析是按规范句型的①为可归约串。

7、结点的①属性值由该结点的兄弟结点和父结点的属性值计算。

8、如果分析树中一结点的属性b依赖于属性c,那么这个结点的属性b的语义规则的计算必须在定义属性c的语义规则的计算①。

9、对于栈式符号表,引入一个显示嵌套层次关系表- ①表,该表总是指向当前正在处理的最内层的过程的子符号表在栈符号表中的起始位置。

10、任一有向边序列n1 → n2,n2 → n3,…,nk-1 → nk为从结点n1到结点nk的一条通路。

如果n1=nk,则称该通路为①。

二、单项选择(每小题2分,共14分)1、乔姆斯基把文法分成4种类型,即0型、1型、2型和3型。

其中3型文法也称为()。

A.上下无关文法 B.正规文法C.上下文有关文法 D.无限制文法2、生成非0开头的正偶数集的文法是()。

A. Z::=ABC B. Z::=ABCC::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|ε B::=BA|B0|0A::=1|2|3|…|9 A::=1|2|3|…|9C. Z::=ABC|2|4|6|8D. Z::=ABC|2|4|6|8C::=0|2|4|6|8 C::=0|2|4|6|8B::=BA|B0|0 B::=BA|B0|εA::=1|2|3|…|9 A::=1|2|3|…|93、简单优先分析法从左到右扫描输入串,当栈顶出现()时进归约。

A.素短语B.直接短语C.句柄D.最左素短语4、同心集合并有可能产生新的()冲突。

编译原理期末A试卷答案

编译原理期末A试卷答案

黄冈师范学院2012—2013学年度第一学期期末试卷参考答案考试课程:编译原理考核类型:考试A卷考试形式:闭卷出卷教师:牛冀平考试专业:计算机科学与技术,软件工程考试班级:计科201001班,软件201001班一、填空(每空0.5分,共 10分)1、编译程序的功能是是对(高级语言)进行翻译,使之生成目标代码。

2、编译程序的工作过程一般划分为5个阶段:(词法分析)、语法分析、语义分析与中间代码生成,(代码优化)及目标代码生成。

另外还有表格管理和(出错处理)。

3、一个上下文无关文法所含四个组成部分是一组终结符号、一组(非终结符号)、一个开始符号、(一组产生式)。

4、设G是一个给定的文法,S是文法的开始符号,如果S=> x(其中x∈V*),则称x 是文法的一个(句型)。

5、规范归约中的可归约串是指句柄,算符优先分析中的可归约串是指(最左素短语)。

6、在编译过程中,可采用的中间代码形式有()、()、()等。

(三元式、间接三元式、四元式、逆波兰式、抽象语法树)(任选三个即可)7、语法分析最常用的两类方法是(自上而下)和(自下而上)分析法。

8、表达式(a+b)*c的后缀表达式为(ab+c*)。

9、符号表的结构一般有(线性表)、(有序表)、(散列表或哈希表)等。

分别使用的查找方法有(顺序查找)、(折半查找)和(哈希法查找)10、代码优化的目的是(减少代码的时空开销)。

11、寄存器是CPU内部的(存储单元),其访问时间小于CPU对内存的访问时间。

12、如果一个句子存在两棵不同的语法树就说明该句子是(二义性)的。

二、选择题(每题1分,共10分)1、文法的开始符号经多步推导产生的文法符号序列(仅包含终结符)是文法的(D )。

A.短语B.句柄C.句型D.句子2、构造编译程序应掌握(D)。

A.源程序B.目标语言C.编译方法D.以上三项都是3、不属于循环优化的主要方法的是(B)。

A.强度削弱B.删除无用赋值C.删除归纳变量D.代码外提4、使用(A)可以定义一个程序的含义。

编译原理试卷A(考试专用)

编译原理试卷A(考试专用)
3.表达式(b*5)的逆波兰式表示为。
4.文法的属性有和。
5.根据所涉与程序的范围,优化可分为局部优化、和全局优化三种。
得分
二、选择题(每小题2分,共10分)
1.描述语言{≥1}的文法为( )。
A.B.
C.D.ε
2.以10结尾的二进制数串为( )。
A.(0|1)*01B.(0|1)*10C.01(0|1)*D.10(0|1)*
()
p();
1; ;
23; p(); a .
A.2和8 B.2和9 C.7和9 D.7和8
得分
三、判断并改错(每小题2分,共10分)
1.文法的二义性和语言的二义性是两个相同的概念。
2.图中运算符,操作符可作为终端结点。
3.和所含的终态结点可以是若干个。
4.存在一个优先关系表就一定存在优先函数与之对应。
G(M):
M →
T → |
B → | |
D → d |
4.给出赋值语句 *()的四元式表示形式。(5分)
5.设文法G(S):(15分)
1)构造各非终结符的和集合;
2)构造优先关系表。
3)该文法是算法优先文法吗?
6.设有基本块(5分)
T1:=2
T2:=10
T3:=S-R
T4:=S+R
A:=T2* T4
编译原理考试试卷(A卷)
2009— 2010学年第一学期
科目:编译原理计算机系_计算机科学与技术专业_级班
题号




总分
得分
阅卷人
得分
一、填空题(每空1分,共10分)
1.编译程序的工作的过程一般可以划分为词法分析、、、、等几个基本阶段,同时还会伴有和出错处理。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。

答案:语义分析2. 编译器的后端主要负责________和目标代码生成。

答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。

答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。

答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。

答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。

2. 解释一下什么是语法制导翻译。

答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。

3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。

四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。

答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。

2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。

2008~2009学年度第二学期《编译原理》考试试卷答案-A

2008~2009学年度第二学期《编译原理》考试试卷答案-A

华中科技大学文华学院2008~2009学年度第二学期《编译原理》考试试卷(A卷)标准答案和评分课程性质:(必修)使用范围:(本科)考试时间:2009 年5月日考试方式:(闭卷)学号__________年级专业____________班级________姓名____________ 一、单选题(将正确的答案的字母,填入题干的下划线中。

每题2分,共14分)1.语言学家Chomsky将文法和语言分为四大类,其中3型文法又称为D。

A.无限制文法B.上下文有关文法C.上下文无关文法D.正规文法2.设有文法G[S]:S→(T)|a|∧,T→TbS|S,则FOLLOW(S)= B。

A.{ ),b } B.{ ),b,# } C.{ ),a,# } D.{ ( , b }3.在语法分析方法中,算符优先分析法采用A文法。

A.OPG B.LL(1) C.LR(0) D.LR(1)4.对程序中的表达式的识别工作,编译程序通常都在A阶段完成。

A.语法分析B.语义分析C.词法分析D.目标代码的生成5.自下而上语法分析的工作原理是C。

A.“移进—推导法”B.“最左推导法”C.“移进—规约法”D.“推导—规约法”6.已知∑={a,b},与文法G[S]:S→Sa| Sb| a等价的正规式是C。

A.ab*B.ba* C.a(a|b)*D.aa*|b*7.LR分析法每次都是对当前句型的B进行规约。

A.素短语B.句柄C.短语D.最左素短语二、填空题(每空2分,共22分)1.已知文法G[S]:S →(A)|a ,A →AcS|S|b ;该文法的开始符号是 S ,非终结符号集合为 {S,A},终结符号集合为{a,b,c,(,)}。

2.描述源程序中的单词结构有3种方法:有穷自动机,正规式和正规文法。

3.自上而下的语法分析方法有LL(1)和递归下降方法。

4.设有文法G[S]:S →Sa|a ,构造它的拓广文法,引入一个产生式:S ˊ→S ;则I 。

编译原理试题A及答案

编译原理试题A及答案

编译原理试题A一、单项选择题(每题1分,共20分)1、哪个不是编译系统的组成部分(C )A.词法分析器 B. 代码生成器C.设备管理程序 D. 语法分析器2. 设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是什么(B )A.词法分析 B. 语法分析C.语义分析 D. 代码生成3. 下面不能用于对文法进行描述的是(A )A.源语言 B. EBNF C.BNF D. 语法图4. 设有文法G[S]: S→S1|S0|Sa|Sc|a|b|c,下列符号串中不是该文法的句子的是(A )A.ab0 B. a0c01 C.aaa D. bc105. 文法G[S]:S→aAA→bBB→a|aS ,则L(G)为(C )A.{(ab)n a|n≥1} B. {a (ba)n|n≥1}C.{(aba)n|n≥1} D. {(aba)n|n≥0}6. 哪个不是DFA的构成成分(B )A.有穷字母表 B. 初始状态集合C.终止状态集合 D. 有限状态集合7.词法分析器的输入是(B )A.单词符号串 B.源程序C.语法单位 D.目标程序8.在词法分析阶段不能识别的是(C )A.标识符 B. 运算符C.四元式 D. 常数9.设有一段C语言程序while(i&&++j){c=2.19;j+=k;i++;} ,经过词法分析后可以识别的单词个数是(B )A.19 B.20 C.21 D.2310.自上而下语法分析的主要动作是(B )A.移进 B. 推导C.规约 D. 匹配11.下面不属于LL(1)分析器的组成部分是(D )A.LL(1)总控程序 B. LL(1)分析表C.分析栈 D.源程序串12.设有文法G[S]为S→AB|bC,A→ε|b,B→ε|aD,C→AD|b,D→aS|c则FOLLOW(A)为(A )A.{a,c,#} B.{c,#} C.{a,#} D.{#}13.设有文法G[S]:S→Ap|Bq,A→a|cA,B→b|dB ,则FIRST(Ap)为(C )A.{p,q} B. {b,d} C.{a,c} D. 其他14.自下而上语法分析的主要分析动作是(D )A.推导 B. 规约C.匹配 D. 移进-规约15.算法优先分析中,可规约串是(C )A.句柄B.活前缀C.最左素短语D.素短语16. 设有文法G={{S},{a},{S→SaS|ε},S},该文法是(B )A.LL(1)文法B.二义性文法C.SLR(1)文法D.算法优先文法17、中间代码生成时所以据的是(C )A.语法规则B.词法规则C.语义规则 D.等价变换规则18、给定文法G: E→E+T|T,T→T*F|F,F→i|(E)则L(G)中的一个句子i+i+(i*i)*i的逆波兰表示为(C)A.iii*i++ B.ii+iii**+ C.ii+ii*i*+ D.其他19.在编译程序中与生成中间代码的目的无关的是(B)A.便于目标代码优化B.便于存储空间的组织C.便于目标代码的移植D.便于编译程序的移植20.中间代码是介于源语言程序和什么之间的一种代码(D )A.源代码 B. 机器语言 C. 汇编语言 D. 目标代码二.简答(每题3分,共12分)1. 什么是编译程序?编译程序是将源语言程序翻译为目标语言程序的程序。

编译原理考A答案【考试试卷答案】

编译原理考A答案【考试试卷答案】

编译原理考试卷A 答案一大题:1. 答:词法分析阶段:读源程序,对字符流进行扫描和分解,识别出一个个单词。

语法分析阶段:将单词分解成各类语法短语。

语义分析阶段:审查源程序有无语义错误,为代码生成阶段收集类型信息。

中间代码生成阶段:半源程序变成一种内部表示形式。

代码优化阶段:对中间代码进行变换或改造,使生成的目标代码更为高效。

目标代码生成阶段:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。

2. 答:文法是一个四元组(V N ,V T ,P,S ),其中V N 为非终结符号集,V T 为终结符号集,P为产生式集,S 为开始符号。

按乔姆斯基分类,把文法分成四种类型:0型(短语文法)、1型(上下文有关文法)、2型(上下文无关文法)、3型(正规文法)。

3. 答:对输入符号串自左向右进行扫描,并将输入符逐个移入一个后进先出栈中,边移入边分析,一旦栈顶符号串形成某个句型的句柄时,就用该产生式的左部非终结符代替相应右部的文法符号串,重复这一过程直到归约到栈中只剩文法的开始符号时则为分析成功,也就确认输入串是文法的句子。

4. 答:符号表的功能:收集符号属性;上下文语义的合法性检查的依据;作为目标代码生成阶段地址分配的依据。

5. 答:优化就是对代码进行等价变换,使得变换后的代码运行把那间与变换前代码运行结果相同,而运行速度加大或占用存储空间少,或两者都有。

优化技术有:删除多余运算、代码外提、强度削弱、变换循环控制条件、合并已知量与复写传播、删除无用赋值。

二大题:解: EE +TT * F短语:T*F , E+T*F 直接短语:T*F 句柄:T*F 素短语: T*F 三大题: 解:得DFA =>院系: 专业班级: 姓名: 学号:装 订 线四大题: 解:Select(S →)={a} select()={b} select()={(}Select(T→S T ′)={a,b,(} select(T′→,ST ′ )={,} select(T′→ε)={)} ∵改写后文法中,相同左部非终结符对应的两条不同产生式的select 集交集均为空 ∴改写后文法是LL (1)文法 (五大题: 解:(1)拓广文法为:(0)A '→A (1)A →aAb (2)A →aA d (3)A→ε 构造LR(0)识别活前缀的DFA :=>∵在I 0、I 2 项目集中,存在移进归约冲突,故不是LR (0)文法。

编译原理试卷A(含答案)

编译原理试卷A(含答案)
S → ·(T)SS → ·(T)
I10:
T’→, ST·
T
I11:
T →ST’·
不存在项目冲突:
Follow(S’) = {#}
Follow(S) = {, ,),#}
Follow(T) = {)}
Follow(T’) = {)}
构造SLR分析表:
状态
ACTION
GOTO
a

(
)
,
#
S
T
T’
0
S2
A→a|b|,
FIRST(S)等于(A)
a){a,b}b) {a,b,c}c){c}d){a,b,}
(8)某翻译器依如下翻译模式设计,其基础文法可由开始符号S产生一个二进制数。
S→L{ print(L.val); }/*print函数以10进制方式打印数值*/
L→L1B{L.val = L1.val*2 + B.val; }
11.T → ·ST’
12.T →S·T’
13.T →ST’·
14.T → ·
15.T’→·,ST’
16.T’→,·ST’
17.T’→,S·T’
18.T’→,ST’·
构造SLR项目集规范族:
I0: S I1:∧I3:∧
S’→ ·S S’4:
答:
(1)S→a|∧|(T)
TST’
T’,ST’|e
(2)
该文法不含左递归
First(S) = { a,∧,( }
First(T) = {a,∧,( }
First(T’) = {, , e}
Follow(S) = {, ,),#}
Follow(T) = {)}
Follow(T’) = {)}

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划",错误的划X)(每个2分,共20分)1 .编译程序是对高级语言程序的解释执行。

(x )2. —个有限状态自动机中,有且仅有一个唯一的终态。

(X)3. —个算符优先文法可能不存在算符优先函数与之对应。

(V )4. 语法分析时必须先消除文法中的左递归。

(x)5. 分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

( V)6. 逆波兰表示法表示表达式时无须使用括号。

(V )7. 静态数组的存储空间可以在编译时确定。

(x)8. 进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

( x)9. 两个正规集相等的必要条件是他们对应的正规式等价。

(x)(x )10. 一个语义子程序描述了一个文法所对应的翻译工作、选择题 ( 请在前括号内选择最确切的一项作为答案划一个勾, 多划按错4.如果文法G 是无二义的,则它的任何句子aA. ( ) 最左推导和最右推导对应的语法树必定相同B. ( ) 最左推导和最右推导对应的语法树可能不同C. ( ) 最左推导和最右推导必定相同论)( 每个 4 分,共 40分) 1.词法分析器的输出结果是。

A .( ) 单词的种别编码C .( ) 单词的种别编码和自身值 2. 正规式 M 1 和 M 2 等价是指。

A. ( ) M1和M2的状态数相等 的有向边条数相等C. ( ) M1和M2所识别的语言集相等 向边条数相等3. 文法G S f 所识别的语言是。

A. ( )B . ( ) ()*C . ( ) (nB. ( ) 单词在符号表中的位置 D . ( ) 单词自身值B . ( ) M1 和 M2D. ( ) M1 和M2状态数和有> 0) D . ( ) x**D. ( ) 可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握6.四元式之间的联系是通过实现的。

编译原理考试习题及答案PPT课件

编译原理考试习题及答案PPT课件

自底向上的语法分析是从输入的字符串出发,逐步将其归约为文法的起始符号。
自底向上的语法分析通常采用LR(0)、SLR(1)、LALR(2)等算法。
自底向上的语法分析可以检测出输入的字符串是否符合语言的语法规则,并生成相应的语法结构。
01
02
03
自底向上的语法分析
语法分析的算法和数据结构
语法分析的算法包括预测分析法、移位/归约法、LR(0)、SLR(1)、LALR(2)等。
三地址代码的生成
对三地址代码进行优化可以提高目标代码的执行效率,常见的优化技术包括常量折叠、死代码删除、循环展开等。
三地址代码的优化
循环优化
循环是程序中常见的结构之一,对循环进行优化可以提高程序的执行效率。常见的循环优化技术包括循环展开、循环合并、循环剪枝等。
要点一
要点二
死代码删除
死代码是指程序中永远不会被执行的代码,删除这些死代码可以减小目标代码的大小并提高程序的执行效率。
习题及答案解析
词法分析习题及答案解析
题目
给定一个字符串,判断它是否是合法的标识符。
答案解析
合法的标识符必须以字母或下划线开头,后面可以跟字母、数字或下划线。
题目
给定一个字符串,判断它是否是关键字。
答案解析
关键字是编程语言中预定义的保留字,不能用作标识符。例如,在C语言中,关键字包括`int`, `float`, `if`, `else`等。
答案解析
上下文无关文法是一种形式文法,它的产生式右部不依赖于左部的任何符号。这意味着产生式右部是一个终结符或一个非终结符的序列。
题目
给定一个抽象语法树,判断它是否是二叉树。
答案解析
抽象语法树是源代码的树形表示,每个节点表示源代码中的一个结构。如果一个抽象语法树中的每个节点最多有两个子节点,则它是二叉树。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 代码优化B. 语法分析C. 代码生成D. 所有以上选项答案:D2. 下列哪个阶段属于编译过程的前端?A. 语法分析B. 代码生成C. 运行时库链接D. 目标代码优化答案:A3. 在编译原理中,什么是“产生式系统”?A. 一种编程语言的规范B. 一种用于描述语法的系统C. 一种代码优化技术D. 一种代码生成方法答案:B4. 以下哪个是自顶向下的语法分析方法?A. LR分析B. LALR分析C. LL分析D. CYK算法答案:C5. 在编译器的哪个阶段会进行类型检查?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C二、填空题1. 编译器在进行________时,会识别源代码中的各种标识符、常量、运算符等,并将其转换成相应的符号。

答案:词法分析2. 在编译原理中,________图是一种用于描述程序执行过程中变量状态的图,它以节点表示变量的值,以有向边表示程序的控制流。

答案:控制流3. 语法分析的主要任务是根据________规则来分析和构建源程序的语法结构。

答案:语法4. 在编译过程中,________是将源程序中的高级表示转换为机器语言或中间代码的过程。

答案:代码生成5. 编译器的________阶段负责将优化后的代码转换为目标机器可执行的指令序列。

答案:目标代码生成三、简答题1. 简述编译器的一般工作流程。

答:编译器的一般工作流程包括以下几个阶段:首先是词法分析,将源代码文本分解成一系列的记号;其次是语法分析,根据语言的语法规则构建抽象语法树;接着是语义分析,检查源代码的语义正确性并进行类型检查;然后是中间代码生成,将抽象语法树转换为中间表示形式;之后是代码优化,对中间代码进行各种优化以提高效率;最后是代码生成,将优化后的中间代码转换为目标机器的机器代码。

2. 描述自顶向下和自底向上语法分析方法的主要区别。

答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。

编译原理考A【考试试卷答案】

编译原理考A【考试试卷答案】

编译原理考A 【考试试卷答案】编译原理 课程试卷A专业: 考试日期: 时间: 总分:100分 闭卷一大题:简答题(每小题6分,共30分)1.什么是文法,按Chomsky 文法分类方法,把文法分成了哪几类?2.编译程序可以分为哪几个阶段,每个阶段的任务是什么?3. 在编译程序中,符号表的功能是什么?4. 什么是代码优化?代码优化的主要技术有哪些?5. 自底向上语法分析方法的基本思想是什么?二大题:若表达式文法G[E]为:E→ E+T|E-T |T T→ T*F | T/F | F F→ (E)|i1. 请构造句型E+T*F 对应的语法树。

(4分)2. 请写出该句型的所有的短语、直接短语、句柄和素短语。

(6分)三大题:已知如图1所示NFA M ,请将M 转换成与其等价的DFA 。

(10分)图1四大题:已知文法G[S]:S→ a | b | (T) T → ST ˊT ˊ→ ,ST ˊ| ε1. 计算该文法的FIRST 、FOLLOW 、SELECT 集合。

(10分)2. 上述文法是LL(1)文法吗?若是,则构造LL(1)分析表。

(10分)五大题:已知文法G[S]:A→ aAb | aAd | ε1. 构造该文法的识别LR(0)活前缀的DFA 。

(10分)2. 说明该文法不是LR(0)文法,是SLR(1)文法,并构造SLR(1)分析表。

(10分)六大题:根据以下的基本块:B:=3 D:=A+C E:=A*C F:=D+E G:=B*F H:=A+C I:=A*C J:=H+I K:=B*5 L:=K+J M:=L1.构造基本块对应的DAG 图。

(5分)2.若G ,M ,L 在基本块后要引用,写出优化后的代码(5分)。

院系: 专业班级: 姓名: 学号:装 订 线。

08计算机函授编译原理A卷答案及评分标准

08计算机函授编译原理A卷答案及评分标准

2008计算机函授本科编译原理期末试卷(A)答案及评分标准一、填空题(20分,每空2分)1、传值;传地址2、从左向右分析;最右推导的逆过程;向右查看K个输入符3、二义性的4、最左素短语5、2006、aab*d-abd*-*d/-7、词法分析器二、选择题(20分,每个选项2分)1、D2、B3、D4、B5、C6、C7、C8、D9、D 10、A三、简答题(10分)1、因为存在推导序列: E E+T E + * F 所以E+T*F是文法G[E]的一个句型(2分)句型E+T*F的短语有:E+T*F,T*F (2分)直接短语有:T*F (1分)句柄为:T*F(1分)2、最左推导N=>ND=>NDD=>NDDD=>DDDD=>0DD D=>06DD=>062D=>0625 (2分)最右推导N=>ND=>N5=>ND5=>N25=>ND25=>N6 25=>D625=>0625 (2分)四、综合应用题(50分)1、解:对应的NFA(6分),确定化后的DFA(9分)如图所示(4分)3、%{#include <stdio.h>%}digit [0-9] (2分)number 350-{digit}{15}\n (3分)%%{number} { printf("该身份证号码是福建省的身份证号码\n"); } (1分).*\n {printf("该身份证号码不是福建省的身份证号码\n");} (1分)%%main(){yylex();return 0;} (2分)int yywrap(){ return 1;} (1分)4、编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。

主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2008计算机函授本科编译原理期末试卷(A)答案及评分标准
一、填空题(20分,每空2分)
1、传值;传地址
2、从左向右分析;最右推导的逆过程;向右查看K个输入符
3、二义性的
4、最左素短语
5、200
6、aab*d-abd*-*d/-
7、词法分析器
二、选择题(20分,每个选项2分)
1、D
2、B
3、D
4、B
5、C
6、C
7、C
8、D
9、D10、A
三、简答题(10分)
1、 因为存在推导序列: E E+T E + * F 所以E+T*F是文法G[E]的一个句型(2分) 句型E+T*F的
短语有:E+T*F,T*F (2分)
直接短语有:T*F (1分)
句柄为:T*F(1分)
2、最左推导
N=>ND=>NDD=>NDDD=>DDDD=>0DD D=>06DD=>062D=>0625 (2分)
最右推导
N=>ND=>N5=>ND5=>N25=>ND25=>N6 25=>D625=>0625 (2分)
四、综合应用题(50分)
1、解:对应的NFA(6分),确定化后的DFA(9分)如图所示
(4分)
3、%{
#include <stdio.h>
%}
digit [0-9] (2分)
number 350-{digit}{15}\n (3分)
%%
{number} { printf("该身份证号码是福建省的身份证号码\n"); } (1分)
.*\n {printf("该身份证号码不是福建省的身份证号码\n");} (1分)
%%
main()
{yylex();
return 0;} (2分)
int yywrap()
{ return 1;} (1分)
4、编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生
成。

主要是进行词法分析和语法分析,又称为源程序分析,分析过
程中发现有语法错误,给出提示信息。

(1)词法分析
词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。

执行词法分析的程序称为词法分析程序或扫描器。

源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。

单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。

若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。

词法分析器一般来说有两种方法构造:手工构造和自动生成。

手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。

(2)语法分析
编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。

编译程序的语法规则可用上下文无关文法来刻画。

语法分析的方法分为两种:自上而下分析法和自下而上分析法。

自上而下就是从文法的开始符号出发,向下推导,推出句子。

而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻
符号。

(3)中间代码生成
中间代码是源程序的一种内部表示,或称中间语言。

中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。

中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。

中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。

(4)代码优化
代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。

所谓等价,是指不改变程序的运行结果。

所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。

这种变换称为优化。

有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。

对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。

(5)目标代码生成
目标代码生成是编译的最后一个阶段。

目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。

目标代码有三种形式:
①可以立即执行的机器语言代码,所有地址都重定位;
②待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
③汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。

目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一
是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。

相关文档
最新文档