《编译原理》习题解答

合集下载

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案一、选择题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、将编译程序分成若干个“遍”是为了。

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。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第一章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。

编译原理一些习题答案

编译原理一些习题答案

第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.1.1 :翻译和编译的区别?答:翻译通常指自然语言的翻译,将一种自然语言的表述翻译成另一种自然语言的表述,而编译指的是将一种高级语言翻译为机器语言(或汇编语言)的过程。

1.1.2 :简述编译器的工作过程?答:编译器的工作过程包括以下三个阶段:(1) 词法分析:将输入的字符流分解成一个个的单词符号,构成一个单词符号序列;(2) 语法分析:根据语法规则分析单词符号序列中各个单词之间的关系,确定它们的语法结构,并生成抽象语法树;(3) 代码生成:根据抽象语法树生成目标程序(机器语言或汇编语言),并输出执行文件。

1.2.1 :解释器和编译器的区别?答:解释器和编译器的主要区别在于执行方式。

编译器将源程序编译成机器语言或汇编语言等,在运行时无需重新编译,程序会一次性运行完毕;而解释器则是边翻译边执行,每次执行都需要进行一次翻译,一次只执行一部分。

1.2.2 :Java语言采用的是解释执行还是编译执行?答:Java一般是编译成字节码的形式,然后由Java虚拟机(JVM)进行解释执行。

但是,Java也有JIT(即时编译器)的存在,当某一段代码被多次执行时,JIT会将其编译成机器语言,提升代码的执行效率。

第二章2.1.1 :使用BNF范式定义简单的加法表达式和乘法表达式答:<加法表达式> ::= <加法表达式> "+" <乘法表达式> | <乘法表达式><乘法表达式> ::= <乘法表达式> "*" <单项式> | <单项式><单项式> ::= <数字> | "(" <加法表达式> ")"2.2.3 :什么是自下而上分析?答:自下而上分析是指从输入字符串出发,自底向上构造推导过程,直到推导出起始符号。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题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. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。

编译原理习题答案

编译原理习题答案

第三章
1.P64,8(1),(3)
给出正规表达式: 以01结尾的二进制数串 分析题意,要求的是二进制小,即由0和1构成的串 ,并且必须以01结尾,所以本题可以分两部分去完 成,一部分实现由0和1构成的任意串,一部分即01 ,然后将它们连接到一起就可以了,所以本题的解 答是:(0|1)*01。
(3)包含奇数个1或奇数个0的二进制数串。 本题求二进制串,并且要求包含奇数个0或奇数个1,由于0和1都可以在二 进制串中任何地方出现,所以本题只需要考虑一种情况,另外一种情况也可 以类似求得。考虑包含奇数个0的字符串:由于只关心0的个数的奇偶数,我 们可以把二进制串分成多段来考虑,第1段为二进制串的开始到第1个0为止 ,这一段包含1个0,并且0的前面有0个或多个1,对于剩下的二进制串按 照每段包含两个0的方式去划分,即以0开始,以0结尾,中间可以有0个或 多个1,和果一个二进制串被这样划分完后,剩下的部分如果全部是全1串( 这些全1串在前面划分的串之间或最后),则该二进制串就具有奇数个0,所 以该二进制串可以这样描述:以第1段(1*0)开始,后面由全1串(1*)以及包 含两个0的串(01*0)组成,所以包含奇数个0的正规表达式为 :1*0(1|01*0)*,本题的解答则是:1*0(1|01*0)*|0*1(0|10*1)*。
最后E.turelist={1,8},E.falelish={4,5,7}
P218.7 : 把下面的语句翻译成四元式序列: While A<C and B<D do If A=1 then C:=C+1 else while A<=D do A:=A+2;.
(1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) (j<,A,C,3) (j,-,-,16) (j<,B,D,5) (j,-,-,16) (j=,A,1,7) (j,-,-,10) (+,C,1,T1) (:=,T1,-,C) (j,-,-,1) (j<=,A,D,12) (j,-,-,1) (+,A,2,T2) (:=,T2,-,A) (j,-,-,10) (j,-,-,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.解:源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:C语言的关键字有:auto break case char const continuedefault do double else enum extern float for goto if int longregister return short signed sizeof static struct switch typedef union unsigned void volatile while。

上述关键字在C语言中均为保留字。

4.解:C语言中括号有三种:{},[],()。

其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。

C语言中无END关键字。

逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:(a,b,c,d)的值为d)。

5.略第二章习题解答1.(1)答:26*26=676(2)答:26*10=260(3)答:{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个2.构造产生下列语言的文法(1){a n b n|n≥0}解:对应文法为G(S) = ({S},{a,b},{ S→ε| aSb },S)(2){a n b m c p|n,m,p≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)(3){a n # b n|n≥0}∪{c n # d n|n≥0}解:对应文法为G(S) = ({S,X,Y},{a,b,c,d,#}, {S→X,S→Y,X→aXb|#,Y→cYd|# },S)(4){w#w r# | w?{0,1}*,w r是w的逆序排列}解:G(S) = ({S,W,R},{0,1,#}, {S→W#, W→0W0|1W1|# },S)(5)任何不是以0打头的所有奇整数所组成的集合解:G(S) = ({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e, I→J|2|4|6|8, Jà1|3|5|7|9},S)(6)所有偶数个0和偶数个1所组成的符号串集合解:对应文法为S→0A|1B|e,A→0S|1C B→0C|1S C→1A|0B3.描述语言特点(1)S→10S0S→aAA→bAA→a解:本文法构成的语言集为:L(G)={(10)n ab m a0n|n, m≥0}。

(完整版)编译原理习题及答案(整理后)

(完整版)编译原理习题及答案(整理后)

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.利用有限的机器内存但降低了机器的执行效率

编译原理习题参考答案

编译原理习题参考答案

编译原理习题参考答案第⼆章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) 请简要描述编译器的主要工作流程。

答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。

在词法分析阶段,编译器将输入的源代码转化为一个个记号流。

接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。

在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。

中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共10分)1. 在编译原理中,词法分析器的主要任务是什么?A. 将源代码转换为中间代码B. 识别源代码中的词法单元C. 进行语法分析D. 优化代码答案:B2. 下列哪个选项不是编译器的组成部分?A. 词法分析器B. 语法分析器C. 运行时环境D. 语义分析器答案:C3. 编译器的哪个阶段负责检查变量是否已经声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 在编译原理中,哪些技术常用于错误恢复?A. 预测分析表和LR分析B. 递归下降分析和LR分析C. 预测分析表和递归下降分析D. 预测分析表和错误恢复算法答案:D5. 编译器中用于优化代码的阶段是哪一个?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D二、填空题(每题2分,共10分)1. 编译器的前端包括词法分析、语法分析和________。

答案:语义分析2. 在编译过程中,________分析器负责将源代码的逻辑结构转换为一种内部表示形式。

答案:语法3. 编译器的后端包括________、寄存器分配和代码生成。

答案:中间代码生成4. 编译器中的________分析用于检查程序中的类型错误。

答案:语义5. 编译器的________阶段负责将高级语言代码转换为目标机器代码。

答案:代码生成三、简答题(每题10分,共20分)1. 简述编译器的主要功能。

答案:编译器的主要功能包括将高级语言编写的源代码转换成目标机器可以执行的机器代码,同时进行错误检测、代码优化等。

它通常包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段。

2. 描述编译过程中的语法分析阶段的主要任务。

答案:语法分析阶段的主要任务是检查源代码是否符合语言的语法规则,构建抽象语法树(AST),并进行语法制导的语义分析。

这一阶段使用诸如自顶向下的递归下降分析、自底向上的移进-规约分析等技术来识别语言结构,并为后续的语义分析和代码生成打下基础。

《编译原理》习题答案.doc

《编译原理》习题答案.doc

《编译原理》习题答案一.单项选择题(本大题共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. 编译器的代码生成阶段可能包括()。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将高级语言源程序转换成机器语言目标程序。

(对/错)答案:对2. 编译过程中,词法分析器的主要任务是识别源程序中的各种词法单位。

(对/错)答案:对3. 在语法分析阶段,编译器使用的数据结构是栈。

(对/错)答案:错4. 语义分析的主要目的是检查程序的语法结构是否正确。

(对/错)答案:错5. 编译器的优化阶段可以提高目标程序的执行效率。

(对/错)答案:对6. 编译器的代码生成阶段负责将中间代码转换为目标代码。

(对/错)答案:对7. 编译器的运行时系统包括内存管理、输入输出处理等功能。

(对/错)答案:对8. 编译器的前端主要负责源程序的分析,后端负责目标代码的生成。

(对/错)答案:对9. 编译器的词法分析阶段不涉及对标识符的识别。

(对/错)答案:错10. 编译器的语法分析阶段可以识别出所有的语法错误。

(对/错)答案:对二、填空题(每题2分,共20分)1. 编译器在进行语法分析时,通常采用________算法。

答案:LL(1)或LR(1)2. 编译器在语义分析阶段,需要对变量的________进行检查。

答案:作用域和生命周期3. 编译器在代码优化阶段,常用的优化技术包括________和循环优化。

答案:常量传播4. 编译器在目标代码生成阶段,需要考虑________的约束。

答案:目标机器5. 编译器的运行时系统包括________、内存管理、输入输出处理等。

答案:程序启动和异常处理6. 编译器在词法分析阶段,需要识别的词法单位包括________、标识符、常量等。

答案:关键字7. 编译器在语法分析阶段,使用的分析表可以是________表或ACTION 表。

答案:GOTO8. 编译器在语义分析阶段,需要对表达式的________进行计算。

答案:类型9. 编译器的代码生成阶段,需要将中间代码转换为________代码。

答案:目标机器10. 编译器的运行时系统在内存管理中,需要处理________和垃圾收集。

(完整版)编译原理课后习题答案

(完整版)编译原理课后习题答案

(完整版)编译原理课后习题答案第一章1.典型的编译程序在逻辑功能上由哪几部分组成?答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。

2. 实现编译程序的主要方法有哪些?答:主要有:转换法、移植法、自展法、自动生成法。

3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?答:编译法、解释法。

4. 编译方式和解释方式的根本区别是什么?答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。

第二章1.乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关系如何?答:1)0型文法、1型文法、2型文法、3型文法。

2)2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。

答:Z→SME | BS→1|2|3|4|5|6|7|8|9M→ε | D | MDD→0|SB→2|4|6|8E→0|B3. 设文法G为:N→ D|NDD→ 0|1|2|3|4|5|6|7|8|9请给出句子123、301和75431的最右推导和最左推导。

答:N?ND?N3?ND3?N23?D23?123N?ND?NDD?DDD?1DD?12D?123N?ND?N1?ND1?N01?D01?301N?ND?NDD?DDD?3DD?30D?301N?ND?N1?ND1?N31?ND31?N431?ND431?N5431?D5431?7 5431N?ND?NDD?NDDD?NDDDD?DDDDD?7DDDD?75DDD?754 DD?7543D?75431 4. 证明文法S→iSeS|iS| i是二义性文法。

答:对于句型iiSeS存在两个不同的最左推导:S?iSeS?iiSesS?iS?iiSeS所以该文法是二义性文法。

编译原理习题集与答案解析(整理后)

编译原理习题集与答案解析(整理后)

编译原理习题集与答案解析(整理后)第⼀章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。

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

《编译原理》习题解答:第一次作业:P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为目标程序或目标代码;将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;编译程序是将高级语言写的源程序翻译成目标语言的程序。

关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。

P14 3、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。

具体功能见P7-9。

P14 4、语法分析和语义分析有什么不同?试举例说明。

答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量x:= y 符合语法规则就通过。

语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。

P15 5、编译程序分遍由哪些因素决定?答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。

补充:1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。

对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。

补充:2、赋值语句:A:= 5 * C的语法和语义指的是什么?答:语法分析将检查该语句是否符合赋值语句规则,语义是指将 5 * C 的结果赋值为 A 。

第二次作业:P38 1、设T1={11,010},T2={0,01,1001},计算:T2T1,T1*,T2+。

T2T1={011,0010,0111,01010,100111,1001010}T1*={ε,11,010,1111,11010,01011,010010……}T2+={0,01,1001,00,001,01001,010,0101……}P38 3、令A={0,1,2},写出集合A+和A*的七个最短符号串。

A+:0,1,2,00,01,02,10(有多种可能)A*:ε,0,1,2,00,01,02(有多种可能)P38 5、试证明:A+=A A*=A*A。

证明:A+=A1∪A2∪……∪A n∪……A*=A0(即{ε})∪A+A A*=A(A0∪A+)=A∪A+=A+=A+∪A=(A0∪A+)A=A*A(证毕)P38 7、设有文法G[S]:S∷=AA∷=B | IF A THEN A ELSE AB∷=C | B+C | +CC∷=D | C*D | *DD∷=X | (A) | -D 试写出V N和V T。

V N={S,A,B,C,D}V T={IF,THEN,ELSE,+,*,X,(,),-}P38-39 8、设有文法G[S]:S∷=aAbA∷=BcA | BB∷=idt |ε试问下列符号串(1)aidtcBcAb (3)ab (5)aidtcidtcidtb 是否为该文法的句型或句子。

(1)S⇒aAb⇒aBcAb⇒aidtcAb⇒aidtcBcAb 句型但不是句子;(3)S⇒aAb⇒aBb⇒aεb⇒ab 是句型也是句子;(5)S⇒aAb⇒aBcAb⇒aidtcAb⇒aidtcBcAb⇒aidtcidtcBb⇒aidtcidtcidtb句型也是句子。

P39 10、给定文法:S∷=aB | bAA∷=aS | bAA | aB∷=bS |aBB|b 该文法所描述的语言是什么?L(G)={相同个数的a与b以任意次序连接而成的非空符号串}。

P39 11、试分别描述下列文法所产生的语言(文法开始符号为S):(1)S∷=0S | 01(2)S∷=aaS | bc(1)L(G)={0n1| n≥1};(2)L(G)={a2n bc | n≥0}。

P39 12、试分别构造产生下列语言的文法:(1){ ab n a | n=0,1,2,3……}(3){ aba n | n≥1}(5){ a n b m c p | n,m,p≥0}(1)G={V N,V T,P,S},V N={S,A },V T={a,b},P:S∷=aAaA∷=bA |ε(3)G={V N,V T,P,S},V N={S,A },V T={a,b},P:S∷=abAA∷=aA |ε或A∷=aA | a(5)①G={V N,V T,P,S},V N={S,A ,B,C},V T={a,b,c},P:S∷=ABCA∷=aA |εB∷=bB |εC∷=cC |ε②G={V N,V T,P,S},V N={S,T,C},V T={a,b,c},P:S∷=TCT∷=aTb |εC∷=cC |ε③G={V N,V T,P,S},V N={S },V T={a,b,c},P:S∷=aS | bS | cS |ε第三次作业:P39 15. 设文法G规则为:S::=ABB::=a|SbA::=Aa|bB对下列句型给出推导语法树,并求出其句型短语,简单短语和句柄。

(2)baabaab (3)bBABb(2)SA BA a Sb B A Ba b B aa句型baabaab的短语a, ba, baa, baab,简单短语a,句柄 aS(3)A Bb BS bA B短语bB, AB, ABb,简单短语bB, AB,句柄bBP40 18. 分别对i+i*i 和i+i+i中每一个句子构造两棵语法树,从而证明下述文法G[<表达式>]是二义的。

<表达式>::=i|(<表达式>)|<表达式><运算符><表达式><运算符>::=+|-|*|/1.i+i*i<表达式><表达式> <运算符> <表达式>i + <表达式> <运算符> <表达式>i * i<表达式><表达式> <运算符> <表达式><表达式> <运算符> <表达式> * ii + i由于句子i+i*i可构造两棵不同的语法树,所以证明该文法是二义的。

2. i+i+i<表达式><表达式> <运算符> <表达式>i + <表达式> <运算符> <表达式>i + i<表达式><表达式> <运算符> <表达式><表达式> <运算符> <表达式> + ii + i由于句子i+i+i可构造两棵不同的语法树,所以证明该文法是二义的。

P40 19. 证明下述文法是二义的1) S::=iSeS|iS|i3) S::=A|BA::=aCbA|aB::=BCC|aC::=ba1)对于句子iiieii可构造两棵不同的语法树,所以证明该文法是二义的。

Si S e Si S i Si iSi Si S e Si i Si2)对于句子ababa可构造两棵不同的语法树,所以证明该文法是二义的。

SAa Cb Ab a aSBB C Ca b a b aP41 21. 令文法N::=D|NDD::=0|1|2|3|4|5|6|7|8|9给出句子0127,34,568最左推导和最右推导。

解:0127的最左推导N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 0127的最右推导N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>012734的最左推导N=>ND=>DD=>3D=>3434的最右推导N=>ND=>N4=>D4=>34568的最左推导N=>ND=>NDD=>DDD=>5DD=>56D=>568568的最右推导N=>ND=>N8=>ND8=>N68=>D68=>568P41 23. 设有文法如下:<目标>::=V1V1::=V2|V1iV2V2::=V3|V2+V3|iV3V3::=)V1*|(试分析句子(, )(*, i(, (+(, (+(i(, (+)(i(*i(。

解<目标>=> V1=>V2=>V3=>(<目标>=> V1=>V2=>V3=>)V1*=>)V2*=>)V3*=>)(*<目标>=> V1=>V2=>iV3=>i(<目标>=> V1=>V2=>V2+V3=>V3+V3=>(+V3=>(+(<目标>=> V1=>V1iV2=> V1iV3=> V1i(=>V2i(=>V2+V3i(=>V2+( i(=>V3+( i(=>(+(i( <目标>=> V1=>V1iV2=> V2iV2=> V2+V3iV2=> V3+V3iV2=> (+V3iV2=>(+)V1*iV2 =>(+) V1iV2*iV2=>(+) V2iV2*iV2=>(+) V3iV2*iV2=>(+) (iV2*iV2=>(+) (iV2*iV2=>(+) (iV3*iV2=>(+) (i(*iV2=>(+) (i(*iV3=>(+) (i(*i(P41 24. 下面文法那些是短语结构文法,上下文有关文法,上下文无关文法,及正规文法?1.S::=aB B::= cB B::=b C::=c2.S::=aB B::=bc C::=c C::=ε3.S::=aAb aA::=aB aA::=aaA B::=b A::=a4.S::=aCd aC::=B aC::=aaA B::=b5.S::=AB A::=a B::=bC B::=b C::=c6. S::=AB A::=a B::=bC C::=c C::=ε7. S::=aA S::= εA::=aA A::=aB A::=a B::=b8. S::=aA S::= εA::=bAb A::=a正规文法 1上下文无关文法 2 5 6 7 8上下文有关文法 3短语结构文法 4P41 26. 给出产生下列语言L(G)={W|W∈{0,1}+且W不含相邻1}的正规文法。

相关文档
最新文档