北师15春《编译原理》在线作业3 答案

合集下载

《编译原理》作业参考答案

《编译原理》作业参考答案

《编译原理》作业参考答案一、填空1.图二图一。

2.文法是无ε产生式,且任意两个终结符之间至多有一种优先关系的算符文法。

3.最右推导最右推导。

4.对于循环中的有些代码,如果它产生的结果在循环中是不变的,就把它提到循环外来。

把程序中执行时间较长的运算替换为执行时间较短的运算。

5.对于文法中的每个非终结符A的各个产生式的候选首符集两两不相交;对文法中的每个非终结符A,若它存在某个候选首符集包含ε,则FIRST(A)∩FOLLOW(A)= ø6.控制。

7.语义分析和中间代码产生8.自上而下自下而上自上而下9.自下而上表达式10.自下而上11.源程序单词符号12. DFA初态唯一,NFA初态不唯一;DFA弧标记为Σ上的元素,NFA弧标记为Σ*上的元素;DFA的函数为单射,NFA函数不是单射13.词法,词法分析器,子程序,语法14.ε,a,ab,ab15.终结符号,非终结符号,产生式16.L(G)={a n | n≥1}17.1型,2型,3型18.二义的19.快20.终态,输入字21.单词符号,终结符22.归约23.必须24.直接25.终结符,更快26.E→E+∙T, E→E∙+T, E→∙E+T, E→E+T∙27.归约—归约28.类型检查,一致性检查29.词法分析、词法30.语法分析程序、语法31。

终结符号、产生式、开始符号、非终结符32.2、2、333.不需要避开34.符合、不符合35.推导36.包括37.Ass38.一定没有、一定没有、至多只有一个39.SLR(1)40.移进——归约41.a.控制流检查、b.一致性检查、c.相关名字检查二、判断下面语法是否正确1 ×2 ×3 √4 ×5 √6 ×三、简答题1.词法分析的任务是对输入的源程序进行单词及其属性的识别,为下一步的语法分析进行铺垫;有两种方法可以实现词法分析器:一,手工编写词法分析程序。

二,由词法分析器自动生成程序生成。

编译原理习题及答案

编译原理习题及答案

( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 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.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

编译原理课后习题答案

编译原理课后习题答案

(a) 0 ( 0 | 1)* 0
由0和1组成且以0开始和结束的符号串全体. (b) ( ( | 0 ) 1* ) * 由0和1组成的符号串全体.
(c) ( 0 | 1 )* 0 ( 0 | 1) ( 0 | 1) 由0和1组成且以000,001,010或011结束的符号串全体. 长度大于等于3且倒数第3个字符为0的01符号串全体.
R R ‘|’ S | S S ST | T T U* | U U (R) | a | b
a
a
a
28
4.5 dangling-else文法: stmt if expr then stmt | matched-stmt matched-stmt if expr then matched-stmt else stmt | other 试说明此文法是二义性的。 句子 if e1 then if e2 then s1 else if e3 then s2 else s3 if e1 then if e2 then s1 else if e3 then s2 else s3
0|1 B 1 D E 0 ABDE ABDE ABCDE ABDE 1 ABCDE ABCDE
start
A
1
C
NFA 0
start A' 1
0
B'
0
1
start
A'
1
最小化DFA
24
DFA
3.8 给定右线性文法G: S 0S | 1S | 1A | 0B A 1C |1 B 0C | 1 C 0C | 1C | 0 | 1 试求一个等价的左线性文法G’.
20
3.6 给出接受下列在字母表{0,1}上的DFA。 (a)所有以00结束的符号串的集合; (1|0)*00

编译原理3答案

编译原理3答案

编译原理3答案【篇一:编译原理试题及答案3】填空题:1、编译方式与解释方式的根本区别在于(是否生成目标代码)。

2、对编译程序而言,输入数据是(源程序),输出结果是(目标程序)。

3、如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:(编译阶段)和(运行阶段)。

4、如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分成三个阶段:(编译阶段)、(汇编阶段)和(运行阶段)。

5、自顶向下语法分析方法会遇到的主要问题有(回溯)和((左递归带来的)无限循环)。

6、ll(k)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“k”的含义是(向输入串中查看k个输入符号)。

7、ll(1)分析法中,第一个l的含义是(从左到右进行分析),第二个l的含义是(每次进行最左推导),“1”的含义是(向输入串中查看1个输入符号)。

8、自顶向下语法分析方法的基本思想是:从(识别符号)出发,不断建立(直接推导),试图构造一个推导序列,最终由它推导出与输入符号相同的(符号串)。

9、自底向上语法分析方法的基本思想是:从待输入的符号串开始,利用文法的规则步步向上进行(直接归约),试图(归约)到文法的(识别符号|开始符号)。

10、lr(0)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“0”的含义是(向貌似句柄的符号串后查看0个输入符号)。

11、lr(1)分析法的名字中,“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

12、slr(1)分析法的名字中,“s”的含义是(简单的),“l”的含义是(从左到右进行分析),“r”的含义是(采用最右推导的逆过程---最左归约),“1”的含义是(向貌似句柄的符号串后查看1个输入符号)。

13、在编译过程中,常见的中间语言形式有(逆波兰表示)、(三元式)、(四元式)和(树形表示)。

兰大《编译原理》15春在线作业3 答案

兰大《编译原理》15春在线作业3 答案

《编译原理》15春在线作业3
一、单选题(共15 道试题,共60 分。


1. 重载符号的含义依赖于()。

A. 上文
B. 下文
C. 上下文
正确答案:C
2. 编译程序生成的目标程序()是机器语言的程序。

A. 一定
B. 不一定
正确答案:B
3. 编译程序必须完成的工作有. (1)词法分析(2)语法分析(3)语义分析(4)代码生成(5)之间代码生成(6)代码代码优化
A. (1)(2)(3)(4)
B. (1)(2)(3)(4)(5)
C. (1)(2)(3)(4)(5)(6)
D. (1)(2)(3)(4)(6)
正确答案:A
4. 一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的():
A. 必要条件
B. 充分必要条件
正确答案:A
5. 编译程序绝大多数时间花在()上。

A. 出错处理
B. 词法分析
C. 目标代码生成
D. 表格管理
正确答案:D
6. 在下述的编译方法中,自顶向下的分析方法有()①简单优先分析②算符优先分析③递归下降分析④预测分析技术⑤LR(K)分析⑥SLR(k)分析⑦LL(k)分析⑧LALR (K)分析
A. ③④⑦
B. ③④⑧
C. ①②⑧
D. ③④⑤⑥⑦
正确答案:A。

编译原理作业参考答案

编译原理作业参考答案

第1章引言1、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。

源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。

目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。

目标程序(结果程序)一般可由计算机直接执行。

低级语言:机器语言和汇编语言。

高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。

如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。

翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。

其中包括:编译程序,解释程序,汇编程序。

编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。

解释程序: 以该语言写的源程序作为输入,但不产生目标程序。

按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。

2、什么叫“遍”?指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。

3、简述编译程序的基本过程的任务。

编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。

词法分析:输入源程序,进行词法分析,输出单词符号。

语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。

中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。

优化:对中间代码进行优化处理。

目标代码生成:把中间代码翻译成目标语言程序。

4、编译程序与解释程序的区别?编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。

编译原理第三章练习题答案

编译原理第三章练习题答案

编译原理第三章练习题答案编译原理第三章练习题答案编译原理是计算机科学中的重要学科,它研究的是如何将高级语言代码转化为机器语言的过程。

在编译原理的学习过程中,练习题是不可或缺的一部分,通过完成练习题可以更好地理解和掌握编译原理的知识。

本文将为大家提供编译原理第三章练习题的答案,希望对大家的学习有所帮助。

1. 什么是语法分析?语法分析是编译器中的一个重要模块,它的主要任务是根据给定的语法规则,对输入的源代码进行分析和解释。

语法分析器会根据语法规则构建一个语法树,用于表示源代码的结构和含义。

常用的语法分析方法有递归下降法、LL(1)分析法和LR分析法等。

2. 什么是LL(1)文法?LL(1)文法是一种特殊的上下文无关文法,它具有以下两个特点:(1) 对于任何一个句子,最左推导和最右推导是唯一的。

(2) 在预测分析过程中,只需要向前看一个输入符号就可以确定所采用的产生式。

LL(1)文法是一种常用的文法形式,它适用于递归下降法和LL(1)分析法。

3. 什么是FIRST集合和FOLLOW集合?FIRST集合是指对于一个文法符号,它能够推导出的终结符号的集合。

FOLLOW 集合是指在一个句型中,某个非终结符号的后继终结符号的集合。

计算FIRST集合和FOLLOW集合可以帮助我们进行语法分析,特别是LL(1)分析。

4. 什么是递归下降语法分析法?递归下降语法分析法是一种基于产生式的自顶向下的语法分析方法。

它的基本思想是从文法的开始符号开始,递归地根据产生式进行分析,直到推导出输入符号串或发现错误。

递归下降语法分析法的实现比较简单,但对于某些文法可能会出现回溯现象,影响分析效率。

5. 什么是LR分析法?LR分析法是一种自底向上的语法分析方法,它的基本思想是从输入符号串开始,逐步构建语法树,直到推导出文法的开始符号。

LR分析法具有较好的分析效率和广泛的适用性,常用的LR分析方法有LR(0)、SLR(1)、LR(1)和LALR(1)等。

编译原理课后答案 (3)

编译原理课后答案 (3)

编译原理课后答案问题一计算机程序的执行是一个多阶段的过程,其中编译是其中的一环。

请问编译的三个主要阶段分别是什么?答:编译过程一般可以分为三个主要阶段,分别是词法分析、语法分析和代码生成。

下面分别对这三个阶段进行介绍。

1. 词法分析词法分析是编译过程的第一步,也是最基础的一步。

它的任务是将源代码中的字符序列分解成一个个具有独立含义的单词,这些单词被称为“记号”或“词法单元”。

词法分析器根据程序中每一个字符的组合规则,将其转化为一个个词法单元,并记录下词法单元的类型标记。

词法分析器的工作一般通过有限状态自动机来实现,它根据一定的词法规则进行扫描和分析。

2. 语法分析语法分析是编译过程的第二步,它接收词法分析器生成的词法单元流,根据语法规则进行分析,并生成一棵语法树。

语法分析的主要任务是确定输入程序的结构,检查程序的语法正确性,并生成用于后续处理的输入形式。

语法分析器一般采用的是自顶向下或自底向上的分析方法,常用的方法有递归下降法和LR(1)分析法。

3. 代码生成代码生成是编译过程的最后一步,它将语法分析生成的语法树转化为目标机器的可执行代码。

代码生成器通过遍历语法树,将每个语法树节点转化为相应的目标机器代码。

代码生成过程中需要考虑到目标机器的特性和限制,以及优化代码的效率和性能。

问题二请解释一下编译原理中的词法规则是什么?答:编译原理中的词法规则指的是一组规定词法单元模式的规则。

它描述了如何将输入字符序列转换为词法单元,并为每个词法单元定义了一个标记。

词法规则一般使用正则表达式来描述词法单元的模式。

编译器根据词法规则构建词法分析器,用于将源代码分割成一系列的词法单元。

词法规则的灵活性和准确性对编译过程的性能和结果都有较大的影响。

一个完整的词法规则一般包含以下几个部分:1.正则表达式:描述了词法单元的模式,使用特定的正则表达式语法来表示。

2.动作:描述了当词法单元匹配到模式时,需要执行的动作或处理过程。

编译原理作业参考答案

编译原理作业参考答案

编译原理作业参考答案作业一一、是非题1.(×)2.(×)3.(×)4.(×)5.(×)6.(√)7. (√)8.(√)9.(√) 10.(×) 11.(√) 12.(√) 13.(√)二、填空题1.(词法分析),(语法分析),(中间代码生成),(代码优化),(目标代码生成)2.(单词符号),(语法单位)。

3.(源程序),(单词符号)4.(语法),(语义)5. (词法分析)、(语法分析)、(语义分析),(中间代码产生),(代码优化),(目标代码生成)6.(解释方式)7. (语法规则)8. (上下文无关文法)9. (自上而下分析法),(自下而上分析法)10. (规范推导)11. (最左归约)三、名词解释题:1.词法分析器-----执行词法分析的程序。

2. 自编译方式------先对语言的核心部分构造一个小小的编译程序,再以它为工具构造一个能够编译更多语言成分的较大编译程序。

如此扩展下去,就像滚雪球一样,越滚越大,最后形成人们所期待的整个编译程序。

3. 遍-----所谓“遍”就是对源程序或中间结果长头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。

4. 编译程序-----一种翻译程序: 能够把某一种语言程序(称为源语言程序)转换成另一种语言(成为目标程序),而后着与前者在逻辑上是等价的。

5. 超前搜索-----所谓超前搜索是在词法分析过程中,有时为了确定词性,需超前扫描若干个字符。

6. 短语------令G是一个文法,S划文法的开始符号,假定αβδ是文法G的一个句型,如果有SαAδ且Aβ,则称β是句型αβδ相对非终结符A的短语。

7. 规范句型------由规范推导所得到的句型。

8. 句柄------一个句型的最左直接短语。

9. -规范推导-----最右推导又称为规范推导。

四、简答题:1. 正规式a ( a | b )*。

2.(a*b|b*a)={a,b,ab,ba,aab,bba……}3.状态转换图是一张有限方向图。

编译原理作业题答案编译原理课后题答案

编译原理作业题答案编译原理课后题答案

第二章高级语言的语法描述6、令文法G 6为:N →D|ND D → 0|1|2|3|4|5|6|7|8|9(1)G 6 的语言L (G 6)是什么?(2)给出句子01270127、、34和568的最左推导和最右推导。

解答:思路:由N N →→ D|ND 可得出如下推导N =>=>ND ND ND=>=>=>NDD NDD NDD=>…=>=>…=>=>…=>D D n(n >=1=1))可以看出,N 最终可以推导出1个或多个(也可以是无穷)D ,而D D →→ 0|1|2|3|4|5|6|7|8|9可知,每个D 为0~9中的任一个数字,所以,中的任一个数字,所以,N N N 最终推导出的就是由最终推导出的就是由0~9这10个数字组成的字符串。

(1)G 6 的语言L (G 6)是由0~9这10个数字组成的字符串个数字组成的字符串,,或{0{0,,1,1,……,9}+。

(2)(2)句子句子01270127、、34和568的最左推导分别为的最左推导分别为: : N =>=>ND ND ND=>=>=>NDD NDD NDD=>=>=>NDDD NDDD NDDD=>=>=>DDDD DDDD DDDD=>=>=>0DDD 0DDD 0DDD=>=>=>01DD 01DD 01DD=>=>=>012D 012D 012D=>=>=>0127 0127 N =>=>ND ND ND=>=>=>DD DD DD=>=>=>3D 3D 3D=>=>=>34 34N =>=>ND ND ND=>=>=>NDD NDD NDD=>=>=>DDD DDD DDD=>=>=>5DD 5DD 5DD=>=>=>56D 56D 56D=>=>=>568 568 句子01270127、、34和568的最右推导分别为的最右推导分别为: :N =>=>ND ND ND=>=>=>N7N7N7=>=>=>ND7ND7ND7=>=>=>N27N27N27=>=>=>ND27ND27ND27=>=>=>N127N127N127=>=>=>D127D127D127=>=>=>0127 0127 N =>=>ND ND ND=>=>=>N4N4N4=>=>=>D4D4D4=>=>=>34 34N =>=>ND ND ND=>=>=>N8N8N8=>=>=>ND8ND8ND8=>=>=>N68N68N68=>=>=>D68D68D68=>=>=>568 5687、写一个文法,使其语言是奇数集,且每个基数不以0开头。

编译原理第3章 习题解答

编译原理第3章 习题解答

第3章习题解答1.构造正规式1(0|1)*101相应的DFA.[答案]先构造NFA确定化0 1X AA A ABAB AC ABAC A ABYABY AC AB重新命名,令AB为B、AC为C、ABY为D0 1X AA A BB C BC A DD C B转化成DFA:============================================================== 2.将下图确定化:[答案]0 1S VQ QUVQ VZ QUQU V QUZVZ Z ZV ZQUZ VZ QUZZ Z Z重新命名,令VQ为A、QU为B、VZ为C、V为D、QUZ为E、Z为F。

0 1S A BA C BB D EC F FD FE C EF F F转化为DFA:================================================================ 3.把下图最小化:[答案](1)初始分划得Π0:终态组{0},非终态组{1,2,3,4,5}对非终态组进行审查:{1,2,3,4,5}a {0,1,3,5}而{0,1,3,5}既不属于{0},也不属于{1,2,3,4,5} ∵{4} a {0},所以得新分划 (2)Π1:{0},{4},{1,2,3,5} 对{1,2,3,5}进行审查: ∵{1,5} b {4}{2,3} b {1,2,3,5},故得新分划 (3)Π2:{0},{4},{1, 5},{2,3} {1, 5} a {1, 5}{2,3} a {1,3},故状态2和状态3不等价,得新分划 (3)Π3:{0},{2},{3},{4},{1, 5} 这是最后分划了 (4)最小DFA :======================================= 4.构造一个DFA ,它接收Σ={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。

编译原理部分课后答案,仅供参考

编译原理部分课后答案,仅供参考

第一章编译程序概述1.1什么是编译程序编译程序是现代计算机系统的基本组成部分之一,而且多 数计算机系统都含有不止一个高级语言的编译程序。

对有些高 级语言甚至配置了几个不同性能的编译程序。

1.2编译过程概述和编译程序的结构编译程序完成从源程序到目标程序的翻译工作,是一个复 杂的整体的过程。

从概念上来讲,一个编译程序的整个工作过 程是划分成阶段进行的,每个阶段将源程序的一种表示形式转 换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连 接在一起的。

一般一个编译过程划分成词法分析、语法分析、 语义分析、中间代码生成,代码优化和目标代码生成六个阶段,这是一种典型的划分方法。

事实上,某些阶段可能组合在一起, 这些阶段间的源程序的中间表示形式就没必要构造岀来了。

我 们将分别介绍各阶段的任务。

另外两个重要的工作:表格管理 和岀错处理与上述六个阶段都有联系。

编译过程中源程序的各 种信息被保留在种种不同的表格里,编译各阶段的工作都涉及 到构造、查找或更新有关的表格,因此需要有表格管理的工作; 如果编译过程中发现源程序有错误,编译程序应报告错误的性 质和错误发生的地点,并且将错误所造成的影响限制在尽可能 小的范围内,使得源程序的其余部分能继续被编译下去,有些 编译程序还能自动校正错误, 这些工作称之为岀错处理。

图1.3表示了编译的各个阶段。

图1.3编译的各个阶段它不生成目标代码,它每遇到一个语句,就要对这个语句进行 分析以决定语句的含义,执行相应的动作。

右面的图示意了它 的工作机理第二章:PL/O 编译程序问答第1题 PL/0语言允许过程嵌套定义和递归调用,试问 它的编译程序如何解决运行时的存储管理。

答:PL/0语言允许过程嵌套定义和递归调用,它的编译程序在运行时采用了栈式动态存储管理。

(数组CODE 存放的只读目 标程序,它在运行时不改变。

)运行时的数据区S 是由解释程序 定义的一维整型数组,解释执行时对数据空间S 的管理遵循后进先岀规则,当每个过程(包括主程序)被调用时,才分配数据 空间,退出过程时,则所分配的数据空间被释放。

编译原理教程-课后习题答案第三章语法分析

编译原理教程-课后习题答案第三章语法分析

c. 最左推导和最右推导必定相同
d. 可能存在两个不同的最左推导,但它们对应的语法树 相同
第三章 语法分析
(3) 采用自上而下分析,必须 。
a. 消除左递归
b. 消除右递归
c. 消除回溯
d. 提取公共左因子
(4) 设a、b、c是文法的终结符,且满足优先关系 ab和bc,则 。
a. 必有ac
b. 必有ca
第三章 语法分析 表3-1 预测分析表
A A′ B B′
能否不画出语法树,而直接由定义(即在句型中)寻 找满足某个产生式的候选式这样一个最左子串(即句柄) 呢?例如,对句型aAaBcbbdcc,我们可以由左至右扫描 找到第一个子串AaB,它恰好是满足A→AaB右部的子串; 与树(a)对照,AaB的确是该句型的句柄。是否这一方法 始终正确呢?我们继续检查句型aAcbBdcc,由左至右找 到第一个子串c,这是满足A→C右部的子串,但由树(b) 可知,c不是该句型的句柄。由此可知,画出对应句型 的语法树然后寻找最左直接短语是确定句柄的好方法。
c. 必有ba
d. a~c都不一定成立
第三章 语法分析
(5) 在规范归约中,用 来刻画可归约串。
a. 直接短语
b. 句柄
c. 最左素短语 d. 素短语
(6) 若a为终结符,则A→α ·aβ 为 项目。
a. 归约
b. 移进
c. 接受
d. 待约
(7) 若项目集Ik含有A→α · ,则在状态k时,仅 当 面 临 的 输 入 符 号 a∈FOLLOW(A) 时 , 才 采 取
第三章 语法分析
因此,文法G[S]为二义文法(对句子abbb也可画出 两棵不同语法树)。
3.4 已知文法G[S]为S→SaS|ε ,试证明文法G[S] 为二义文法。

编译原理答案(部分)

编译原理答案(部分)

在读入输入符号 a 后,状态 2 和 4 分别转换为第一个子集中的状态 1 和 0,状态 3 和 5
分别转换为第二个状态中的 3 和 5,这就意味着{2, 4}中的状态和{3, 5}中的状态在读
入 a 后到达了不等价的状态,因此得到了新的划分 P1 如下:
P1 = {{0, 1}, {2, 4}, {3, 5}}
ε_closure(smove(C, b)) = {0} ,A
DFA 如图:
a,b
AaB
bb
最小化 DFA 过程:
C
初始划分为:{{A, B}, {C}};
C 自身一组,不能再分;AB 在一组,查看它们的状态转移:
move(A, a) = B
move(A, b) = C
move(B, a) = B
move(B, b) = B
FO(T)= ; F(P) ∩ FO(P)= ;即可)
因此,文法 G 是 LL(1)文法。
(3)文法 G 的预测分析表如下:

Ù
a
b
+
*
)
; F(T) ∩ #
E
E"
E"
E"
E"
TE
TE
TE
TE
E
E"
E" ε E" ε
+E
T
T"
T"
T"
T"
FT
FT
FT
FT
T
T" T T" T T" T T" T T" ε
0
#Expr
VarTail" ε

《编译原理》习题答案.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)可以较好地反映句子的结构。

15春华师《编译原理》在线作业答案

15春华师《编译原理》在线作业答案

华师《编译原理》在线作业一、单选题(共30 道试题,共60 分。

)1. 语法分析的常用方法是________ 。

a.自顶向下b.自底向上c.自左向右d.自右向左A. abcdB. abC. cdD. abc正确答案:B2. 一个右线性文法G一定是A. LL(1)文法B. LR(1)文法C. SLR(1)文法D. 上述三者都不是正确答案:A3. 一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的____。

A. 必要条件B. 充分必要条件C. 充分条件正确答案:A4. LR(K)文法____。

A. 都是无二义性的B. 都是二义性的C. 一部分是二义性的正确答案:A5. 下面说法正确的是A. 一个SLR(1)文法一定也是LALR(1)文法B. 一个LR(1)文法一定也是LALR(1)文法正确答案:A6. 有下列文法:S->Pa|Pb|c P->Pd|Se|f 该文法是______。

A. LL(1)文法B. SLR(1)文法C. a和bD. 都不是正确答案:B7. 编译程序生成的目标程序_______是可执行的程序。

A. 一定C. 某种情况下一定D. 某种情况下不一定正确答案:B8. 数组的内情向量中肯定不含有数组的——的信息A. 维数;;;B. 类型C. 维上下界D. 各维的界差正确答案:A9. 编译程序是一种常用的___软件。

A. 应用B. 系统C. 工具D. 测试正确答案:B10. 若一个句型中出现了某一产生式的右部,则此右部____是该句型的句柄。

A. 一定B. 不一定C. 视情况而定正确答案:B11. 正则集合L={an|n≧0}相应的正则表达式是A. a*B. a+C. aa*D. aa+正确答案:A12. 在状态转换图中,结点代表____,用圆圈表示。

A. 输入缓冲区B. 向前搜索C. 状态D. 字符串正确答案:C13. 一个LR(1)文法合并同心集后若不是LALR(1)文法:A. 则可能存在移进/归约冲突B. 则可能存在归约/归约冲突C. 则可能存在移进/归约冲突和归约/归约冲突D. 不存在冲突正确答案:B14. 编译过程中,语法分析器的任务是______ 。

《编译原理》课后习题答案第三章第3章文法和语言第1

《编译原理》课后习题答案第三章第3章文法和语言第1

《编译原理》课后习题答案第三章第3 章文法和语言第1 题文法G=({A,B,S},{a,b,c},P,S)其中P 为:S→Ac|aBA→abB→bc写出L(G[S])的全部元素。

答案:L(G[S])={abc}第2 题文法G[N]为:N→D|NDD→0|1|2|3|4|5|6|7|8|9G[N]的语言是什么?答案:G[N]的语言是V+。

V={0,1,2,3,4,5,6,7,8,9}N=>ND=>NDD.... =>NDDDD...D=>D......D或者:允许0 开头的非负整数?第3题为只包含数字、加号和减号的表达式,例如9-2+5,3-1,7等构造一个文法。

答案:G[S]:S->S+D|S-D|DD->0|1|2|3|4|5|6|7|8|9第4 题已知文法G[Z]:Z→aZb|ab写出L(G[Z])的全部元素。

盛威网()专业的计算机学习网站 1《编译原理》课后习题答案第三章答案:Z=>aZb=>aaZbb=>aaa..Z...bbb=> aaa..ab...bbbL(G[Z])={anbn|n>=1}第5 题写一文法,使其语言是偶正整数的集合。

要求:(1) 允许0 打头;(2)不允许0 打头。

答案:(1)允许0 开头的偶正整数集合的文法E→NT|DT→NT|DN→D|1|3|5|7|9D→0|2|4|6|8(2)不允许0 开头的偶正整数集合的文法E→NT|DT→FT|GN→D|1|3|5|7|9D→2|4|6|8F→N|0G→D|0第6 题已知文法G:<表达式>::=<项>|<表达式>+<项><项>::=<因子>|<项>*<因子><因子>::=(<表达式>)|i试给出下述表达式的推导及语法树。

(5)i+(i+i)(6)i+i*i盛威网()专业的计算机学习网站 2 《编译原理》课后习题答案第三章答案:<表达式><表达式> + <项><因子><表达式><表达式> + <项><因子>i<项><因子>i<项><因子>i( )(5) <表达式>=><表达式>+<项>=><表达式>+<因子>=><表达式>+(<表达式>)=><表达式>+(<表达式>+<项>)=><表达式>+(<表达式>+<因子>)=><表达式>+(<表达式>+i)=><表达式>+(<项>+i)=><表达式>+(<因子>+i)=><表达式>+(i+i)=><项>+(i+i)=><因子>+(i+i)=>i+(i+i)<表达式><表达式> + <项><项> * <因子><因子> i<项><因子>ii(6) <表达式>=><表达式>+<项>=><表达式>+<项>*<因子>=><表达式>+<项>*i=><表达式>+<因子>*i=><表达式>+i*i=><项>+i*i=><因子>+i*i=>i+i*i盛威网()专业的计算机学习网站 3《编译原理》课后习题答案第三章第7 题证明下述文法G[〈表达式〉]是二义的。

15春西交《编译原理》在线作业满分答案

15春西交《编译原理》在线作业满分答案

15春西交《编译原理》在线作业满分答案奥鹏15春西交《编译原理》在线作业试卷总分:100 测试时间:--单选题判断题一、单选题(共 30 道试题,共 60 分。

)1. 自上而下分析面临的四个问题中,不包括( )A. 需消除左递归;B. 存在回朔;C. 虚假匹配;D. 寻找可归约串满分:2 分2. __________不是编译程序的组成部分。

A. 词法分析程序B. 代码生成程序C. 设备管理程序D. 语法分析程序满分:2 分3. 文法开始符号的所有________作为属性计算前的初始值。

A. 综合属性B. 继承属性C. 继承属性和综合属性D. 都不是满分:2 分4. 编译程序使用_______区别标识符的作用域。

A. 说明标识符的过程或函数名;B. 说明标识符的过程或函数的静态层次;C. 说明标识符的过程或函数的动态层次;D. 标识符的行号;满分:2 分5. 两个不同过程的活动,其生存期是________。

A. 重叠的,不嵌套的;B. 不重叠的,嵌套的;C. 重叠的,嵌套的;D. 不重叠的,不嵌套的;满分:2 分6. LR语法分析栈中存放的状态是识别_______的DFA状态。

A. 前缀;B. 可归前缀;C. 项目;D. 句柄;满分:2 分7. 为了便于优化处理,三地址代码可以表示成________。

A. 三元式B. 四元式C. 后缀式D. 间接三元式满分:2 分8. 教材介绍了三种符号表的构造和处理方法,其中________中常把符号表组织成二叉树形式。

A. 线性组织;B. 排序组织和二分法;C. 杂凑(散列)组织;D. 非线性组织满分:2 分9. Chomsky把文法分成四种类型,其中,( )也称正规文法A. 0型B. 1型C. 2型D. 3型满分:2 分10. 语言的词法规则一般用Chomsky的( )型文法来描述:A. 0B. 1C. 2D. 3满分:2 分11. 对应于产生式A→XY继承属性Y.y的属性计算,可能正确的语义规则是________。

编译原理习题及答案1~3

编译原理习题及答案1~3
D.高级语言接近人们的自然语言,但其依赖具 体机器的特性是无法改变的
2021/10/10
2
《遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
表2-1 状态转换矩阵
I
Ia
Ib
{x}
{x,y}
{y}
{y}

{x,y}
{x,y}
{x,y}
{x,y}
将转换矩阵中的所有子集重新命名,形成表2-2所 示的状态转换矩阵,即得到
S
a
b
0
2
1
1

2
2
2
2
2021/10/10
21
《编译原理教程》习题解析
22
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
(8) 由于正则闭包R+=R*R=RR*,故 (a|b)*(a|b)=(a|b)(a|b)*。故选A。
2021/10/10
17
《编译原理教程》习题解析
18
2.2 什么是扫描器?扫描器的功能是什么? 【解答】 扫描器就是词法分析器,它接受输 入的源程序,对源程序进行词法分析并识别出一 个个单词符号,其输出结果是单词符号,供语法 分析器使用。通常把词法分析器作为一个子程序, 每当语法分析器需要一个单词符号时就调用这个 子程序。每次调用时,词法分析器就从输入串中 识别出一个单词符号交给语法分析器。
4
《编译原理教程》习题解析
5
【解答】 (1) 编译程序可以将用高级语言编写的源程序转换成 与之在逻辑上等价的目标程序,而目标程序可以是汇编语 言程序或机器语言程序。故选A。 (2) 分多遍完成编译过程可使整个编译程序的逻辑结 构更加清晰。故选B。 (3) 构造编译程序应掌握源程序、目标语言和编译方 法这三方面内容。故选D。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

客服热线:400-810-6736(免长话费)
北师15春《编译原理》在线作业3
试卷总分:100 测试时间:--
其他题
一、其他题(共 1 道试题,共 100 分。

)V 1. 完成语义分析程序的设计实现,具体要求为: ? 设计并实现TINYC的语义分析程序;
? 完成实验报告;
? 实验报告和提交材料的要求参考前两次作业.
参考答案:
作业题目中,检查作业时分别需要考查以下方面:? 是否有实验报告,扫描程序的源程序,编译后的可执行程序,例子和运行结果.? 源程序是否可编译.? 例子是否能够展示扫描程序实现的功能.? 源程序编译后是否能够执行并对例子给出适当的输出结果.? 实验报告是否包含如下内容:1 实验报告题目;2 实验目的;3 TINYC语言的词法说明,扫描器的输入和输出;4 实验原理(所采用的过程);4.1 记号种类及各记号所代表的字符串集合;4.2 各记号对应的正则表达式及所有记号对应的正则表达式;4.3 各记号对应的DFA及所有记号对应的DFA;5 扫描程序的功能说明和程序说明,程序模块等;6 输入示例及其运行结果;7 总结: 获得的经验,遇到的问题,改进方案等.评判标准建议为:程序和例子部分50%,实验报告50%
满分:100 分。

相关文档
最新文档