编译原理习题及答案(整理后)
- 格式:doc
- 大小:229.50 KB
- 文档页数:17
编译原理试题及答案一、选择题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.一个正规语言只能对应(B)A 一个正规文法B 一个最小有限状态自动机2.文法G[A]:A→εA→aB B→Ab B→a是(A)A 正规文法B 二型文法3.下面说法正确的是(A)A 一个SLR(1)文法一定也是LALR(1)文法B 一个LR(1)文法一定也是LALR(1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)A 必要条件B 充分必要条件5.下面说法正确的是(B)A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是(A)A 归约速度快B 对文法限制少7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(A)A Lex是一个词法分析器的生成器B Yacc是一个语法分析器9.下面说法正确的是(A)A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C)。
A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A)是一种典型的解释型语言。
A.BASIC B.C C.FORTRAN D.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序14.(C)不是编译程序的组成部分。
A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。
A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。
编译原理复习题及答案一、选择题1.一个正规语言只能对应( B )A 一个正规文法B 一个最小有限状态自动机2.文法G[A] :A→εA→aB B→Ab B→a是( A )A 正规文法B 二型文法3.下面说法正确的是( A ) A一个SLR(1)文法一定也是LALR (1)文法B一个LR (1)文法一定也是LALR (1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL (1)文法的( A )A 必要条件B 充分必要条件5.下面说法正确的是( B )A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是( A )A 归约速度快B 对文法限制少7.一个LR (1)文法合并同心集后若不是LALR (1)文法( B )A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/ 归约冲突8.下面说法正确的是( A )A Lex 是一个词法分析器的生成器B Yacc 是一个语法分析器9.下面说法正确的是( A )A一个正规文法也一定是二型文法B一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C) 。
A 、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A) 是一种典型的解释型语言。
A .BASICB .CC.FORTRAN D.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B) 完成的。
A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B) A .源程序B .目标程序C.连接程序 D .解释程序14.(C) 不是编译程序的组成部分。
A. 词法分析程序B. 代码生成程序C.设备管理程序D. 语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优目标代码生成等六个部分,还应包括(C)A .模拟执行器B .解释器C.表格处理和出错处理D .符号执行器16.编译程序绝大多数时间花在(D) A .出错处理B.词法分析C.目标代码生成D.表格管理17.源程序是句子的集A. 线性表(B) 可以较好地反映句子的结构。
第2章形式语言基础2.2 设有文法G[N]: N -> D | NDD -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9(1)G[N]定义的语言是什么?(2)给出句子0123和268的最左推导和最右推导。
解答:(1)L(G[N])={(0|1|2|3|4|5|6|7|8|9)+} 或L(G[N])={α| α为可带前导0的正整数}(2)0123的最左推导:N ⇒ ND ⇒ NDD ⇒ NDDD ⇒ DDDD ⇒ 0DDD ⇒ 01DD ⇒ 012D ⇒ 0123 0123的最右推导:N ⇒ ND ⇒ N3 ⇒ ND3 ⇒ N23 ⇒ ND23 ⇒ N123 ⇒ D123 ⇒ 0123268的最左推导:N ⇒ ND ⇒ NDD ⇒ DDD ⇒ 2DDD ⇒ 26D ⇒ 268268的最右推导:N ⇒ ND ⇒ N8 ⇒ ND8 ⇒ N68 ⇒ D68 ⇒ 2682.4 写一个文法,使其语言是奇数的集合,且每个奇数不以0开头。
解答:首先分析题意,本题是希望构造一个文法,由它产生的句子是奇数,并且不以0开头,也就是说它的每个句子都是以1、3、5、7、9中的某个数结尾。
如果数字只有一位,则1、3、5、7、9就满足要求,如果有多位,则要求第1位不能是0,而中间有多少位,每位是什么数字(必须是数字)则没什么要求,因此,我们可以把这个文法分3部分来完成。
分别用3个非终结符来产生句子的第1位、中间部分和最后一位。
引入几个非终结符,其中,一个用作产生句子的开头,可以是1-9之间的数,不包括0,一个用来产生句子的结尾,为奇数,另一个则用来产生以非0整数开头后面跟任意多个数字的数字串,进行分解之后,这个文法就很好写了。
N -> 1 | 3 | 5 | 7 | 9 | BNB -> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | B02.7 下面文法生成的语言是什么?G1:S->ABA->aA| εB->bc|bBc G2:S->aA|a A->aS解答:B ⇒ bcB ⇒ bBc⇒ bbccB ⇒ bBc⇒ bbBcc ⇒ bbbccc……A ⇒εA ⇒ aA ⇒ aA ⇒ aA ⇒ aaA ⇒ aa……∴S ⇒ AB ⇒ a m b n c n , 其中m≥0,n≥1即L(G1)={ a m b n c n | m≥0,n≥1} S ⇒ aS ⇒ aA ⇒ aaS ⇒ aaaS ⇒ aA ⇒ aaS ⇒ aaaA ⇒aaaaS ⇒ aaaaa ……∴S ⇒ a2n+1 , 其中n≥0即L(G2)={ a2n+1 | n≥0}2.11 已知文法G[S]: S->(AS)|(b)A->(SaA)|(a)请找出符号串(a)和(A((SaA)(b)))的短语、简单短语和句柄。
第7 题证明下述文法G[〈表达式〉]是二义的。
〈表达式〉∷=a|(〈表达式〉)|〈表达式〉〈运算符〉〈表达式〉〈运算符〉∷=+|-|*|/答案:可为句子a+a*a 构造两个不同的最右推导:最右推导1 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉a=>〈表达式〉* a=>〈表达式〉〈运算符〉〈表达式〉* a=>〈表达式〉〈运算符〉a * a=>〈表达式〉+ a * a=>a + a * a最右推导2 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉a=>〈表达式〉〈运算符〉〈表达式〉* a=>〈表达式〉〈运算符〉a * a=>〈表达式〉+ a * a=>a + a * a第8 题文法G[S]为:S→Ac|aB A→ab B→bc该文法是否为二义的?为什么?答案:对于串abc(1)S=>Ac=>abc (2)S=>aB=>abc即存在两不同的最右推导。
所以,该文法是二义的。
或者:对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。
第9 题考虑下面上下文无关文法:S→SS*|SS+|a(1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。
(2)G[S]的语言是什么?答案:(1)此文法生成串aa+a*的最右推导如下S=>SS*=>SS*=>Sa*=>SS+a*=>Sa+a*=>aa+a*(2)该文法生成的语言是:*和+的后缀表达式,即逆波兰式。
第10 题文法S→S(S)S|ε(1) 生成的语言是什么?(2) 该文法是二义的吗?说明理由。
答案:(1)嵌套的括号(2)是二义的,因为对于()()可以构造两棵不同的语法树。
第11 题令文法G[E]为:E→T|E+T|E-T T→F|T*F|T/F F→(E)|i证明E+T*F 是它的一个句型,指出这个句型的所有短语、直接短语和句柄。
1第2章 习题2-1 设有字母表A 1 ={a,b,c,…,z},A 2={0,1,={0,1,……,9},9},试回答下列问题:,试回答下列问题:,试回答下列问题:(1) 字母表A 1上长度为2的符号串有多少个?的符号串有多少个? (2) 集合A 1A 2含有多少个元素?含有多少个元素?(3) 列出集合A 1(A 1∪A 2)*中的全部长度不大于3的符号串。
的符号串。
2-2 试分别构造产生下列语言的文法:试分别构造产生下列语言的文法:试分别构造产生下列语言的文法: (1){a nb n|n≥0};|n≥0}; (2){a n b m c p |n,m,p≥0};|n,m,p≥0};(3){a n#b n|n≥0}∪|n≥0}∪{c {c n#d n|n≥0};|n≥0};(4){w#w r # | w ∈{0,1}*,w r 是w 的逆序排列的逆序排列 } }; (5)任何不是以0打头的所有奇整数所组成的集合;的集合;(6)所有由偶数个0和偶数个1所组成的符号串的集合。
号串的集合。
2-3 试描述由下列文法所产生的语言的特点:试描述由下列文法所产生的语言的特点: (1)S→10S0)S→10S0 S→aA S→aA A→bA A→bA A→a A→a (2)S→SS S→1A0S→1A0 A→1A0A→1A0A→ε (3)S→1A )S→1A S→B0S→B0 A→1A A→1A A→C A→C B→B0B→B0 B→C B→C C→1C0C→1C0C→ε(4)S→aSS )S→aSS S→a S→a 2-4 试证明文法试证明文法试证明文法 S →AB|DC A →aA|a B →bBc|bc C →cC|c D →aDb|ab为二义性文法。
为二义性文法。
2-5 对于下列的文法对于下列的文法对于下列的文法 S →AB|c A →bA|a B →aSb|c试给出句子bbaacb 的最右推导,并指出各步直接推导所得句型的句柄;指出句子的全部短语。
编译原理试题及答案一、选择题1. 下列哪个不是编译器所需的基本处理步骤?A. 词法分析B. 语法分析C. 语义分析D. 目标代码优化答案:D2. 编译器的主要功能是将高级语言程序翻译成什么形式?A. 汇编语言B. 机器语言C. 中间代码D. 高级语言答案:B3. 下列哪个不属于编译器的后端阶段?A. 代码优化B. 目标代码生成C. 词法分析D. 目标程序优化答案:C二、填空题1. 编译器的输入是源程序,输出是目标程序。
2. 目标代码生成阶段的任务是将中间代码翻译成汇编语言或机器语言。
3. 语法分析阶段的输出是抽象语法树。
三、简答题1. 请简述编译器的工作原理。
编译器的工作原理主要包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。
词法分析阶段将源程序分解成单词(也称为词法单元),语法分析阶段根据语法规则将词法单元组织成一个语法树,语义分析阶段对语法树进行语义检查,中间代码生成阶段将语法树转化为中间代码,代码优化阶段对中间代码进行优化,最后目标代码生成阶段将中间代码转化为机器语言或汇编语言。
2. 请说明词法分析的作用是什么,如何实现?词法分析的作用是将源程序中的字符序列转化为单词序列,也就是将一段代码切分成不同的词法单元。
实现词法分析可以通过有限状态自动机来处理输入字符序列,并根据一系列规则将字符序列划分为词法单元。
常用的方法有手写分析器和使用词法分析生成器等。
3. 简要介绍一下代码优化的目的和方法。
代码优化的目的是通过对程序的中间代码或目标代码进行调整,以达到提高程序性能、减小程序的空间占用或减小程序的执行时间等目的。
代码优化的方法主要包括局部优化和全局优化两种。
局部优化主要针对某个代码块进行优化,如常量折叠、公共子表达式消除等。
全局优化则考虑整个程序,对程序的整体结构进行优化,如循环优化、函数内联等。
总结:编译原理试题及答案主要涵盖了选择题、填空题和简答题三个部分。
其中选择题主要考察对编译器基本处理步骤和功能的理解。
第一章练习题(绪论)一、选择题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)。
《编译原理》习题答案一.单项选择题(本大题共164小题,每小题2分)1>如果一个编译程序能产生不同于其宿主机的机器代码,则称它为(2、( C )不是编译程序的组成部分。
3、现代多数实用编译程序所产生的目标代码都是一种可重定位的指令代码,在运行前必须借助于一个(C )把各个目标模块,包括系统提供的库模块连接在一起,确定程序变暈或常数在主存屮的位置,装入内存屮制定 的起始地址,使之成为一个可运行的绝对指令代码的程序。
A 、重定位程序B 、解释程序C 、连接装配程序D 、诊断程序; 6、 把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A 、编译器B 、汇编器C 、解释器D 、预处理器7、 用高级语言编写的程序经编译后产生的程序叫(B)A 、源程序B 、目标程序C 、连接程序D 、解释程序8、 文法 G : S->b| A(T)T-T,S|S 则 FTRSTVT(T) (C)。
A 、{b, A, (}B 、{b, A,)}C 、{b, A, (, , }D 、{b, A,),, }9、 通常一个编译程序屮,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成 等六个部分,还应包括(0。
B 、解释器C 、表格处理和出错处理D 、符号执行器C )oA 、诊断编译程序 B.优化编译程序C 、交叉编译程序 [人 可变目标编译程序A 、词法分析程序B 、代码生成程序C 、设备管理程序D 、 语法分析程序4、 产生正则语言的文法为(D)。
A 、0型B 、1型 5、 (A)是一种典型的解释型语言。
卜、BASIC B 、 CC 、2型 C 、 FORTRAND 、3型[)、PASCALA.模拟执行器10、编译程序绝大多数时间花在(D)上。
A、出错处理B、词法分析C、日标代码生成D、表格管理11、设文法为:S-SAlAA-^a b则对句子aba,下面(D)是规范推导。
A、S=>SA=>SAA=>AAA=>aAA=>abA=>abaB、S^>SA=>SAA^>AAA=>AAa=>Aba=>abaC、S=>SA=>SAA=>SAa=>Sba=>Abaz=>abaD、S=>SA=>Sa=>SAa=>Sba=>Aba=>aba12、Chomsky把文法分成四种类型,其中,(D )也称正规文法A、0型B、1型C、2型D、3型13、源程序是句子的集合,(B)可以较好地反映句子的结构。
编译原理试题及答案一、单项选择题(每题2分,共20分)1. 编译器的主要功能是将()转换成目标代码。
A. 汇编语言B. 高级语言C. 机器语言D. 伪代码答案:B2. 语法分析阶段的任务是()。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:B3. 下列哪个算法是用于构建语法分析树的?()A. LL(1)分析B. LR(1)分析C. 语法制导翻译D. 语法制导翻译方案答案:A4. 在编译原理中,一个文法的产生式A→α表示()。
A. A可以被α替换B. A可以被α推导C. A可以被α翻译D. A可以被α解释答案:B5. 一个语言的语法分析树的根节点对应于()。
A. 程序B. 程序的输入C. 程序的输出D. 程序的语法答案:D6. 编译器的语义分析阶段主要处理()。
A. 词法分析B. 语法分析C. 类型检查D. 代码优化答案:C7. 编译器的代码优化阶段主要进行()。
A. 词法分析B. 语法分析C. 类型检查D. 指令选择答案:D8. 编译器的代码生成阶段主要进行()。
A. 词法分析B. 语法分析C. 类型检查D. 指令序列生成答案:D9. 编译器的哪个阶段负责处理变量的存储分配?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D10. 编译器的哪个阶段负责处理宏展开?()A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:A二、多项选择题(每题3分,共15分)1. 编译器的前端包括()。
A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:ABC2. 编译器的后端包括()。
A. 词法分析B. 语法分析C. 代码优化D. 代码生成答案:CD3. 编译器的语义分析阶段可能包括()。
A. 类型检查B. 作用域解析C. 存储分配D. 代码优化答案:ABC4. 编译器的代码优化阶段可能包括()。
A. 常量折叠B. 死代码消除C. 循环不变代码外提D. 词法分析答案:ABC5. 编译器的代码生成阶段可能包括()。
编译原理试题及答案一、选择题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、将编译程序分成若干个“遍”就是为了。
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、(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步或多步推导产生得文法符号序列就是。
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、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|∧(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、23 B、42 c、30 d、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、{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、对正规文法描述得语言,以下有能力描述它。
a、0型文法b、1型文法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、文法G[S]:S→aSPQ|abQQP→PQbP→bbbQ→bccQ→cc(1)它就是Chomsky哪一型文法?(2)它生成得语言就是什么?3、按指定类型,给出语言得文法。
L={a i b j|j>i≥1}得上下文无关文法。
4、有文法G:S→aAcB|BdA→AaB|cB→bScA|b(1)试求句型aAaBcbbdcc与aAcbBdcc得句柄;(2)写出句子acabcbbdcc得最左推导过程。
5、对于文法G[S]:S→(L)|aS|a L→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。
8、规范推导就是最左推导,故选d。
9、由T→T,…与T→(…得FIRSTVT(T))={(,,)};由T→S得FIRSTVT(S)⊂FIRSTVT(T),而FIRSTVT(T)={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填空解答1、空集终结符右2、最左3、自上而上自下而上4、自上而上5、语法分析6、移进接受7、4 2 型3型上下文无关语言正规语言下推自动机有限判断解答1、对2、错3、错4、错5、错6、错简答[解答]1、句柄:一个句型得最左直接短语称为该句型得句柄。
2、素短语:至少含有一个终结符得素短语,并且除它自身之外不再含任何更小得素短语。
3、语法树:满足下面4个条件得树称之为文法G[S]得一棵语法树。
①每一终结均有一标记,此标记为V N∪V T中得一个符号;②树得根结点以文法G[S]得开始符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)*。