您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 编译原理习题及答案(整理后)
第一章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、b8、c9、d10、c多选解答1.b、c2.a、b、c、e填空解答是否生成目标程序2、词法分析中间代码生成3、源程序目标代码生成4、源程序目标语言第二章一、单项选择题1、文法G:S→xSx|y所识别的语言是。a.xyxb.(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*)}3、有限状态自动机能识别。a.上下文无关文法b.上下文有关文法c.正规文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立。a.若f(a)g(b),则abb.若f(a)g(b),则abc.a~b都不一定成立d.a~b一定成立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,下面是规范推导。a.SSASAAAAAaAAabAabab.SSASAAAAAAAaAbaabac.SSASAASAaSbaAbaabad.SSASaSAaSbaAbaaba9、文法G:S→b|∧(T)T→T,S|S则FIRSTVT(T)。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→E*T|TT→T+i|i句子1+2*8+6按该文法G归约,其值为。a.23B.42c.30d.1714、规范归约指。a.最左推导的逆过程b.最右推导的逆过程c.规范推导d.最左归约的逆过程二、多项选择题1、下面哪些说法是错误的。a.有向图是一个状态转换图b.状态转换图是一个有向图c.有向图是一个DFAd.DFA可以用状态转换图表示2、对无二义性文法来说,一棵语法树往往代表了。a.多种推导过程b.多种最左推导过程c.一种最左推导过程d.仅一种推导过程e.一种最左推导过程3、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法。a.该句子的最左推导与最右推导相同b.该句子有两个不同的最左推导c.该句子有两棵不同的最右推导d.该句子有两棵不同的语法树e.该句子的语法树只有一个4、有一文法G:S→ABA→aAb|εB→cBd|ε它不产生下面集合。a.{anbmcndm|n,m≥0}b.{anbncmdm|n,m0}c.{anbmcmdn|n,m≥0}d.{anbncmdm|n,m≥0}e.{anbncndn|n≥0}5、自下而上的语法分析中,应从开始分析。a.句型b.句子c.以单词为单位的程序d.文法的开始符e.句柄6、对正规文法描述的语言,以下有能力描述它。a.0型文法b.1型文法c.上下文无关文法d.右线性文法e.左线性文法三、填空题1、文法中的终结符和非终结符的交集是。词法分析器交给语法分析器的文法符号一定是,它一定只出现在产生式的部。2、最左推导是指每次都对句型中的非终结符进行扩展。3、在语法分析中,最常见的两种方法一定是分析法,另一是分析法。4、采用语法分析时,必须消除文法的左递归。5、树代表推导过程,树代表归约过程。6、自下而上分析法采用、归约、错误处理、等四种操作。7、Chomsky把文法分为种类型,编译器构造中采用和文法,它们分别产生和语言,并分别用和自动机识别所产生的语言。四、判断题1、文法S→aS|bR|ε描述的语言是(a|bc)*()R→cS2、在自下而上的语法分析中,语法树与分析树一定相同。()3、二义文法不是上下文无关文法。()4、语法分析时必须先消除文法中的左递归。()5、规范归约和规范推导是互逆的两个过程。()6、一个文法所有句型的集合形成该文法所能接受的语言。()五、简答题1、句柄2、素短语3、语法树4、归约5、推导六、问答题1、给出上下文无关文法的定义。2、文法G[S]:S→aSPQ|abQQP→PQbP→bbbQ→bccQ→cc(1)它是Chomsky哪一型文法?(2)它生成的语言是什么?3、按指定类型,给出语言的文法。L={aibj|j>i≥1}的上下文无关文法。4、有文法G:S→aAcB|BdA→AaB|cB→bScA|b(1)试求句型aAaBcbbdcc和aAcbBdcc的句柄;(2)写出句子acabcbbdcc的最左推导过程。5、对于文法G[S]:S→(L)|aS|aL→L,S|S(1)画出句型(S,(a))的语法树。(2)写出上述句型的所有短语、直接短语、句柄和素短语。6、考虑文法G[T]:T→T*F|FF→F↑P|PP→(T)|i证明T*P↑(T*F)是该文法的一个句型,并指出直接短语和句柄。单选[解答]1、选c。2、选a。3、选c。4、虽然a与b没有优先关系,但构造优先函数后,a与b就一定存在优先关系了。所以,由f(a)g)(b)或f(a)g(b)并不能判定原来的a与b之间是否存在优先关系:故选c。5、如果文法G无二义性,则最左推导是先生长右边的枝叶:对于d,如果有两个不同的是了左推导,则必然有二义性。故选a。6、选c。7、由图2-8-1的语法树和优先关系可以看出应选b。EE+FE+TPTiP#·+·+·i·#图2-8-1句型P+T+I的语法及优先关系8、规范推导是最左推导,故选d。9、由T→T,…和T→(…得FIRSTVT(T))={(,,)};由T→S得FIRSTVT(S)⊂FIRSTVT(T),而FIRSTVT(S)={b,∧,(};即FIRSTVT(T)={b,∧,(,,};因此选c。10、d11、c12、b13、b14、b多选解答1、e、a、c2、a、c、e3、b、c、d4、a、c5、b、c6、a、b、c、d、e填空解答1、空集终结符右2、最左3、自上而上自下而上4、自上而上5、语法分析6、移进接受7、42型3型上下文无关语言正规语言下推自动机有限判断解答1、对2、错3、错4、错5、错6、错简答[解答]1、句柄:一个句型的最左直接短语称为该句型的句柄。2、素短语:至少含有一个终结符的素短语,并且除它自身之外不再含任何更小的素短语。3、语法树:满足下面4个条件的树称之为文法G[S]的一棵语法树。①每一终结均有一标记,此标记为VN∪VT中的一个符号;②树的根结点以文法G[S]的开始符S标记;③若一结点至少有一个直接后继,则此结点上的标记为VN中的一个符号;④若一个以A为标记的结点有K个直接后继,且按从左至右的顺序,这些结点的标记分别为X1,X2,…,XK,则A→X1,X2,…,XK,必然是G的一个产生式。4、归约:我们称αγβ直接归约出αAβ,仅当A→γ是一个产生式,且α、β∈(VN∪VT)*。归约过程就是从输入串开始,反复用产生式右部的符号替换成产生式左部符号,直至文法开始符。5、推导:我们称αAβ直接推出αγβ,即αAβαγβ,仅当A→γ是一个产生式,且α、β∈(VN∪VT)*。如果α1α2…αn,则我们称这个序列是从α1至α2的一个推导。若存在一个从α1αn的推导,则称α1可推导出αn。推导是归约的逆过程。问答1[解答]一个上下文无关文法G是一个四元式(VT,VN,S,P),其中:●VT是一个非空有限集,它的每个元素称为终结符号;●VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=Φ;●S是一个非终结符号,称为开始符号;●P是一个产生式集合(有限),每个产生式的形式是P→α,其中,P∈VN,α∈(VT∪VN)*。开始符号S至少必须在某个产生式的左部出现一次。2[解答](1)由于产生式左部存在终结符号,且所有产生式左部符号的长度均小于等于产生式右部的符号长度,所以文法G[S]是Chomsky1型文法,即上下文有关文法。(2)按产生式出现的顺序规定优先级由高到低(否则无法推出句子),我们可以得到:SabQabcSaSPQaabQPQaabPQQaabbQQaabbcQaabbccSaSPQaaSPQPQaaabQPQPQaaabPQQPQaaabPQPQQaaaPPQQQaaabbPqqqaaabbQQQaaabbbcQQaaabbbccQaaabbbccc……于是得到文法G[S]生成的语言L={anbncn|n≥1}3【解答】(1)由L={aibj|j>i≥1}知,所求该语言对应的上下文无关文法首先应有S→aSb型产生式,以保证b的个数不少于a的个数;其次,还需有S→Sb或S→bS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法G[S]为:G[S]:S→aSb|Sb|b4【解答】(1)分别画出对应两句型的语法树,如图2-8-2所示句柄:AaBBdTT*FF↑PP(T)T*F图2-8-4句型T*P↑(T*F)的语法树S(L)L,SS(L)Sa图2-8-3句型(S,(a))的语法树图2-8-2语法树(2)句子acabcbbdcc的最左推导如下:SaAcBaAaBcBacaBcBacabcBacabcbScAacabcbBdcAaca
本文标题:编译原理习题及答案(整理后)
链接地址:https://www.777doc.com/doc-4887128 .html