编译原理练习题答案
编译原理试题及答案
编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。
答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。
2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。
它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。
三、论述题1. 论述编译器中的代码优化技术及其重要性。
答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。
常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。
代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。
四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
编译原理习题答案
1、正规文法又称 DA、0型文法B、1型文法C、2型文法D、3型文法2、对于无二义性的文法,规范归约是 BA. 最左推导B. 最右推导的逆过程C.最左归约的逆过程D.最右归约的逆过程。
3、扫描器的任务是从源程序中识别出一个个单词符号。
4、程序所需的数据空间在程序运行前就可确定,称为 A 管理技术。
A 静态存储B 动态存储C 栈式存储D 堆式存储5、编译过程中,语法分析器的任务是(B)。
①分析单词是怎样构成的②分析单词串是如何构成语句和说明的③分析语句和说明是如何构成程序的④分析程序的结构A、②③B、②③④C、①②③D、①②③④6、文法G:E→E+T|T T→T*P|P P→ (E)| i则句型P+T+i的句柄和最左素短语分别为 B 。
A、P+T和iB、P和P+TC、i和P+T+iD、P和P7、四元式之间的联系是通过B实现的A.指示器B.临时变量C.符号表D.程序变量8、程序语言的单词符号一般可以分为保留字、标识符、常数、运算符、界符等等。
9、下列 B 优化方法是针对循环优化进行的。
A.删除多余运算B.删除归纳变量C.合并已知量D.复写传播10、若文法G 定义的语言是无限集,则文法必然是 AA、递归的B、前后文无关的C、二义性的D、无二义性的11、文法G 产生的D的全体是该文法描述的语言。
A、句型B、终结符集C、非终结符集D、句子12、Chomsky 定义的四种形式语言文法中,0 型文法又称为 A文法;1 型文法又称为 C 文法。
A.短语文法B.上下文无关文法C.上下文有关文法D.正规文法A.短语文法B.上下文无关文法C.上下文有关文法D.正规文法13、语法分析最常用的两类方法是自顶向下和自底向上分析法。
14、一个确定的有穷自动机DFA是一个 A 。
A 五元组(K,∑,f, S, Z)B 四元组(V N,V T,P,S)C 四元组(K,∑,f,S)D 三元组(V N,V T,P)A、语法B、语义C、代码D、运行15、 B不属于乔姆斯基观点分类的文法。
编译原理习题及答案(整理后)
第一章1、将编译程序分成若干个“遍”就是为了。
a.提高程序得执行效率b.使程序得结构更加清晰c.利用有限得机器内存并提高机器得执行效率d.利用有限得机器内存但降低了机器得执行效率2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法d.以上三项都就是3、变量应当。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4、编译程序绝大多数时间花在上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5、不可能就是目标代码。
a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码6、使用可以定义一个程序得意义。
a.语义规则b.语法规则c.产生规则d.词法规则7、词法分析器得输入就是。
a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循得就是- 。
a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序就是对。
a.汇编程序得翻译b.高级语言程序得解释执行c.机器语言得执行d.高级语言得翻译10、语法分析应遵循。
a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段得工作都涉及到。
a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序与编译程序得区别在于。
2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。
3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。
4、编译程序就是指将程序翻译成程序得程序。
单选解答1、将编译程序分成若干个“遍”就是为了使编译程序得结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面得知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多得就就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码与绝对指令代码3种,因此不就是目标代码得只能选d。
编译原理习题及答案
( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 10.× 22.√
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 11.
二、填空题: 2.编译过程可分为 ( 词法分析) , (语法分析) , (语义分析与中间代码生成 ) , (优化)和(目标 代码生成 )五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的 4.从功能上说,程序语言的语句大体可分为( 5.语法分析器的输入是( 单词符号 6.扫描器的任务是从( 源程序中 执行性 )语句和(说明性 ) 。 ) 。 ) ,其输出是( 语法单位 )中识别出一个个( 单词符号 ) 。 )语句两大类。
因此,文法 G[为二义文法。
五.计算题(10 分) 已知文法 A->aAd|aAb| ε
判断该文法是否是 SLR(1) 文法,若是构造相应分析表,并对输入串 ab# 给出分析过程。 解:增加一个非终结符 S/后,产生原文法的增广文法有: S'->A A->aAd|aAb|ε 下 面 构 造 它 的 LR(0) 项 目 集 规 范 族 为 :
对输入串 ab#给出分析过程为:
一、是非题:
1.一个上下文无关文法的开始符,可以是终结符或非终结符。 2.一个句型的直接短语是唯一的。 3.已经证明文法的二义性是可判定的。 4.每个基本块可用一个 DAG 表示。 5.每个过程的活动记录的体积在编译时可静态确定。 6.2 型文法一定是 3 型文法。 7.一个句型一定句子。 8.算符优先分析法每次都是对句柄进行归约。 X 9.采用三元式实现三地址代码时,不利于对中间代码进行优化。 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 11.一个优先表一定存在相应的优先函数。 13.递归下降分析法是一种自下而上分析法。 14.并不是每个文法都能改写成 LL(1)文法。 15.每个基本块只有一个入口和一个出口。 16.一个 LL(1)文法一定是无二义的。 17.逆波兰法表示的表达试亦称前缀式。 18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 19.正规文法产生的语言都可以用上下文无关文法来描述。 20.一个优先表一定存在相应的优先函数。 21.3 型文法一定是 2 型文法。 22.如果一个文法存在某个句子对应两棵不同的语法树, 则文法是二义性的。 答案:1.× 12.√ 13.× 2.× 14.√ 3.× 15.√ 4.√ 16.√ 5.√ 17.× 6.× × 18.√ 19.√ 20.× 21.√ 7.× 8.× 9.√ X 12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
编译原理试题及答案
参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
编译原理习题及答案整理后
第一章1、将编译程序分成若干个“遍”是为了;a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2、构造编译程序应掌握;a.源程序b.目标语言c.编译方法d.以上三项都是3、变量应当;a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4、编译程序绝大多数时间花在上;a.出错处理b.词法分析c.目标代码生成d.管理表格5、不可能是目标代码;a.汇编指令代码b.可重定位指令代码c.绝对指令代码d.中间代码6、使用可以定义一个程序的意义;a.语义规则b.语法规则c.产生规则d.词法规则7、词法分析器的输入是;a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循的是- ;a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序是对;a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译10、语法分析应遵循;a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段的工作都涉及到;a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段;a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序和编译程序的区别在于;2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成;3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序;4、编译程序是指将程序翻译成程序的程序;单选解答1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b;2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d;3、对编译而言,变量既持有左值又持有右值,故选c;4、编译程序打交道最多的就是各种表格,因此选d;5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d;6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义;因此选a;7、b 8、c 9、d 10、c多选解答1.b、c 2. a、b、c、e填空解答是否生成目标程序2、词法分析中间代码生成3、源程序目标代码生成4、源程序目标语言第二章一、单项选择题1、文法G:S→xSx|y所识别的语言是;a. xyxb. xyxc. x n yx n n≥0d. xyx2、文法G描述的语言LG是指;a. LG={α|S错误!α , α∈V T}b. LG={α|S错误!α, α∈V T}c. LG={α|S错误!α,α∈V T∪V N}d. LG={α|S错误!α, α∈V T∪V N}3、有限状态自动机能识别;a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立;a. 若fa>gb,则a>bb.若fa<gb,则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α;a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是;a. 短语b.句柄c. 句型d. 句子7、文法G:E→E+T|TT→TP|PP→E|I则句型P+T+i的句柄和最左素短语为;+T和i b. P和P+T c. i和P+T+i 和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导;a. S⇒SA⇒SAA⇒AAA⇒aAA⇒abA⇒abab. S⇒SA⇒SAA⇒AAA⇒AAa⇒Aba⇒abac. S⇒SA⇒SAA⇒SAa⇒Sba⇒Aba⇒abad. S⇒SA⇒Sa⇒SAa⇒Sba⇒Aba⇒aba9、文法G:S→b|∧TT→T,S|S则FIRSTVTT ;a. {b,∧,}b. {b,∧,}c.{b,∧,,,}d.{b,∧,,,}10、产生正规语言的文法为;a. 0型b. 1型c. 2型d. 3型11、采用自上而下分析,必须;a. 消除左递归b. 消除右递归c. 消除回溯d. 提取公共左因子12、在规范归约中,用来刻画可归约串;a. 直接短语b. 句柄c. 最左素短语d. 素短语13、有文法G:E→ET|TT→T+i|i句子1+28+6按该文法G归约,其值为;a. 23 B. 42 c. 30 d. 1714、规范归约指;a. 最左推导的逆过程b. 最右推导的逆过程c. 规范推导d. 最左归约的逆过程二、多项选择题1、下面哪些说法是错误的;a. 有向图是一个状态转换图b. 状态转换图是一个有向图c.有向图是一个DFA 可以用状态转换图表示2、对无二义性文法来说,一棵语法树往往代表了;a. 多种推导过程b. 多种最左推导过程c.一种最左推导过程d.仅一种推导过程e.一种最左推导过程3、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法;a. 该句子的最左推导与最右推导相同b. 该句子有两个不同的最左推导c. 该句子有两棵不同的最右推导d. 该句子有两棵不同的语法树e.该句子的语法树只有一个4、有一文法G:S→ABA→aAb|εB→cBd|ε它不产生下面集合;a. {a n b m c n d m|n,m≥0}b. {a n b n c m d m|n,m>0}c. {a n b m c m d n|n,m≥0}d. {a n b n c m d m|n,m≥0}e. {a n b n c n d n|n≥0}5、自下而上的语法分析中,应从开始分析;a. 句型b. 句子c. 以单词为单位的程序d. 文法的开始符e. 句柄6、对正规文法描述的语言,以下有能力描述它;型文法型文法 c.上下文无关文法 d.右线性文法 e.左线性文法三、填空题1、文法中的终结符和非终结符的交集是;词法分析器交给语法分析器的文法符号一定是,它一定只出现在产生式的部;2、最左推导是指每次都对句型中的非终结符进行扩展;3、在语法分析中,最常见的两种方法一定是分析法,另一是分析法;4、采用语法分析时,必须消除文法的左递归;5、树代表推导过程, 树代表归约过程;6、自下而上分析法采用 、归约、错误处理、 等四种操作;7、Chomsky 把文法分为 种类型,编译器构造中采用 和 文法,它们分别产生 和 语言,并分别用 和 自动机识别所产生的语言; 四、判断题1、文法 S →aS|bR|ε描述的语言是a|bc R→c S2、在自下而上的语法分析中,语法树与分析树一定相同;3、二义文法不是上下文无关文法;4、语法分析时必须先消除文法中的左递归;5、规范归约和规范推导是互逆的两个过程;6、一个文法所有句型的集合形成该文法所能接受的语言; 五、简答题1、句柄2、素短语3、语法树4、归约5、推导 六、问答题1、给出上下文无关文法的定义;2、文法GS :S →aSPQ|abQ QP→PQ bP→bb bQ →bc cQ→cc1它是Chomsky 哪一型文法2它生成的语言是什么 3、按指定类型,给出语言的文法;L={a i b j |j >i ≥1}的上下文无关文法; 4、有文法G :S →aAcB|BdA →AaB|cB →bScA|b1试求句型aAaBcbbdcc 和aAcbBdcc 的句柄; 2写出句子acabcbbdcc 的最左推导过程; 5、对于文法GS :S →L|aS|a L →L, S|S1画出句型S,a 的语法树;2写出上述句型的所有短语、直接短语、句柄和素短语; 6、考虑文法GT :T →TF|F F →F ↑P|P P →T|i证明TP ↑TF 是该文法的一个句型,并指出直接短语和句柄; 单选解答 1、选c;2、选a;3、选c;4、虽然a 与b 没有优先关系,但构造优先函数后,a 与b 就一定存在优先关系了;所以,由fa>gb 或fa<gb 并不能判定原来的a 与b 之间是否存在优先关系:故选c;5、如果文法G 无二义性,则最左推导是先生长右边的枝叶:对于d,如果有两个不同的是了左推导,则必然有二义性;故选a;6、选c;7、由图2-8-1的语法树和优先关系可以看出应选b;8、规范推导是最左推导,故选d;9、由T→T,…和T→…得FIRSTVTT={,,};由T→S得FIRSTVTS⊂FIRSTVTT,而FIRSTVTS={b,∧,};即FIRSTVTT={b,∧,,,};因此选c;10、d 11、c 12、b 13、b 14、b多选解答1、e、a、c 2、a、c、e 3、b、c、d 4、a、c 5、b、c 6、a、b、c、d、e填空解答1、空集终结符右2、最左3、自上而上自下而上4、自上而上5、语法分析6、移进接受7、4 2 型3型上下文无关语言正规语言下推自动机有限判断解答1、对2、错3、错4、错5、错6、错简答解答1、句柄:一个句型的最左直接短语称为该句型的句柄;2、素短语:至少含有一个终结符的素短语,并且除它自身之外不再含任何更小的素短语;3、语法树:满足下面4个条件的树称之为文法GS的一棵语法树;①每一终结均有一标记,此标记为V N∪V T中的一个符号;②树的根结点以文法GS的开始符S标记;③若一结点至少有一个直接后继,则此结点上的标记为V N中的一个符号;④若一个以A为标记的结点有K个直接后继,且按从左至右的顺序,这些结点的标记分别为X1,X2,…,X K,则A→X1,X2,…,X K,必然是G的一个产生式;4、归约:我们称αγβ直接归约出αAβ,仅当A→γ是一个产生式,且α、β∈V N∪V T;归约过程就是从输入串开始,反复用产生式右部的符号替换成产生式左部符号,直至文法开始符;5、推导:我们称αAβ直接推出αγβ,即αAβ⇒αγβ,仅当A→γ是一个产生式,且α、β∈V N∪V T;如果α1⇒α2⇒…⇒αn,则我们称这个序列是从α1至α2的一个推导;若存在一个从α1αn的推导,则称α1可推导出αn;推导是归约的逆过程;问答1解答一个上下文无关文法G是一个四元式V T,V N,S, P,其中:●V T是一个非空有限集,它的每个元素称为终结符号;●V N是一个非空有限集,它的每个元素称为非终结符号,V T∩V N=Φ;●S是一个非终结符号,称为开始符号;●P是一个产生式集合有限,每个产生式的形式是P→α,其中,P∈V N,α∈V T∪V N;开始符号S至少必须在某个产生式的左部出现一次;2解答1由于产生式左部存在终结符号,且所有产生式左部符号的长度均小于等于产生式右部的符号长度,所以文法GS是Chomsky1型文法,即上下文有关文法;2按产生式出现的顺序规定优先级由高到低否则无法推出句子,我们可以得到:S⇒abQ⇒abcS⇒aSPQ⇒aabQPQ⇒aabP⇒aabb⇒aabbcQ⇒aabbccS⇒aSPQ⇒aaSPQPQ⇒aaabQPQPQ⇒aaabPPQ⇒aaabPQP⇒aaaPPQ⇒aaabbPq⇒aaabbQ⇒aaabbbc⇒aaabbbccQ⇒aaabbbccc……于是得到文法GS生成的语言L={a n b n c n|n≥1}3解答1由L={a i b j|j>i≥1}知,所求该语言对应的上下文无关文法首先应有S→aSb型产生式,以保证b 的个数不少于a的个数;其次,还需有S→Sb或S→bS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法GS为:GS:S→aSb|Sb|b4解答1分别画出对应两句型的语法树,如图2-8-2所示句柄:AaB Bd图2-8-2 语法树2句子acabcbbdcc 的最左推导如下:S ⇒aAcB ⇒aAaBcB ⇒acaBcB ⇒acabcB ⇒acabcbScA ⇒acabcbBdcA ⇒acabcbbdcA ⇒acabcbbdcc 5解答 1句型S,a 的语法树如图2-8-32由图2-8-3可知:①短语:S 、a 、a 、S,a 、S,a ;②直接短语:a 、S ;③句柄:S ;④素短语:素短语可由图2-8-3中相邻终结符之间的优先关系求得,即;因此素短语为a;6解答首先构造TP ↑TF 的语法树如图2-8-4所示;由图2-8-4可知,TP ↑TF 是文法GT 的一个句型; 直接短语有两个,即P 和TF ;句柄为P;第三章一、单项选择题1、词法分析所依据的是;a. 语义规则b. 构词规则c. 语法规则d. 等价变换规则2、词法分析器的输出结果是 ;a. 单词的种别编码b. 单词在符号表中的位置c. 单词的种别编码和自身值d. 单词自身值3、正规式M1和M2等价是指;a. M1和M2的状态数相等b. M1和M2的有向弧条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向弧条数相等4、状态转换图见图3-6-1接受的字集为;a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合5、词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此, ;a. 词法分析器应作为独立的一遍b. 词法分析器作为子程序较好c. 词法分析器分解为多个过程,由语法分析器选择使用d. 词法分析器并不作为一个独立的阶段二、多项选择题1、在词法分析中,能识别出;a. 基本字b. 四元式c. 运算符d. 逆波兰式e. 常数2、令∑={a,b},则∑上所有以b开头,后跟若干个ab的字的全体对应的正规式为;a. babb. bab+c.babd. ba+be. ba|b三、填空题1、确定有限自动机DFA是的一个特例;2、若二个正规式所表示的相同,则认为二者是等价的;3、一个字集是正规的,当且仅当它可由所;四、判断题1、一个有限状态自动机中,有且仅有一个唯一终态;2、设r和s分别是正规式,则有Lr|s=Lr|Ls;3、自动机M和M′的状态数不同,则二者必不等价;4、确定的自动机以及不确定的自动机都能正确地识别正规集;5、对任意一个右线性文法G,都存在一个NFA M,满足LG=LM;6、对任意一个右线性文法G,都存在一个DFA M,满足LG=LM;7、对任何正规表达式e,都存在一个NFA M,满足LG=Le;8、对任何正规表达式e,都存在一个DFA M,满足LG=Le;五、基本题1、设M={x,y}, {a,b}, f,x,{y}为一非确定的有限自动机,其中f定义如下:fx,a={x,y} fx,b={y}fy,a=φfy,b={x,y}试构造相应的确定有限自动机M′;2、对给定正规式bd|adb|ab+,构造其NFA M;单选解答1、b 2、c 3、c 4、d 5、b多选解答1、a、c、e 2、a、b、d填空解答1、NFA 2、正规集3、DFANFA所识别判断解答 1 、2、3、错4、5、6、7、8、正确基本1解答:对照自动机的定义M=S,Σ,f,S0,Z,由f的定义可知fx,a、fy,b均为多值函数,所以是一非图3-6-7 的NFA M将转换矩阵中的所有子集重新命名而形成表3-6-4所示的状态转换矩阵; 表3-6-4 状态转换矩阵即得到M ′={0,1,2}, {a,b}, f,0, {1,2},其状态转换图如图3-6-5所示;将图3-6-5的DFA M ′最小化;首先,将M ′的状态分成终态组{1,2}与非终态组{0};其次,考察{1,2};由于{1,2}a={1,2}b={2}⊂{1,2},所以不再将其划分了,也即整个划分只有两组{0},{1,2}:令状态1代表{1,2},即把原来到达23-6-6所示化简DFA M ′;2解答:首先用A +=AA NFA M,如图3-6-7所示;第四章1、构造下面文法的LL1分析表;D→ TLT→ int | realL→ id RR→, id R | ε2、下面文法GS是否为LL1文法说明理由;S →A B | P Q x A →x y B →b cP →d P | εQ →a Q | ε3、设有以下文法:GS:S→aAbDe|dA→BSD|eB→SAc| cD| εD→Se| ε1求出该文法的每一个非终结符U的FOLLOW集;2该文法是LL1文法吗3构造CS的LL1分析表;4、将文法GV改造成为LL1的;GV:V→N|NEE→V|V+EN→i5、已知文法:GA:A→aAa|ε1该文法是LL1文法吗为什么2若采用LL1方法进行语法分析,如何得到该文法的LL1分析表3若输入符号串“aaaa”,请给出语法分析过程;1解答:LL1分析表见表4-3-1分析虽然这个文法很简单,我们还是从求开始符号集合和后继符号集合开始;FIRSTD=FIRSTT={int, real} FOLLOWD=FOLLOWL={}FIRSTL={id} FOLLOWT={id}FIRSTR={,, ε} FOLLOWR={}有了上面每个非终结符的FIRST集合,填分析表时要计算一个产生式右部α的FIRSTα就不是件难事了;填表时唯一要小心的时,ε是产生式R→ε右部的一个开始符号,而在FOLLOWR中,所以R→ε填在输入符号的栏目中;2解答:该文法不是LL1文法,见下面分析中的说明;分析只有三个非终结符有两个选择;1、P的两个右部d P 和ε 的开始符号肯定不相交;2、Q的两个右部a Q 和ε 的开始符号肯定不相交;3、对S来说,由于x ∈ FIRSTA B,同时也有x ∈ FIRSTP Q x因为P和Q都可能为空;所以该文法不是LL1文法;3解答:1求文法的每一个非终结符U的FOLLOW集的过程如下:因为:①S是识别符号,且有A→BSD、B→SAc、D→Se,所以FOLLOWS应包含FIRSTD∪FIRSTAc ∪FIRSTe ∪{}={a,d}∪{a,d,c,e}∪{e}∪{}={a,c,d,e}②又因为A→BSD和D→ε,所以FOLLOW中还包含FOLLOW A;因为S→aAbDe和B→SAc,所以FOLLOW A=FIRSTbDe∪FIRSTc={b,c}综合①、②得FOLLOWS={a,d,c,e,}∪{a,b,c,d,e,}因为A→BSD,所以FOLLOWB=FIRSTSD={a,d}因为S→aAbDe | d、A→BSD| e和B→SAc | cD,所以FOLLOWD=FIRSTe∪FOLLOW A∪FOLLOWB={e}∪{b,c}∪{a,d}={a,b,c,d,e}2GS不是LL1文法;因为产生式B→SAc|cD| ε中FIRSTSAc∩FOLLOWB={a,d}≠Ø3构造GS的LL1分析表;按照LL1分析表的构造算法构造方法GS的LL1分析表如表4-3-2所示;表4-3-2 GS的LL1分析表G′V:V→NAA→ε|EE→VBB→ε|+EN→i求出文法G′V中每一个非终结符号的FIRST集:FIRSTV={i} FIRSTA={,ε}FIRSTE={i} FIRSTB={+,ε}FIRSTN={i}求出文法G′V中每一个非终结符号的FOLLOW集:FOLLOWV={}∪FIRSTB\{ε}∪FOLLOWE={,+,}FOLLOW A= FOLLOWV={+,,}FOLLOWE= FIRST\{ε}∪FOLLOWB= FIRST\{ε}∪FOLLOWE={}FOLLOWB= FOLLOWE={ }FOLLOWN= FIRSTA\{ε}∪FOLLOWV={,,+,}可以看到,对文法G′V的产生式A→ε|E,有FIRSTE∩FOLLOW A={}∩{+,,}= Ø对产生式B→ε|+E,有FIRST+E∩FOLLOWB={+}∩{}= Ø而文法的其他产生式都只有一个不为ε的右部,所以文法G′V是LL1文法;5解答:1因为产生式A→aAa|ε有空产生式右部,而FOLLOW A={}∪FIRSTa={a, }造成FIRSTA∩FOLLOWA={A, ε}∩{a, }≠Ø所以该文法不是LL1文法;2若采用LL1方法进行语法分析,必须修改该文法;因该文法产生偶数可以为0个a,所以得到文法G′A:A→aaA|ε此时对产生式A→aaA|ε, 有FOLLOW A={}∪FOLLOW A={},因而FIRSTA∩FOLLOWA={a, ε}∩{}=Ø所以文法G′A是LL1文法,按LL1分析表构造算法构造该文法的LL1分析表如表4-3-3所示;3若采用LL1方法进行语法分析,对符号串“aaaa”的分析过程如表4-3-4所示;第五章1.设有文法GS为:S→a|b|AA→SdA|S(1)完成下列算符优先关系表,见表5-7-1,并判断GS是否为算符优先文法;表5-7-1 算符优先关系表2给出句型SdSdS 的短语、简单短语、句柄、素短语和最左素短语; 3给出输入串adb 的分析过程; 解答:1先求文法GS 的FIRSTVT 集和LASTVT 集:由S →a|b|A 得:FIRSTVTS={a,b, ;由A →Sd …得:FIRSTVTA={d};又由A →S …得:FIRSTVTS ⊂ FIRSTVTA,即FIRSTVTA={d,a,b,};由S →a|b|A 得;LASTVTS={a,b,}}; 由A →…dA 得:LASTVTA={d},又由A →S 得:LASTVTS ⊂ LASTVTA,即LASTVTA={d,a,b,}; 构造优先关系表方法如下:① 对P →…ab …,或P →…aQb …,有a ≖b; ② 对P →…aR …,而b ∈FIRSTVTR,有a ⋖b; ③ 对P →…Rb …,而a ∈FIRSTVTR,有a ⋗b; 由此得到: ① 由S →A 得:≖;② 由S →A …得:⋖FIRSTVTA,即:⋖d,⋖a ,⋖b,⋖;由A →…dA 得:d ⋖FIRSTVTA, 即:d ⋖d,d ⋖a,d ⋖b,d ⋖;③ 由S →A 得,LASTVTA ⋗,即:d ⋗,a ⋗,b ⋗,⋗;由A →Sd …得:LASTVTS ⋗d,即:a ⋗d,b ⋗d,⋗d;此外,由S 得:≖;由⋖FIRSTVTS 得:⋖a,⋖b,⋖;脂由LASTVTS ⋗得:d ⋗,a ⋗,b ⋗,⋗;最后得到算符优先关系表,见表5-7-2;表5-7-2 算符优先关系表由表5-7-2可以看出,任何两个终结符之间至少只满足≖、⋖、⋗三种优先关系之一,故GS 为算符优先文法;2为求出句型SdSdS 的短语、简单短语、句柄,我们先画出该句型对应的语法树,如图5-7-3所示;由图5-7-3得到:短语:S,SdS,SdSdS,SdSdS简单短语即直接短语:S 句柄即最左直接短语:S素短语:SdS,它同时也是该句型的最左素短语;3输入串adb的分析过程见表5-7-4表5-7-4 输入串adb的分析过程第六章一、单项选择题1、若a为终结符,则A→α·aβ为项目a.归约b.移进c.接受d.待约2、若项目集I k含有A→α·,则在状态k时,仅当面临的输入符号a∈FOLLOWA时,才采取“A→α·”动作的一定是;文法0文法1文法1文法3、就文法的描述能力来说,有;a. SLR1⊂LR0b. LR1⊂LR0c. SLR1⊂LR1d.无二义文法⊂LR14、在LR0的ACTION子表中,如果某一行中存在标记“r j”的栏,则;a.该行必定填满r jb.该行未填满r jc.其他行也有r j子表中也有r j5、一个指明了在分析过程中的某时刻所能看到产生式多大一部分;a.活前缀b.前缀c.项目d.项目集二、多项选择题1、一个LR分析器包括;a.一个总控程序b.一个项目集c.一个活前缀d.一张分析表e.一个分析栈2、LR分析器核心部分是一张分析表,该表包括等子表;1分析 b.优先关系3、每一项ACTIONS,a所规定的动作包括;a.移进b.比较c.接受d.归约e.报错4、对LR分析表的构造,有可能存在动作冲突;a.移进b.归约c.移进/归约d.移进/移进e.归约/归约5、就文法的描述能力来说,有;a. SLR1⊂LR1b. LR1⊂SLR1c. LR0⊂LR1d. LR1⊂无二义文法e. SLR1⊂无二义文法6、对LR分析器来说,存在等分析表的构造方法;0 1 0 17、自上而下的语法分析方法有;a.算符优先分析法1分析法1分析法0分析法1分析法三、填空题1、对于一个文法,如果能够构造;使得它的均是唯一确定的,则称该文法为LR文法;2、字的前缀是指该字的;3、活前缀是指的一个前缀,这种前缀不含之后的任何符号;4、在LR分析过程中,只要的已扫描部分保持可归约成一个,则扫描过的部分正确;5、将识别的NFA确定化,使其成为以为状态的DFA,这个DFA就是建立的基础;6、A→α·称为项目;对文法开始符S′→α·为项目;若a为终结符,则称A→α·aβ为项目;若B为非终结符,则称A→α·aβ为项目;7、LR0分析法的名字中“L”表示 ,“R”表示 ,“0”表示 ;四、综合题1、对于文法GS:S→AS|bA→SA|a1列出所有LR0项目2列出构成文法LR0项目集规范族;单项解答:1、A→α·称为归约项目,对文法开始符S′的归约项目,如S′→α·称为接受项目,A→α·aβa为终结符称为移进项目;在此选b.2、当用产生式A→α归约时,LR0无论面临什么输入符号都进行归约;SLR1则仅当面临的输入符号a∈FOLLOWA时进行归约;LR1则当在把α归约为A的规范句型的前缀βAa前提下,当α后跟终结符a时,才进行归约;因此选d;3、由于LR0⊂SLR1⊂LR1⊂无二义文法,故选c;4、选a;5、选c;多选解答:1、一个LR分析器包括一个总控程序和一张分析表,选a、d;2、选c、e;3、选a、c、d、e;4、在LR分析表的构造中有可能存在“移进”/“归约”和“归约”/“归约”冲突;故选c、e;5、选a、b、c、d、e;6、选a、b、c、e;7、选a、c、d、e;填空解答:1、一张分析表每个入口2、任意首部3、规范句型句柄4、输入串活前缀5、活前缀项目集合LR分析算法6、归约接受移进待约7、自左至右分析采用最右推导的逆过程即最左归约向右查看0个字符综合解答:首先将文法G拓广为GS′:S′→SS→AS|bA→SA|a1文法GS′的LR0项目是:1、S′→·S 5、S→AS·9、A→S·A2、S′→S·6、S→·b 10、A→SA·3、S→·AS 7、S→b·11、A→·a4、S→A·S 8、A→·SA 12、A→a·2、列出构成文法LR0项目集规范族;用ε-CLOSURE闭包办法构造文法G′的LR0项目集规范族如下:I0:1、S′→·S I3: 9、A→S·A I6:12、A→a·3、S→·AS 8、A→·SA I7:7、S→b·8、A→·SA 3、S→·AS11、A→·a 6、S→·b6、S→·b 11、A→·aI 1:2、S′→S · I 4:10、A →SA · 9、A →S ·A 4、S →A ·S 8、A →·SA 3、S →·AS 11、A →·a 6、S →·b 3、S →·AS 8、A →·SA 6、S →·b 11、A →·a I 2:4、S →A ·S I 5: 5、S →AS · 3、S →·AS 9、A →S ·A 6、S →·b 8、A →·SA 8、A →·SA 11、A →·a 11、A →·a 3、S →·AS 6、S →·b注意:I 1中的S′→S ·和A →·SA 是由状态I 0中的1和3读入一个S 字符后得到的下一个项目;,而I 4中的A →SA 和A →A ·S 则是由I 3中的9和3读入一个A 字符后得到的下一个项目;I 5中的S →AS ·和A →S ·A 则是由I 4中的4和8读入一个S 字符后得到的下一个项目;状态全体构成了文法G′的LR0规范族;第七章一、单项选择题1、中间代码生成所依据的是 ; a.语法规则 b.词法规则 c.语义规则 d.等价变换规则2、四元式之间的联系是通过 实现的; a.指示器 b.临时变量 c.符号表 d.程序变量3、后缀式ab+cd+/可用表达式 来表示; +b/c+d b.a+b/c+d +b/c+d +b+c/d4、表达式┓A ∨B ∧C ∨D 的逆波兰表示为 ; a. ┓AB ∨∧CD ∨ b. A ┓B ∨CD ∨∧c. AB ∨┓CD ∨∧d. A ┓B ∨∧CD ∨5所对应的表达式为 ; +B+C+D +B+C+D c.A+B+C+D d.A+B+C+D 6、四元式表示法的优点为 ;a.不便于优化处理,但便于表的更动b.不便于优化处理,但节省存储空间c.便于优化处理,也便于表的更动d.便于表的更动,也节省存储空间 7、终结符具有 属性; a.传递 b.继承 c.抽象 d.综合二、多顶选择题1、中间代码主要有 ; a .四元式 b .二元式 c .三元式 d .后缀式 e .间接三元式2、下面中间代码形式中,能正确表示算术表达式a+b+c 的有 ;a .ab+c+b .abc++e .a+b+c3、在下面的 语法制导翻译中,采用拉链-回填技术; a .赋值语句 b .goto 语句 c .条件语句 d .循环语句4、下列 中间代码形式有益于优化处理; a .三元式 b .四元式 c .间接三元式 d .逆波兰表示法e .树形表示法5、在编译程序中安排中间代码生成的目的是 ; a .便于进行存储空间的组织 b .利于目标代码的优化c .利于编译程序的移植d .利于目标代码的移植e .利于提高目标代码的质量 6、下面的中间代码形式中, 能正确表示算术表达式a .ab+cb .abc+c .a+bc7、三地址代码语句具体实现通常有 表示方法 a .逆波兰表示 b .三元式 c .间接三元式 d .树形表示 e .四元式 三、填空题1、中间代码有 等形式,生成中间代码主要是为了使 ;2、语法制导翻译既可以用来产生 代码,也可以用来产生 指令,甚至可用来对输入串进行 ;3、当源程序中的标号出现“先引用后定义”时,中间代码的转移地址须持 时才能确定,因而要进行 ;4、文法符号的属性有两种,一种称为 ,另一种称为 ;5、后缀式abc-/所代表的表达式是 ,表达式a-bc 可用后缀式 表示;6、用一张 辅以 的办法来表示中间代码,这种表示法称为间接三元式; 四、综合题1、给出下列表达式的逆波兰表示后缀式: ① a-b+c② A ∨B ∧C ∨┑D ∧E2、写出算术表达式:A+BC-D+E/C-D ↑N 的①四元式序列;②三元式序列;③间接三元式序列 单选解答 1、选c;2、四元式之间的联系是通过临时变量实现的,故选b;3、选b;4、选b;5、选d;6、四元式表示法的优点与间接三元式相同,故选c;7、选d; 多选解答1、选a 、c 、d 、e;2、b 、d 的中间代码不能正确表示a+b+c,而e 不是中间代码:故选a 、c;3、凡涉及到跳转的语句都需要采用拉链——回填技术,故选 b 、c 、d;4、选b 、c;5、选b 、d;6、选b 、e;7、选b 、c 、e;填空解答1、逆波兰记号、树形表示、三元式、四元式 目标代码的优化容易实现2、中间 目标 解释执行3、标号定义 回填4、继承属性 综合属性5、a/b-c ab-c6、间接码表 三元式表 综合解答1、① abc+;② AB ∨CD ┑E ∧∨∧2、①表达式的四元式序列:②表达式的三元式序列③间接三元式序列1-,C,D,T11-,C,D ⑴1-,C,D2,B,T1,T22,B,1 ⑵2,B,13+,A,T2,T33+,A,2 ⑶3+,A,24-,C,D,T44-,C,D ⑴⑷↑,1,N5↑,T4,N,T55↑,4,N ⑷⑸/,E,4⑹/,E,T5,T6 ⑹/,E,5 ⑸⑹+,3,5⑺+,T3,T6,T7 ⑺+,3,6⑹第八章一、单项选择题1、编译程序使用区别标识符的作用域;a. 说明标识符的过程或函数名b. 说明标识符的过程或函数的静态层次c. 说明标识符的过程或函数的动态层次d. 标识符的行号2、在目标代码生成阶段,符号表用于;a. 目标代码生成b. 语义检查c. 语法检查d. 地址分配3、过程信息表不包含;a. 过程入口地址b. 过程的静态层次c. 过程名d. 过程参数信息4、下列关于标识符和名字叙述中,正确的是;a. 标识符有一定的含义b. 名字是一个没有意义的字符序列c. 名字有确切的属性d. a~c都不正确二、多项选择题1、符号表的每一项均包含;a. 名字栏b. 类型栏c. 信息栏d. 值栏e. a~d均包含2、对编译程序所用到的符号表,涉及的操作有;a. 填写或更新信息栏内容b. 填入新名c.给定名字,访问它的有关信息d. 杂凑技术e.线性表和排序二叉树3、源程序中的错误一般有;a. 词法错误b. 语法错误c. 语义错误d. 编译错误e. 违反环境限制的错误三、填空题1、符号表中名字栏内容有两种填写方式,它们是填写和填写;2、词法分析阶段的错误主要是,可通过的办法纠正错误;3、符号表中名字的有关信息在和过程中陆续填入;4、在目标代码生成阶段,符号表是的依据;四、问答题:1、在编译过程中为什么要建立符号表单选解答:1、b 2、d 3、b 4、c多选解答:1、a 、c 2、a、b、c 3、a、b、c、e填空解答:1、标识符标识符地址及长度2、拼写错误最小距离匹配3、词法分析语法语义分析4、地址分配问答题解答:在编译过程中始终要涉及到对一些语法符号的处理,这就需要用到语法符号的相关属性;为了在需要时能找到这些语法成分及其相关属性,就必须使用一些表格来保存这些语法成分及其属性,这些。
编译原理习题及答案(整理后)
第一章1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法3、变量应当。
c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是。
b.源程序8、中间代码生成时所遵循的是- 。
c.语义规则9、编译程序是对。
d.高级语言的翻译10、语法分析应遵循。
c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成三、填空题1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→xSx|y所识别的语言是。
a. xyxb. (xyx)*c.x n yx n(n≥0) d. x*yx*2、文法G描述的语言L(G)是指。
a. L(G)={α|S+⇒α , α∈V T*}b. L(G)={α|S*⇒α, α∈V T*}c. L(G)={α|S*⇒α,α∈(V T∪V N*)} d. L(G)={α|S+⇒α, α∈(V T∪V N*)}3、有限状态自动机能识别。
a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G 的任意终结符对a、b有以下关系成立。
a. 若f(a)>g(b),则a>bb.若f(a)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。
a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是。
《编译原理》历年试题及答案
<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题1.将编译程序分成若干个“遍”是为了___。
a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握____。
a.源程序b.目标语言c.编译方法d.以上三项都是3.变量应当_。
a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4.编译程序绝大多数时间花在____上。
a.出错处理b.词法分析c.目标代码生成d.管理表格5.词法分析器的输出结果是____。
a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值d.单词自身值6.正规式MI和M2等价是指____。
a. MI和M2的状态数相等b.Ml和M2的有向弧条数相等。
C.M1和M2所识别的语言集相等 d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—。
a.语法规则 b.词法规则 c.语义规则 d.等价变换规则8.后缀式ab+cd+/可用表达式___来表示。
a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为______管理技术。
a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守________原则。
a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。
2. 已知文法G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄.3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。
4.设文法G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2) 计算每个非终结符的FIRST和FOLLOW;(3) 构造预测分析表。
编译原理习题及答案
2. 正规式 M 1 和 M 2 等价是指_____。 A.( ) M1 和 M2 的状态数相等 C.( ) M1 和 M2 所识别的语言集相等 B.( ) M1 和 M2 的有向边条数相等 D.( ) M1 和 M2 状态数和有向边条数相等
3. 文法 G:S→xSx|y 所识别的语言是_____。 A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*
10.编译程序使用_____区别标识符的作用域。 A. ( ) 说明标识符的过程或函数名 B.( ) 说明标识符的过程或函数的静态层次 C.( ) 说明标识符的过程或函数的动态层次 D. ( ) 标识符的行号 三、填空题(每空 1 分,共 10 分) 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 2.扫描器是__词法分析器___,它接受输入的__源程序___,对源程序进行___词法分析__并识别出一个个 单词符号,其输出结果是单词符号,供语法分析器使用。 3.自上而下分析法采用___移进__、归约、错误处理、___接受__等四种操作。 4.一个 LR 分析器包括两部分:一个总控程序和___一张分析表__。 5.后缀式 abc-/所代表的表达式是___a/(b-c)__。 6.局部优化是在__基本块___范围内进行的一种优化。 四、简答题(20 分) 1. 简要说明语义分析的基本功能。 答:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检 查。
4lr0分析器所谓lr0分析是指从左至右扫描和自底向上的语法分析且在分析的每一步只须根据分析栈当前已移进和归约出的全部文法符号并至多再向前查看0个输入符号就能确定相对于某一产生式左部符号的句柄是否已在分析栈的顶部形成从而也就可以确定当前所应采取的分析动作移进还是按某一产生式进行归约等
编译原理习题答案
对应的if与else等。它们的存在必定因下列规则的必定存在:
E::=E+T|T T::=T*F|F F::=(E)|i
以及 S::=if(E)S else S
因此,E=>* xEy x, y≠
与 S=>* uSv u, v≠ ,
即, E与S等必定是具有自嵌套特性的非终结符号。因此通常的程序设计语言
的文法必具有自嵌套特性的非终结符号,也就是说不可能是正则文法。
不能写:E =>T=>F =>(E) => (i )
可以写: E => T => F => (E) => + (i)
E =>E-T =>T-T =>T*F-T =>F*F-T
=>i*F-T=>i * i - T=>i * i - F =>i * i - i (最左推导)
或
E =>E-T =>E-F =>E-i =>T-i =>T*F-i
G [W]: W::=A0 A::=0{01|0}
第十六页,共六十二页。
6.试消去文法G[S]:
S::=Qc|Rd|c Q::=Rb|Se|b R::=Sa|Qf|a
解: 步骤1 首先判定是文法左递归还是规则左递归
步骤2 是文法左递归,按相应算法处理如下。 步 骤2.1 把非终结符号排序成
U1=S U2=Q U3=R (n=3)
=> T*i-i => F*i-i =>i*i-i
(最右推导)
第四页,共六十二页。
E => T => T/F => F/F => (E)/F => (E+T)/F
(完整版)编译原理习题及答案(整理后)
2、对无二义性文法来说,一棵语法树往往代表了 。
a. 多种推导过程
b. 多种最左推导过程
c.一种最左推导过程
d.仅一种推导过程 e.一种最左推导过程
3、如果文法 G 存在一个句子,满足下列条件 之一时,则称该文法是二义文法。
a. 该句子的最左推导与最右推导相同
b. 该句子有两个不同的最左推导
c. 该句子有两棵不同的最右推导
T→T*P|P
P→(E)|I
则句型 P+T+i 的句柄和最左素短语为 。
a.P+T 和 i b. P 和 P+T c. i 和 P+T+i d.P 和 T
8、设文法为:S→SA|A
A→a|b
则对句子 aba,下面 是规范推导。
a. SSASAAAAAaAAabAaba
b. SSASAAAAAAAaAbaaba
标语言
第二章
一、单项选择题
1、文法 G:S→xSx|y 所识别的语言是 。
a. xyx
b. (xyx)* c. xnyxn(n≥0) d. x*yx*
2、文法 G 描述的语言 L(G)是指 。
a. L(G)={α|S⇒+ α , α∈VT*}
b. L(G)={α|S⇒* α, α∈VT*}
c. L(G)={α|S⇒* α,α∈(VT∪VN*)} d. L(G)={α|S⇒+ α, α∈(VT∪VN*)}
第一章
1、将编译程序分成若干个“遍”是为了
。
a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率
编译原理练习题标准标准答案
一、填空题:1-01.编译程序地工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理.1-02.若源程序是用高级语言编写地,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序•1-03.编译方式与解释方式地根本区别在于是否生成目标代码.1-04.翻译程序是这样一种程序,它能够将用甲语言书写地程序转换成与其等价地用乙语言书写地程序.1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序.1-06.如果编译程序生成地目标程序是机器代码程序,则源程序地执行分为两大阶段:编译阶段和运行阶段如果编译程序生成地目标程序是汇编语言程序,则源程序地执行分为三个阶段:编译阶段,汇编阶段和运行阶段.b5E2RGbCAP1-07.若源程序是用高级语言编写地,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.1-08. 一个典型地编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理.其中,词法分析器用于识别单词.p1EanqFDPw1-09.编译方式与解释方式地根本区别为是否生成目标代码.2-01.所谓最右推导是指:任何一步a = B都是对a中最右非终结符进行替换地.2-02. 一个上下文无关文法所含四个组成部分是一组__________ 生式.DXDiTa9E3d2-03.产生式是用于定义语法成分地一种书写规则.2-04.设G[S]是给定文法,则由文法G所定义地语言 L(G)可描述为:L(G) = {x | S. x,x € V T*} . RTCrpUDGiT2-05.设G是一个给定地文法,S是文法地开始符号,如果S. x (其中x € V*),则称x是文法地一个处型.5PCzVD7HxA2-06.设G是一个给定地文法,S是文法地开始符号,如果S上x(其中x € V T*),则称x是文法地一个句_ 子.jLBHrnAlLg3-01.扫描器地任务是从源程序中识别出一个个单词符号.4-01.语法分析最常用地两类方法是自上而下和自下而上分析法.4- _________________________________________________________02.语法分析地任务是识别给定地终极符串是否为给定文法地句子_____________________________________________ .4-03.递归下降法不允许任一非终极符是直接左递归地.4-04.自顶向下地语法分析方法地关键是如何选择候选式地问题.4-05.递归下降分析法是自顶向上分析方法.4-06.自顶向下地语法分析方法地基本思想是:从文法地开始符号开始,根据给定地输入串并按照文法地产生式一步一步地向下进行直接推导,试图推导出文法地句子,使之与给定地输入串匹酉己.XHAQX74J0X5-01.自底向上地语法分析方法地基本思想是:从给定地终极符串开始,根据文法地规则一步一步地向上进行直接归约,试图归约到文法地开始符号.LDAYtRyKfE5-02.自底向上地语法分析方法地基本思想是:从输入串入手,利用文法地产生式一步一步地向上进行直接归约,力求归约到文法地开始符号 .Zzz6ZB2Ltk5-03.简单优先方法每次归约当前句型地句柄,算符优先方法每次归约当前句型地最左素短语,二者都是不断移进输入符号,直到符号栈顶出现可归约串地尾,再向前找到可归约串地头,然后归约.dvzfvkwMI15-04.在LR( 0)分析法地名称中,L地含义是自左向右地扫描输入串,R 地含义是最左归约,0地含义是向貌似句柄地符号串后查看0个输入符号•rqyn14ZNXI5-05.在SLR (1)分析法地名称中,S地含义是简单地•6-01.所谓属性文法是一个属性文法是一个三元组:A=(G, V, F), —个上下文无关文法G; —个属性地有穷集V和关于属性地断言或谓词地有穷集 F.每个断言与文法地某产生式相联.EmxvxOtOco6-02.综合属性是用于“自下而上”传递信息.6-03.继承属性是用于“自上而下”传递信息.6-04.终结符只有综合属性,它们由词法分析器提供.7-01.在使用高级语言编程时,首先可通过编译程序发现源程序地全部_A_错误和B 部分错误.SixE2yXPq5a.语法b.语义c.语用d.运行8-01.符号表中地信息栏中登记了每个名字地属性和特征等有关信息,如类型、种属、所占单元大小、地址等等.6ewMyirQFL8-02. 一个过程相应地 DISPLAY表地内容为现行活动记录地址和所有外层最新活动记录地地址.9-01. 一个过程相应地 DISPLAY表地内容为现行活动记录地址和所有外层最新活动记录地地址.9-02.常用地两种动态存贮分配办法是栈式动态分配和堆式动态分配.9-03.常用地参数传递方式有传地址,传值和传名.10-01.局部优化是局限于一个基本块范围内地一种优化.10-02.代码优化地主要目标是如何提高目标程序地运行速度和如何减少目标程序运行时所需地空间.kavU42VRUs、单选题:1-10. 一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(1应其中,(2)b和代码优化部分不是每个编译程序都必需地词法分析器用于识别(3应语法分析器则可以发现源程序中地.她(1) a.模拟执行器 b.解释器 c.表格处理和出错处理 d. 符号执行器⑵ a.语法分析 b.中间代码生成 C.词法分析 d.目标代码生成⑶ a.字符串 b.语句 c.单词 d.标识符y6v3ALoS89⑷ a.语义错误 b.语法和语义错误 C.错误并校正 d.语法错误1-程序语言地语言处理程序是一种(1)a. (2)b 是两类程序语言处理程序,他们地主要区别在于11.(3)d. M2ub6vSTnP(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统(2) a.咼级语言程序和低级语言程序 b.解释程序和编译程序c.编译程序和操作系统d.系统程序和应用程序(3) a.单用户与多用户地差别 b.对用户程序地查错能力c.机器执行效率d.是否生成目标代码1-12. 汇编程序是将a翻译成b,编译程序是将c_翻译成d.a.汇编语言程序b.机器语言程序c.高级语言程序1-18.编译程序与具体地机器 a ,与具体地语言a.a. 有关b.无关1-19.使用解释程序时,在程序未执行完地情况下, a 重新执行已执行过地部分a.也能b.不可能1-20.编译过程中,语法分析器地任务就是 (1)分析单词是怎样构成地(3)分析语句和说明是如何构成程序地 b.(2)分析单词串是如何构成语句和说明地(4)分析程序地结构 a. (2)(3)b. (2)(3)(4)c. (1)(2)(3)d.(1)(2)(3)(4) zvpgeqJ1hkd. a 或者be. a 或者cf. b 或者c1-13.下面关于解释程序地描述正确地是b.(1) 解释程序地特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRA N 语言 (3) 解释程序是为打开编译程序技术地僵局而开发地 a. (1)(2)b. (1)c. (1)(2)(3)d.(2)(3) OYujCfmUCw1-14.高级语言地语言处理程序分为解释程序和编译程序两种 .编译程序有五个阶段,而解释程序通常缺少(1)e 和(1)b.其中,(1)e 地目地是使最后阶段产生地目标代码更为高效.eUts8ZQVRd与编译系统相比,解释系统 (2)d.解释程序处理语言时,大多数采用地是_(3L 方法.⑷a 就是一种典型地 解释型语言.sQsAEJkW5T (1) : a. 中间代码生成 b.目标代码生成 c.词法分析 d.语法分析e.代码优化GMslasNXkA(2) : a. 比较简单,可移植性好,执行速度快b. 比较复杂,可移植性好,执行速度快c. 比较简单,可移植性差,执行速度慢d.比较简单,可移植性好,执行速度慢(3) : a. 源程序命令被逐个直接解释执行b.先将源程序转化为之间代码,再解释执行c.先将源程序解释转化为目标程序 ,在执行d.以上方法都可以(4) : a. BASIC b. C c. FORTRAN d. PASCAL TirRGchYzg1-15.用高级语言编写地程序经编译后产生地程序叫 b .用不同语言编写地程序产生 b 后,可用g 连接在一起生成机器可执行地程序 .在机器中真正执行地是 e. 7EqZcWLZNXa.源程序b.目标程序c.函数d.过程e.机器指令代码 f.模块g.连接程序 h.程序库1-16.要在某一台机器上为某种语言构造一个编译程序 ,必须掌握下述三方面地内容 :c , d , ______f . lzq7IGfO2E a.汇编语言 b. 高级语言 c. 源语言 d. 目标语言e.程序设计方法f.编译方法1-17.由于受到具体机器主存容量地限制 诸阶段地工作往往是(2」进行地. (1) a. 过程b.程序c.批量 ⑵a.顺序b.并行c.成批g.测试方法h.机器语言,编译程序几个不同阶段地工作往往被组合成d.遍 d.穿插(1)d ,1-21.编译程序是一种常用地、软件•a. 应用b.系统1-22.编写一个计算机高级语言地源程序后,到正式上机运行之前,一般要经过b这几步.(1)编辑 (2)编译 (3)连接 (4)运行a. (1)⑵⑶⑷b. (1) (2)(3)c. (1) (3)d.(1) (4)1-23.编译程序必须完成地工作有 a.(1)词法分析⑵语法分析(3)语义分析(4) 代码生成之间代码生成(6) 代码优化a. (1)(2)(3)(4) b. (1) (2)(3)(4)(5) c. (1) (2)(3)(4)(5)(6) NrpoJac3v1d.(1)(2)(3)(4)(6) e. (1)(2)(3)(5)(6)1-24 .“用高级语言书写地源程序都必须通过编译,产生目标代码后才能投入运行”这种说法 a.a.不正确b.正确1-25.把汇编语言程序翻译成机器可执行地目标程序地工作是由b完成地.a.编译器b.汇编器c.解释器d.预处理器1-26.编译程序生成地目标程序b是机器语言地程序.a. 一定b.不一定1-27.编译程序生成地目标程序b是可执行地程序.a. 一定b.不一定1-28 .编译程序是一种 B .A.汇编程序B. 翻译程序C. 解释程序D. 目标程序1nowfTG4KI1-29 .按逻辑上划分, 编译程序第二步工作是 C .A.语义分析B. 词法分析C. 语法分析D. 代码优化fjnFLDa5Zo1-30 •通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 C . tfnNhnE6e5A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器2-07 .文法G所描述地语言是 C 地集合.A.文法G地字母表V中所有符号组成地符号串B.文法G地字母表V地闭包V*中地所有符号串C.由文法地开始符号推出地所有终极符串D.由文法地开始符号推出地所有符号串2-08 .乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型.其中3型文法是B . HbmVN777sLA.短语文法B.正则文法C. 上下文有关文法D. 上下文无关文法2-09.文法 G[N]= ({b} , {N , B}, N, {Nb | bB, bN}),该文法所描述地语言是C .A. L(G[N])={b i | i > 0}B. L(G[N])={b 2i | i > 0}C. L(G[N])={b | i > 0}D. L(G[N])={b | i > 1}2-10 .一个句型中地最左B称为该句型地句柄.可选项有:A.短语B.简单短语C.素短语D.终结符号2-11 •设G 是一个给定地文法,S 是文法地开始符号,如果 S .x (其中x € V),则称x 是文法G 地一个B . V7l4jRB8HsA.候选式B. 句型C. 单词D. 产生式2-12 •一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 D.83ICPA59W9 A.句子 B. 句型 C. 单词 D. 产生式2-13.文法 G[E]:T I E+ T —F I T * F F T a I ( E )该文法句型E+ F* (E + T )地简单短语是下列符号串中地 B .◎ ( E+ T ) ②E+ T ③F ④F* (E + T )可选项有:A )①和③B )②和③C )③和④D )③2-14 .若一个文法是递归地,则它所产生地语言地句子A.是无穷多个B.是有穷多个C.是可枚举地 3-02 •词法分析器用于识别 C .4-08.编译程序中语法分析器接收以 A 为单位地输入.D.个数是常量A.句子B. 句型C.单词D.产生式4-07.在语法分析处理中,FIRST 集合、A.非终极符集B. 终极符集FOLLOW 集合、 SELECT 集合均是 BmZkklkzaaPC. 字母表D.状态集A.单词B. 表达式C.产生式 D. 句子5-06 .在自底向上地语法分析方法中,分析地关键是A.寻找句柄B.寻找句型C.消除递归D.5-07.在LR 分析法中,分析栈中存放地状态是识别规范句型A.句柄B.前缀 C.活前缀选择候选式 AVktR43bpw 地DFA 状态.B. C.D. LR(0)项目 ORjBnOwcEd、是非题(下列各题,你认为正确地,请在题干地括号内打“ 错地打“X” .)1-31 .计算机高级语言翻译成低级语言只有解释一种方式 (X) 2MiJTy0dTT 1-32.在编译中进行语法检查地目地是为了发现程序中所有错误(X) gIiSpiue7A1-34.甲机上地某编译程序在乙机上能直接使用地必要条件是甲机和乙机地操作系统功能完全相同.(X )uEhOU1Yfmh2-15.正则文法其产生式为 A a, A Bb, A,B € V N , a 、b€ V T . 4-09.每个文法都能改写为LL (1)文法.(X )4- 10.递归下降法允许任一非终极符是直接左递归地 5-08.算符优先关系表不一定存在对应地优先函数.(V )(V) IAg9qLsgBX(V) WWGHWVVHPE(X) asfpsfpi4k5-10.LR法是自顶向下语法分析方法(X) ooeyYZTjj15-11.简单优先文法允许任意两个产生式具有相同右部5-12.若一个句型中出现了某产生式地右部,则此右部一定是该句型地句柄 (X)四、名词解释1- 35.扫描遍 _____ 指编译程序对源程序或中间代码程序从头到尾扫描一次2- 16.短语一一设G[Z]是给定文法,w=xuy € V+,为该文法地句型,如果满足下面两个条件:① Z xUy ; ② U 「u;则称句型xuy 中地子串u 是句型xuy 地短语.2-17.简单短语一一设 G[Z]是给定文法,w=xuy € S ,为该文法地句型,如果满足下面两个条件:v4bdyGious① Z — xUy ; ② 4 u ;则称句型xuy 中地子串u 是句型xuy 地简单短语(或直接短语).2-18.句柄——一个句型中地最左简单短语称为该句型地句柄4- 11.语法分析--按文法地产生式识别输入地符号串是否为一个句子地分析过程 4- 12.选择符集合 SELECT--给定上下文无关文法地产生式a , A € V N , a € V *,若a ^ s ,则SELECT(A> a )=FIRST( a ),其中如果 a —、s ,贝U SELECT(A> a )=FIRST( a s ) U FOLLOW(A),FIRST( a s )表示 FIRST( a )地非{ s }兀素.J0bm4qMpJ9Aw a 年3是文法G'中地一个规范推导,G'是G 地拓广文法,符号串丫是a B 地前缀,则称 丫是G 地,也是G'地一个活前缀.其中S'为文法开始符号.或:可归前缀地任意首 部. XVauA9grYP5- 15.可归前缀——是指规范句型地一个前缀,这种前缀不含句柄之后地任何符号 5-16.LR(0)项目一一把产生式右部某位置上标有圆点地产生式称为相应文法地一个 LR(0)项目.5- 17.最左素短语一一设有文法 G[S],其句型地素短语是一个短语,它至少包含一个终结符,并除自身外不包含其它素短语,最左边地素短语称最左素短语.bR9C6TJscw6- 05.语义规则一一对于文法地每个产生式都配备了一组属性地计算规则,称为语义规则 6- 06.翻译方案一一将属性文法中地语义规则用花括号{ }括起来,插在产生式右部地合适地方,指明语义规则地计算次序,陈述一些细节,得到一种语义动作与语法分析交错地表示方法,以表述语义动作在语法 分析过程中地执行时刻,称之为翻译方案 .pN9LBDdtrd7- 03.后缀式 -- 一种把运算量(操作数)写在前面把算符写在后面(后缀)地表示法.即一个表达式E 地后缀形式可以如下定义:(1)如果E 是—个变量或常量,则 E 地后缀式是E 自身.⑵ 如果E 是Eop E 2形式地表达式,这里 op 是任何二元操作符,则 E 地后缀式为&'巨’op,这里 E'和E 2‘分别为E 1和E 2地后缀式.DJ8T7nHuGT(X) BkeGulnkxl 5-13. 一个句型地句柄一定是文法某产生式地右部 7-02.数组元素地地址计算与数组地存储方式有关 •(V)8-03.在程序中标识符地出现仅为使用性地.9-04.对于数据空间地存贮分配, FORTRA 采(V) PgdOOsRIMo(X) 3cdXwckm15(X) h8c52WOngM5-14.活前缀一一若S' a(3)如果E是( EJ形式地表达式,则日地后缀式就是E地后缀式.答:一个过程地活动指地是该过程地一次执行.就是说,每次执行一个过程体,产生该过程体地一个活动9-07.活动记录答:为了管理过程在一次执行中所需要地信息,使用一个连续地存储块,这样一个连续地存储块称为活动记录.9-08.活动地生存期答:指地是从执行某过程体第一步操作到最后一步操作之间地操作序,包括执行过程时调用其它过程花费地时间.10-06. 基本块地DAG.答:一个基本块地 DAG是—种其结点带有下述标记或附加信息地DAG.(1)图地叶结点(没有后继地结点)以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数地值.如果叶结点用来代表某变量A地地址,则用addr( A)作为该结点地标记.通常把叶结点上作为标记地标识符加上下标0,以表示它是该变量地初值 .QF81D7bvUA(2)图地内部结点(有后继地结点)以一运算符作为标记,表示该结点代表应用该运算符对其后继结点所代表地值进行运算地结果.4B7a9QFw9h(3)图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表地值五、简答题:2-19什么是句子?什么是语言?答:设G是一个给定地文法,S是文法地开始符号,如果S〔x(其中x € V T*),则称x是文法地一个句子.设G[S]是给定文法,则由文法G所定义地语言L(G)可描述为:L(G) = {x | S . x,x € V T*} . ix6iFA8xoX 2-20.已知文法 G[E]为:T|E+T|E-T—F|T*F|T/FF^( E) |i①该文法地开始符号(识别符号)是什么?②请给出该文法地终结符号集合V T和非终结符号集合M.③找出句型T+T*F+i地所有短语、简单短语和句柄.解:①该文法地开始符号(识别符号)是 E.②该文法地终结符号集合V T={+、-、*、/、(、)、 i}.非终结符号集合M={E、T、F}.③句型 T+T*F+I地短语为i、T*F、第一个 T、T+T*F+i;简单短语为i、T*F、第一个T;句柄为第一个T.2-21.已知文法 G[S]为:S T dABA T aA|aB T Bb| £①G[S]产生地语言是什么?②G[S]能否改写为等价地正规文法?8 /注6带+号地结点为初始状态;解:① G[S]产生地语言是 L(G[S])={da n b m| n> 1,m>0}.②G[S]能改写为等价地正规文法,其改写后地等价地正规文法 G[S / ]为:S J dA A T aA|aB|a BT bB|b2- 22.设有语言L(G)={ada R| a € (a,b) *,a R为a 之逆},试构造产生此语言地上下文无关文法G.wt6qbkCyDE解:根据题义,可知a R为a 之逆地含义就是句子中地符号 a 、b 以d 为中心呈左右对称出现;由于a€ (a,b) *, 所以a 、b 地个数可以为零.所以可构造产生此语言地上下文无关文法 G[S]为:S T aSa|bSb|d Kp5zH46zRk3- 03 .简述DFA 与NFA 有何区别?答:DFA 与NFA 地区别表现为两个方面:一是NFA 可以若干个开始状态,而DFA 仅只一个开始状态.另一方 面,DFA 地映象M 是从KXE 到K,而NFA 地映象M 是从KX 刀到K 地子集,即映象 M 将产生一个状态 集合(可能为空集),而不是单个状态.YI4HdOAA61 3- 04.试给出非确定自动机地定义. 答:一个非确定地有穷自动机(NFA M 是一个五元组:M=( K, X, f, S , Z).其中:1. K 是一个有穷集,它地每个元素称为一个状态;2. 工是一个有穷字母表,它地每个元素称为一个输入符号,所以也称工为输入符号表;3. f 是状态转换函数,是在 KX X * T K 地子集地映射,即,f: K X X *T 2K;表明在某状态下对于某输入符号可能有多个后继状态; ch4PJx4BII4. S ( K 是- -个非空初态集;5. Z ( K 是- -个终态集(可空). 3-05.为正规式(a|b ) *a(a|b)构造一个等价地确定地有限自动机.解答:3- 06.给定下列自动机,将其转换为确定地自动机qd3YfhxCzo注:带+号地结点为初始状态;带一号地结点为终止状态+AE dVG dd BC+ startSd* D(1) 把此自动机转换为确定自动机 DFA.⑵给出此DFA 地正则表达式. 解答:(1):有状态矩阵如图:501nNvZFisa bab=00,1 2二 0 01 21 2 —01 01 2-2 1 2-2 1 29 / 1 6 2+— d •+— d • S A ABCE G+[SA][A][A][BCE] [G] A BCE[A][BCE][G] BB[BCE][BCE] [DG]CC D[G][H]DD[DG][DH]EE G[H][H]G H[DH][DH]HH注:带+号地结点为初始状态;带一号地结点为终止状态3- 07.给定下列自动机:其中:开始状态:0终止状态:2⑵确定化,得到DFAS42ehLvE3M+db从而可得DFA如图:a(2)此DFA地正则表达式为:(aa *b b)(b ab) 4-13.消除下列文法 G[E]地左递归.E-T I T—T/F I FI E ) I i解答:消除文法G[E]地左递归后得到:E T TE'E'T -TE'I £T T FT'T'T /FT' I £F T ( E) I i4-14.在LL(1)分析法中丄L分别代表什么含义答:第一个L代表从左到右地扫描,第二个 4-15.自顶向下分析思想是什么?答:从开始符出发导出句型并一个符号开始符号可推导出给定地终结符串4-16.自顶向下地缺点是什么?或 a b (b ab)L代表每次进行最左推导.个符号地与给定终结符串进行匹配.因此判定给定终结符号串是正确句子.如果全部匹配成功,则表示.jW1viftGw9答:在推导过程中,如果对文法不做限制.那么产生式地选择成为无根据地,只好一一去试所有可能地产生式,直至成功为止.这种方法地致命弱点是不断地回溯,大大影响速度.xSODOYWHLP4-17 .LL (1)文法地定义是什么?答:一个上下文无关文法是 LL(1)文法地充分必要条件是每个非终结符A地两个不同产生式,A T a ,A T 3 ;满足 SELECT(A T a ) A SELECT(A T 3 )=①.其中,a、3 不能同时二& . LOZMklqlOw4-18 .什么是文法地左递归?答:一个文法含有下列形式地产生式之一时:1)A T A3 , A€ VN 3 € V*2)A T B3 , B T Aa , A、B€ VN a、3 € V* 则称该文法是左递归地.4-19.递归下降法地主要思想是什么?答:对每个非终结符按其产生式结构写出相应语法分析子程序 •因为文法递归相应子程序也递归,子程序地结构与产生式结构几乎一致 •所以称此种方法称为递归子程序法或递归下降法 • ZKZUQsUJed 5- 19.自底向上分析法地原理是什么?答:在采用自左向右扫描,自底向上分析地前提下,该类分析方法是从输入符号串入手,通过反复查找当 前句型地句柄(最左简单短语),并使用文法地产生式把句柄归约成相应地非终极符来一步步地进行分析地•最终把输入串归约成文法地开始符号, 表明分析成功.dGY2mcoKtT5-23.给定文法 G[Z] : rCYbSWRLIA1. Z T C s2. C T if E then3. S T A = E 其中: Z 、C 、S A 、E € V N ;4. E T E V Aif 、then 、=、V 、 i € V T5. E T A6. A T i2. Follow(Z) = {#}Follow(C) = {i} Follow(S) = {#}Follow(E) = {#, V ,then}Follow(A) = { = ,# , V ,then } 则可构造ACTIONGOTO0 ifthe n=V i#Z CSEAS 3121OKa) 构造此文法地LR(0)项目集规范族,并给出识别活前缀地 b) 构造其SLR( 1)分析表. G 中加入产生式 0. Z' T Z, 解答:1.首先拓广文法:在TuWrUpPpf X Z ' T Z I 7: C T if E . then 7qWAq9jPqE Z T . C SE T E . V AC T . if E thenI 9 : S TA = . EI i : Z ' T Z . E T . E V A 12: Z T C . sE T . A S T . A = E A T . i A T . iI 10: C T if E then . 13: C T if . E thenI 11: E T E V . AE T . E V AA T . iE T . AI 12: S T A = E . A T . iE T E . V A I 4: Z T C S .I 13: E T E V A .15: S T A . = E 16: A T i .DFA.然后得到新地文法 ,再求G 地识别全部活前缀地 DFA FyXjoFIMWh2 S6 4 53 S6 7 84 r 15 S96 「6 r 6 「6 r 67 S10 S118 「5 「5 r 59 S6 12 810 「211 S6 1312 S11 r 313 「4 「4 r 45-24. 设有文法G[S]:S T a AA T AbA T b求识别该文法所有活前缀地DFA.llVIWTNQFk解答:(1).首先拓广文法:在G中加入产生式0.S ' T S,然后得到新地文法G0.S S1.S T aA2.A T Ab3.A T b(2).再求G地识别全部活前缀地DFA6-07.语法制导翻译方法地基本思想是什么答:在语法分析过程中,每当使用一条产生式进行推导或归约时,就执行该产生式所对应地语义动作进行属性计算,完成对输入符号串地翻译.yhUQsDgRTI6-08.何谓“语法制导翻译”?答:在语法分析过程中,随着分析地步步进展,根据每个产生式所对应地语义子程序(或语义规则描述地语义动作)进行翻译地办法称作语法制导翻译.MdUZYnKS8l6-09.在一个属性文法中,对应于每个产生式A T a都有一套与之相关联地语义规则,每条规则地形式为b: = f (c1,c2…,ck),其中对于b地要求是什么?答:语义规则中地左部属性变量b被规定为只能是下述两种变量:①对应产生式左部符号地综合属性变量;②对应产生式右部符号地继承属性变量.7-05.常用地中间语言种类有哪几种?答:有逆波兰式、三地址代码、抽象语法树和DAG.8-06.符号表地作用有哪些?答:在编译程序中符号表用来存放语言程序中出现地有关标识符地属性信息,这些信息集中反映了标识符地语义特征属性•起主要作用是:09T7t6eTno①收集符号属性;②上下文语义地合法性检查地依据;③作为目标代码生成阶段地址分配地依据•9-09 .运行时存储器地划分是怎样地?答:运行时存储器地划分如下图所示•10-07.简述优化地原则是什么?答:编译程序提供地对代码优化必须遵循地原则是:(1)等价原则.经过优化后不应改变程序运行地结果•(2)有效原则.使优化后所产生地目标代码运行时间较短,占用地存储空间较小(3)合算原则.应尽可能以较低地代价取得较好地优化效果.10-08 •简述常用地优化技术有哪些?答:编译程序中常用地优化技术有:(1) 删除公共子表示式;(2) 复写传播;(3) 删除无用代码;(4) 代码外提;(5) 强度削弱;(6) 删除归纳变量;(7) 合并常量.10-09.设有基本块:⑴ a:=b-c(2)d:=a+4(3)e:=a-b(4)f:=a+4(5)b:=b+c(6)c:=b-f(7)b:=b-c(8) f:=b+f (9) a:=a-f (1) 画出DAG 图;(2) 假设基本块出口时只有 解答:(1) 给出DAG 如右:(2) 重写三地址代码如下:a:=b-c d:=a+4 f:=de:=a-b b:=b+c c:=c+d b:=b-c f:=b-d a:=a+d10-10.何谓优化?按所涉及地程序范围可分为哪几级优化?答:优化:对程序进行各种等价变换,使得从变换后地程序出发,能产生更有效地目标代码三种级别:局部优化、循环优化、全局优化.e5TfZQIUB510-11.设有基本块「:= 2 T 2:= 10/T 1 T s := S — R T 4:= S + R A := T 2 * T 4 B := A T 5:= S + R T 6:= T 3 * T 5(1)画出 DAGS;A, B 还被引用,请写出优化后地三地址代码序列 .s1SovAcVQMT 4:= S+ Ra, b 还被引用,请写出优化后地三地址代码序列(2)假设基本块出口时只有 解:(1)DAG:见右图(2) 优化后地四元式10 +b9 +e6 5 ++ 324 1 4cb8 c7山 11^A:= 5*T4 B:= T3+ T4GXRw1kFW5s版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理•版权为个人所有This article in eludes some parts, in cludi ng text, pictures, and desig n. Copyright is pers onal own ership. UTREX49%9用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.8PQN3NDYyPUsers mayuse the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisi ons of copyright law and other releva nt laws, and shall not infringe upon the legitimate rights of this website and its releva nt obligees. In additi on, when any content or service of this article is used for other purposes, writte n permissi on and remun erati on shall be obta ined from the pers on con cer ned and the releva nt obligee. mLPVzx7ZNw转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.AHP35hB02dReproducti on or quotati on of the content of this article must be reas on able and good-faith citatio n for the use of n ews or in formative public free information. Itshall not misinterpret or modify the originalintention of the content of this article, and shall bear legal liabilitysuch as copyright. NDOCB14BT。
编译原理试题及答案
编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 将高级语言代码翻译成机器语言代码B. 进行程序调试C. 进行代码优化D. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。
答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。
词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。
2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。
中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。
三、论述题1. 论述编译器优化的几种常见方法。
答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。
这些优化方法可以提高程序的执行效率,减少资源消耗,提高程序的运行速度。
结束语:本试题涵盖了编译原理的基本知识点,包括编译器的功能、编译过程的主要阶段、中间代码的作用以及编译器优化的方法。
希望考生能够通过本试题加深对编译原理的理解和掌握。
编译原理习题参考答案
编译原理习题参考答案第⼆章2.构造产⽣下列语⾔的⽂法(2){a n b m c p|n,m,p≥0}解: G(S) :S→aS|X,X→bX|Y,Y→cY|ε(3){a n # b n|n≥0}∪{cn # dn|n≥0}解: G(S):S→X,S→Y,X→aXb|#, Y→cYd|# }(5)任何不是以0 打头的所有奇整数所组成的集合解:G(S):S→J|IBJ,B→0B|IB|ε,I→J|2|4|6|8, J→1|3|5|7|9}(6)(思考题)所有偶数个0 和偶数个1 所组成的符号串集合解:对应⽂法为 S→0A|1B|ε,A→0S|1C B→0C|1S C→1A|0B3.描述语⾔特点(2)S→SS S→1A0 A→1A0 A→ε解:L(G)={1n10n11n20n2… 1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全为零}该语⾔特点是:产⽣的句⼦中,0、1 个数相同,并且若⼲相接的1 后必然紧接数量相同连续的0。
(5)S→aSS S→a解:L(G)={a(2n-1)|n≥1}可知:奇数个a5. (1) 解:由于此⽂法包含以下规则:AA→ε,所以此⽂法是0 型⽂法。
7.解:(1)aacb 是⽂法G[S]中的句⼦,相应语法树是:最右推导:S=>aAcB=>aAcb=>aacb最左推导:S=>aAcB=>aacB=>aacb(3)aacbccb 不是⽂法G[S]中的句⼦aacbccb 不能从S推导得到时,它仅是⽂法G[S]的⼀个句型的⼀部分,⽽不是⼀个句⼦。
11.解:最右推导:(1) S=>AB=>AaSb=>Aacb=>bAacb=>bbAacb=>bbaacb上⾯推导中,下划线部分为当前句型的句柄。
对应的语法树为:3 假设M:⼈ W:载狐狸过河,G:载⼭⽺过河,C:载⽩菜过河6 根据⽂法知其产⽣的语⾔是L={a m b n c i| m,n,i≧1}可以构造如下的⽂法VN={S,A,B,C}, VT={a,b,c}P={ S →aA, A→aA, A→bB, B→bB, B→cC, C→cC, C→c} 其状态转换图如下:7 (1) 其对应的右线性⽂法是:A →0D, B→0A,B→1C,C→1|1F,C→1|0A,F→0|0E|1A,D→0B|1C,E→1C|0B(2) 最短输⼊串011(3) 任意接受的四个串: 011,0110,0011,000011(4) 任意以1 打头的串.9.对于矩阵(iii)(1) 状态转换图:(2) 3型⽂法(正规⽂法)S→aA|a|bB A→bA|b|aC|a B→aB|bC|b C→aC|a|bC|b(3)⽤⾃然语⾔描述输⼊串的特征以a 打头,中间有任意个(包括0个)b,再跟a,最后由⼀个a,b 所组成的任意串结尾或者以b 打头,中间有任意个(包括0个)a,再跟b,最后由⼀个a,b 所组成的任意串结尾。
编译原理试题及答案
编译原理试题及答案1. 选择题(每题4分,共40分)1) 当编译器在词法分析阶段遇到无法识别的字符时,应该采取的动作是:A. 直接忽略该字符并继续进行词法分析B. 输出错误信息并终止词法分析过程C. 将该字符标记为非法字符并继续词法分析D. 转交给语法分析器进行处理答案:B2) 下列关于语法分析器的描述中,错误的是:A. 语法分析器使用文法规则将输入的记号流转化为推导树B. 语法分析器可以通过自上而下或自下而上的方式进行解析C. LL(1)文法是一种常用于自上而下语法分析的文法形式D. 语法分析器的输入是词法分析器输出的记号流答案:A3) 以下关于语法制导翻译的说法,正确的是:A. 语法制导翻译是在语义分析阶段完成的B. 语法制导翻译通过产生式的属性传递进行信息的传递和计算C. 语法制导翻译只能用于自上而下的语法分析D. 语法制导翻译是在语法分析阶段完成的答案:B4) 在SLR分析算法中,项目集簇的构造过程中需要进行的操作是:A. 闭包操作和移进操作B. 移进操作和规约操作C. 闭包操作和规约操作D. 闭包操作、移进操作和规约操作答案:D5) 下列关于中间代码生成的叙述中,错误的是:A. 中间代码是一种类似于汇编代码的表示形式B. 中间代码可以直接被目标代码生成器所使用C. 中间代码的生成可以采用三地址码的形式D. 中间代码的生成在语法分析和语义分析之后进行答案:B2. 简答题(每题10分,共30分)1) 请简要描述编译器的主要工作流程。
答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。
在词法分析阶段,编译器将输入的源代码转化为一个个记号流。
接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。
在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。
中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。
编译原理练习题及答案
第一章练习题(绪论)一、选择题1.编译程序是一种常用的软件。
A) 应用B) 系统C) 实时系统D) 分布式系统2.编译程序生成的目标代码程序是可执行程序。
A) 一定B) 不一定3.编译程序的大多数时间是花在上。
A) 词法分析B) 语法分析C) 出错处理D) 表格管理4.将编译程序分成若干“遍”将。
A)提高编译程序的执行效率;B)使编译程序的结构更加清晰,提高目标程序质量;C)充分利用内存空间,提高机器的执行效率。
5.编译程序各个阶段都涉及到的工作有。
A) 词法分析B) 语法分析C) 语义分析D) 表格管理6.词法分析的主要功能是。
A) 识别字符串B) 识别语句C) 识别单词D) 识别标识符7.若某程序设计语言允许标识符先使用后说明,则其编译程序就必须。
A) 多遍扫描B) 一遍扫描8.编译方式与解释方式的根本区别在于。
A) 执行速度的快慢B) 是否生成目标代码C) 是否语义分析9.多遍编译与一遍编译的主要区别在于。
A)多遍编译是编译的五大部分重复多遍执行,而一遍编译是五大部分只执行一遍;B)一遍编译是对源程序分析一遍就立即执行,而多遍编译是对源程序重复多遍分析再执行;C)多遍编译要生成目标代码才执行,而一遍编译不生成目标代码直接分析执行;D)多遍编译是五大部分依次独立完成,一遍编译是五大部分交叉调用执行完成。
10.编译程序分成“前端”和“后端”的好处是A)便于移植B)便于功能的扩充C)便于减少工作量D)以上均正确第二章练习题(文法与语言)一、选择题1.文法 G 产生的 (1) 的全体是该文法描述的语言。
A.句型B. 终结符集C. 非终结符集D. 句子2.若文法 G 定义的语言是无限集,则文法必然是 (2) A递归的 B 上下文无关的 C 二义性的 D 无二义性的3. Chomsky 定义的四种形式语言文法中, 0 型文法又称为(A)文法;1 型文法又称为(C)文法;2 型语言可由(G) 识别。
A 短语结构文法B 上下文无关文法C 上下文有关文法D 正规文法E 图灵机F 有限自动机G 下推自动机4.一个文法所描述的语言是(A);描述一个语言的文法是(B)。
《编译原理》练习题库参考答案
《编译原理》练习测试题库一、填空1.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序。
2.词法分析和语法分析本质上都是对源程序的______进行分析。
3.如果源语言(编写源程序的语言)是高级语言,而目标语言是某计算机的汇编语言或机器语言,则这种翻译程序称为_____。
4.对编译程序而言,输入数据是_______,输出结果是________。
5. ______,是构成语言文法的单词,是语法成分的最小单位。
6.由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个__________。
7.由于PL/0编译程序采用_________,所以语法分析过程BLOCK是整个编译过程的核心。
8.用语法图描述语法规则的优点是______、________。
9.每个非终结符是一个语法成分,在书写语言程序时并不出现,它是由_________和_________、或终结符串定义的。
10.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机______。
11.PL/0的编译程序和目标程序的解释执行程序都是用_______书写的,因此PL/0语言可在配备_________的任何机器上实现。
12.PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由______个嵌套及并列的过程或函数组成13.当源程序编译正确时,PL/0编译程序自动调用__________,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。
14.由于对某些非终结符可以递归定义,这就使得_________可用有穷的文法描述。
15. ______的任务是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。
16. PL/0编译程序的语法分析采用了____________。
17.语法分析程序除总控外主要有两大部分的功能,即_________和__________.18.PL/0的词法分析程序GETSYM,是一个独立的过程,其功能是为_________提供单词用的,是______的基础,它把输入的字符串形式的源程序分割成一个个单词符号。
编译原理习题及答案(整理后)
编译原理习题及答案(整理后)第一章1、将编译程序分成若干个“遍”是为了b.使程序的结构更加清晰2、构造编译程序应掌握a.源程序b.目标语言c.编译方法3、变量应当c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是b.源程序8、中间代码生成时所遵循的是-c.语义规则9、编译程序是对d.高级语言的翻译10、语法分析应遵循c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析三、填空题b.语法分析c.中间代码生成e.目标代码生成1、解释程序和编译程序的区别在于是否生成目标程序2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)5、如果文法G是无二义的,则它的任何句子αa.最左推导和最右推导对应的语法树必定相同b.最左推导和最右推导对应的语法树可能不同c.最左推导和最右推导必定相同d.可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是a.短语b.句柄c.句型d.句子7、文法G:E→E+T|TT→T某P|PP→(E)|I则句型P+T+i的句柄和最左素短语为a.P+T和ib.P和P+Tc.i和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导。
编译原理试题及答案
编译原理试题及答案一、选择题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. 描述自顶向下和自底向上语法分析方法的主要区别。
答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理练习题
一、选择题
1.下列()程序语言是依赖于机器的。
A.自然语言
B.高级语言
C.SQL语言
D.汇编语言或机器语言
2.编译程序是对()程序进行翻译。
A.机器语言
B. 汇编语言
C. 高级语言
D. 自然语言
3.编译程序的工作过程划分为5个阶段:词法分析、()、语义分析与中间代码
A. 语法分析
B. 出错处理
C. 表格管理
D.存储空间组织
4.编译程序各阶段的工作都涉及到()。
A. 语法分析
B. 语义分析
C.代码优化
D.表格管理
5.设A是符号串的集合,下列对A*计算不正确的是()。
A.{ε}∪A+
B. A*=A1∪A2∪…∪A n∪…
C. A0∪A+
D. A*=A0∪A1∪A2∪…∪A n∪…
6.设x是符号串,符号串的幂运算x0=()
A.Φ
B.x
C.1
D.ε
7.程序语言的生成机构是()。
A.自动机
B.文法
C.产生式
D.语言本身
8.设有文法G的符号集V,非终结符集V N,终结符集V T,下列叙述中正确的是()。
A.V=V T
B.V=V N
C.V=V T∪V N
D.V=V T∩V N
9.文法G产生的()的全体构成该文法描述的语言。
A.句型
B.终结符集
C.非终结符集
D.句子
10.若一个文法满足(),则称该文法为二义文法。
A. 存在一个最左推导。
B.存在一个最右推导。
C.文法的某个句子存在两棵(包括两棵)以上的语法树。
D.文法的某个句子存在一棵(包括一棵)以上的语法树。
11.给定文法A→bA|cc,下面的符号串中为该文法句子的是()。
①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc
可选项有:
A.①⑤
B.①③④⑤
C.①④
D.①④⑤
12.设∑={0,1},则∑上所有以1开头,后跟若干个010的字串的集合对应的正规式为()。
A.1(010)*
B.1(010)+
C.(010)*1
D.(010)+1
13.从编译程序的语法分析角度看,源程序是句子的集合,()可以较好地反映句子的结构。
A.线性表
B.树
C.强连通图
D.堆栈
14.在常用的语法分析中,递归下降分析法属于()分析方法。
A.自左至右
B.自上而下
C.自下而上
D.自右向左
15.在自上而下的语法分析方法中,递归下降分析法和预测分析法要求描述程序语言的文法是()。
A.LL(1)文法
B.LR(1)文法
C.正规文法
D.右线性文法
16.进行LL(1)分析的文法首先应该消除()。
A.左递归和右递归 B.左递归和回溯 C.右递归和回溯 D.左递归
17.自下而上语法分析的主要分析动作是()。
A.推导
B. 规约
C. 移进-规约
D.匹配
18.语义分析与中间代码生成时所依据的是()。
A.语法规则
B.词法规则
C.语义规则
D.等价变换规则
19.在编译程序中产生中间代码的好处是()。
A.便于进行存储空间的组织
B. 有利于编译程序的移植
C.有利于提高目标代码的质量
D. 便于进行与机器无关的代码优化
20.终结符具有()属性。
A.传递
B.继承
C.抽象
D.综合
21.源程序中的()语句在编译时不产生中间代码或目标代码。
A.说明性
B.赋值
C.布尔表达式
D.算术表达式
22.在编译中,程序中的已知长度数组变量采用()存储分配策略。
A.最佳
B.静态
C.栈式
D.堆式
23.像C语言、Pascal语言等允许可变数组和递归调用的语言,通常采用()存储分配策略。
A. 静态
B.栈式
C.堆式
D.最佳
24.过程的display表可反映()。
A. 过程的嵌套层次
B. 过程的连接数据
C.过程的返回地址
D.过程的入口地址
25.编译程序中,实施代码优化的目的是()。
A.便于生产目标代码
B.有利于源程序的移植
C. 便于进行存储空间的组织
D.使产生的目标代码更为高效
26.下列()优化方法不是针对循环优化进行的。
A.强度削弱
B.删除归纳变量
C.删除公共子表达式
D.代码外提
27.对于一个基本块来说,正确的说法是()。
A.只有一个入口语句和一个出口语句
B. 有一个入口语句和多个出口语句
C.有多个入口语句和一个出口语句
D. 只有多个入口语句和多个出口语句
28.代码生成器的输入是()。
A.优化后的中间代码
B.符号表
C.语法树
D. A和B
29.下列()不可能是目标代码。
A.汇编指令代码
B.可重定位指令代码
C.绝对指令代码
D.中间代码
30.在目标代码生成中,关于对寄存器的选择,下列说法错误的是()。
A.合理有效地利用目标机上提供的寄存器资源将会提高所生成目标代码的质量
B.当寄存器不够用时,程序将无法运行。
C.当寄存器不够用时,需要将一个最近最少使用的寄存器内容保存起来
D.变量的值已经在寄存器中时可以直接使用
二、简答题
1.已知某布尔表达式的文法G:
<BEXPR> → <BEXPR> or <BTERM> | <BTERM>
<BTERM> → <BTERM> and <BFACTOR> | <BFACTOR>
<BFACTOR> → not <BFACTOR> | (<BEXPR>) | true | false
试给出句子not(true or false)的最左推导、最右推导和语法树。
2.给定确定的有限动机M,用状态转换图表示如图1所示。
图1:第二题第2小题图
试说明该确定的有限自动机M 能否识别字符串abaaab 、babaaa ?
3.设有文法G[S]:
S→xSx | y
G[S]定义的语言是什么?
4. 对三地址代码
x=a/(b+c)-d*(e+f)
生成目标代码(汇编代码)。
设可用寄存器为R0和R1。
a,b。