编译原理期末总复习题(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八节习题一、单项选择题
1、将编译程序分成若干个“遍”是为了 b 。
a.提高程序的执行效率
b.使程序的结构更加清晰
c.利用有限的机器内存并提高机器的执行效率
d.利用有限的机器内存但降低了机器的执行效率
2、构造编译程序应掌握 d 。
a.源程序b.目标语言
c.编译方法d.以上三项都是
3、变量应当 c 。
a.持有左值b.持有右值
c.既持有左值又持有右值d.既不持有左值也不持有右值
4、编译程序绝大多数时间花在 b 上。
a.出错处理b.词法分析
c.目标代码生成d.管理表格
5、 d 不可能是目标代码。
a.汇编指令代码b.可重定位指令代码
c.绝对指令代码d.中间代码
6、使用 a 可以定义一个程序的意义。
a.语义规则b.词法规则
c.产生规则d.词法规则
7、词法分析器的输入是 a 。
a.单词符号串b.源程序
c.语法单位d.目标程序
8、中间代码生成时所遵循的是- d 。
a.语法规则b.词法规则
c.语义规则d.等价变换规则
9、编译程序是对 d 。
a.汇编程序的翻译b.高级语言程序的解释执行
c.机器语言的执行d.高级语言的翻译
10、语法分析应遵循 b 。
a.语义规则b.语法规则
c.构词规则d.等价变换规则
解答
1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b。
2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d。
3、对编译而言,变量既持有左值又持有右值,故选c。
4、编译程序打交道最多的就是各种表格,因此选d。
5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d。
6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。因此选a。
7、b 8、c 9、d 10、c
二、多项选择题
1、编译程序各阶段的工作都涉及到bc 。
a.语法分析b.表格管理c.出错处理
d.语义分析e.词法分析
2、编译程序工作时,通常有abce 阶段。
a.词法分析b.语法分析语义分析c.中间代码生成中间代码优化d.语义检查e.目标代码生成
解答
1.b、c 2. a、b、c、e
三、填空题
1、解释程序和编译程序的区别在于是否生成目标程序(解释不产生目标程序,边翻译边执行。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析语义分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为目标程序程序。
4、编译程序是指将源程序程序翻译成目标程序程序的程序。
解答
是否生成目标程序2、词法分析中间代码生成3、源程序目标代码生成4、源程序目
标语言
一、单项选择题
1、文法G:S→xSx|y所识别的语言是 c 。
a. xyx
b. (xyx)*
c. x n yx n(n≥0)
d. x*yx*(是指多个x)
2、文法G描述的语言L(G)是指ab 。
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>b
b.若f(a) c. a~b都不一定成立 d. a~b一定成立 5、如果文法G是无二义的,则它的任何句子α。 a. 最左推导和最右推导对应的语法树必定相同 b. 最左推导和最右推导对应的语法树可能不同 c. 最左推导和最右推导必定相同 d. 可能存在两个不同的最左推导,但它们对应的语法树相同 6、由文法的开始符经0步或多步推导产生的文法符号序列是。 a. 短语 b.句柄 c. 句型 d. 句子 7、文法G:E→E+T|T T→T*P|P P→(E)|I 则句型P+T+i的句柄和最左素短语为。 +T和i b. P和P+T c. i和P+T+i 和T 8、设文法为:S→SA|A A→a|b 则对句子aba,下面是规范推导。 a. SSASAAAAAaAAabAaba b. SSASAAAAAAAaAbaaba c. SSASAASAaSbaAbaaba d. SSASaSAaSbaAbaaba 9、文法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|T T→T+i|i 句子1+2*8+6按该文法G归约,其值为。 a. 23 B. 42 c. 30 d. 17 14、规范归约指。 a. 最左推导的逆过程 b. 最右推导的逆过程 c. 规范推导 d. 最左归约的逆过程 [解答] 1、选c。 2、选a。 3、选c。 4、虽然a与b没有优先关系,但构造优先函数后,a与b就一定存在优先关系了。所以,由f(a)>g)(b)或f(a) 5、如果文法G无二义性,则最左推导是先生长右边的枝叶:对于d,如果有两个不同的是了左推导,则必然有二义性。故选a。 6、选c。 7、由图2-8-1的语法树和优先关系可以看出应选b。 8、规范推导是最左推导,故选d。 9、由T→T,…和T→(…得FIRSTVT(T))={(,,)}; 由T→S得FIRSTVT(S)FIRSTVT(T),而FIRSTVT(S)={b,∧,(};即 FIRSTVT(T)={b,∧,(,,};因此选c。 10、d 11、c 12、b 13、b 14、b 二、多项选择题 1、下面哪些说法是错误的。 a. 有向图是一个状态转换图 b. 状态转换图是一个有向图 c.有向图是一个DFA 可以用状态转换图表示 2、对无二义性文法来说,一棵语法树往往代表了。 a. 多种推导过程 b. 多种最左推导过程 c.一种最左推导过程 d.仅一种推导过程 e.一种最左推导过程 3、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法。 a. 该句子的最左推导与最右推导相同