编译原理平时作业-答案
编译原理习题及答案(整理后)
第一章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、正规文法又称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|TT→T某P|PP→(E)|i则句型P+T+i的句柄和最左素短语分别为BA.指示器B.临时变量C.符号表D.程序变量8、程序语言的单词符号一般可以分为保留字、标识符、常数、运算符、界符等等。
9、下列B优化方法是针对循环优化进行的。
A.删除多余运算B.删除归纳变量C.合并已知量D.复写传播10、若文法G定义的语言是无限集,则文法必然是AA、递归的B、前后文无关的C、二义性的D、无二义性的11、文法G产生的D的全体是该文法描述的语言。
A、句型B、终结符集C、非终结符集D、句子12、Chomky定义的四种形式语言文法中,0型文法又称为A文法;1型文法又称为C文法。
A.短语文法B.上下文无关文法C.上下文有关文法D.正规文法A.短语文法B.上下文无关文法C.上下文有关文法D.正规文法13、语法分析最常用的两类方法是自顶向下和自底向上分析法。
14、一个确定的有穷自动机DFA是一个AA五元组(K,∑,f,S,Z)B四元组(VN,VT,P,S)C四元组(K,∑,f,S)D三元组(VN,VT,P)A、语法B、语义C、代码D、运行15、B不属于乔姆斯基观点分类的文法。
A、上下文无关文法B、算符优先文法C、上下文有关文法D、正规文法16、一个文法所描述的语言是A;描述一个语言的文法是BA.唯一的B.不唯一的C.可能唯一,可能不唯一A.唯一的B.不唯一的C.可能唯一,可能不唯一17、语法分析是依据语言的语法规则进行的,中间代码产生是依据语言的等价变换规则进行的。
编译原理_平时作业(含答案)
编译原理_平时作业1 对于下列语言分别写出它们的正规表达式。
(1) 英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
答:令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*(2) 英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
答:A*B*....Z*(3) Σ={0,1}上的含偶数个1的所有串。
答: (0|10*1)*(4) Σ={0,1}上的含奇数个1的所有串。
答:(0|10*1)*1(5) 具有偶数个0和奇数个1的有0和1组成的符号串的全体。
答:设S是符合要求的串,|S|=2k+1 (k≥0)。
则S→S10|S21,|S1|=2k (k>0),|S2|=2k (k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:和L(M1)等价的正规表达式,即S1为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*类似的考虑有一个自动机M2接受S2,那么自动机M2如下:和L(M2)等价的正规表达式,即S2为:((00|11)|(01|10)(00|11)*(01|10))*因此,S为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*0|((00|11)|(01|10)(00|11)*(01|10))*1(6) 不包含子串011的由0和1组成的符号串的全体。
答:1*|1*0(0|10)*(1|ε)(7) 由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
答:假设w的自动机如下:对应的正规表达式:(1(01*0)1|0)*2 给出接受下列在字母表{0,1}上的语言的DFA。
编译原理作业与答案
编译原理独立作业2010.5一、简答题1、 构造一个文法使其生成的语言是不允许0打头的偶正整数集合。
2、文法][E G :T T E T E E -+→,F F T F T T /*→,i E F )(→,构造句型i T T T *+-的语法树,并指出该句型的短语、直接短语、句柄、素短语和最左素短语。
3、 某LL(1)文法的预测分析表如下,请在下述分析过程表中填入输入串( a , a )$ 的分析过程。
4、 文法][S G :R L S =→,R S →,R L *→,i L →,L R →,求增广文法中LR(1)项目集的初态项目集I 0。
5、文法][S G :G G S S ;→,()G G t H →,)(S a H →,求出各非终结符的FISTVT 和LASTVT 集合。
二、分析题:1、构造自动机,使得它能识别字母表{0,1}上以00结尾的符号串,将构造的自动机确定化,并写出相应的正规文法。
2、文法][S G :RT eT S → εDR T → εdR R → bd a D →,写出每个非终结符的FIRST 集和FOLLOW 集,并判断该文法是否为LL(1)文法。
3、若有文法][S G :AB S → εaBa A → εb A b B → (1)试证明该文法是SLR(1) 文法,并构造SLR(1)分析表。
(2)给出输入串aa # 的分析过程。
参考答案一、简答题1、构造一个文法使其生成的语言是不允许0打头的偶正整数集合。
8|6|4|2|ABC Z → 9|8|7|6|5|4|3|2|1→A ε|0|B AB B → |8|6|4|2|0→C2、文法][E G :T T E T E E -+→,F F T F T T /*→,i E F )(→,构造句型i T T T *+-的语法树,并指出该句型的短语、直接短语、句柄、素短语和最左素短语。
短语:T ,T-T ,i ,T*i ,T-T+T*i直接短语:T , i 句柄: T素短语(P72):T-T,i 最左素短语:T-T3 某LL(1)文法的预测分析表如下,请在下述分析过程表中填入输入串( a , a )$ 的分析过程。
计算机科学编译原理平时作业一
一、判断(共计50分,每题2.5分)1、设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲突”。
A. 正确B. 错误错误:【A】2、四元式之间的联系是通过符号表实现的。
A. 正确B. 错误错误:【B】3、逆波兰法表示的表达式亦称前缀式。
A. 正确B. 错误错误:【B】4、编译方式与解释方式的根本区别在于是否生成目标代码。
A. 正确B. 错误错误:【A】5、在形式语言中,最右推导的逆过程也称为规范归约。
A. 正确B. 错误错误:【A】6、包含公共左因子的文法也能直接用预测分析法来分析。
A. 正确B. 错误错误:【B】7、使用语法制导翻译法的编译程序能够同时进行语法分析和语义分析。
A. 正确B. 错误错误:【A】8、自下而上语法制导翻译法的特点是语法分析栈与语义分析栈不需要同步操作。
A. 正确B. 错误错误:【B】9、紧跟在条件转移语句后面的语句是基本块的入口语句。
B. 错误错误:【A】10、静态存储分配策略是在程序运行期间为源程序中的量进行分配。
A. 正确B. 错误错误:【B】11、设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。
A. 正确B. 错误错误:【B】12、含有优化部分的编译程序的执行效率高。
A. 正确B. 错误错误:【A】13、数组元素的地址计算与数组的存储方式有关。
A. 正确B. 错误错误:【A】14、设有一个LR(0)项目集Ii={X→α.Bβ,A→α.},该项目集含有“移进-归约冲突”。
A. 正确B. 错误错误:【A】15、每一个NFA都对应有唯一的一个最小化的DFA。
A. 正确B. 错误错误:【B】16、产生式是用于定义词法成分的一种书写规则。
A. 正确B. 错误错误:【B】17、文法G:E→E+E|E*E|(E)|i具有二义性,主要的原因在于其文法中没有体现运算符的优先次序和结合性。
B. 错误错误:【A】18、算符优先文法允许任意两个产生式具有相同的右部。
兰大《编译原理》16秋平时作业2
兰大《编译原理》16秋平时作业2一、单选(共 15 道,共 60 分。
)1. 文法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是____。
题1. L(G[N])={bi│i≥0} 题2. L(G[N])={b2i│i≥0} 题3.L(G[N])={b2i+1│i≥0} 题4. L(G[N])={b2i+1│i≥1} 标准解:2. 文法G产生的()的全体是该文法描述的语言。
题1. 句型题2. 终结符集题3. 非终结符集题4. 句子标准解:3. 下面关于解释程序的描述正确的是_____。
(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和 FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的题1. (1)(2) 题2. (1)题3. (1)(2)(3) 题4. (2)(3) 标准解:4. 下列关于标识符和名字的叙述中,正确的为______。
题1. 标识符有一定的含义题2. 名字是一个没有意思的字符序列题3. 名字有确切的属性题4. 都不对标准解:5. 若文法 G 定义的语言是无限集,则文法必然是 _____。
题1. 递归的题2. 前后文无关的题3. 二义性的题4. 无二义性的标准解:6. 最适合动态建立数据实体的内存分配方式是( ) 题1. 栈式分配题2. 堆式分配题3. 编译时预先分配题4. 以上三种均可标准解:7. 将编译程序分成若干个“遍”是为了。
题1. 提高程序的执行效率题2. 使程序的结构更加清晰题3. 利用有限的机器内存并提高机器的执行效率题4. 利用有限的机器内存但降低了机器的执行效率标准解:8. 文法分为四种类型,即0型、1型、2型、3型。
其中3型文法是()。
题1. 短语文法题2. 正则文法题3. 上下文有关文法题4. 上下文无关文法标准解:9. 下面说法正确的是( ):题1. 一个SLR(1)文法一定也是LALR(1)文法题2. 一个LR(1)文法一定也是LALR(1)文法标准解:10. 在下述的编译方法中,自顶向下的分析方法有( )。
编译原理作业参考答案
最左推导:NNDDD3D34
NNDNDDDDD5DD56D568
最右推导:NNDN4D434
NNDN8ND8N68D68568
2*.写出一个文法,使其语言是奇数集,且每个奇数是不以0开头。
答:
SCAB|B(考虑了正负号)
A1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | AA | A0 |
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序:能够把某一种语言程序(源语言程序)改变成另一种语言程序(目
标语言程序),后者与前者在逻辑上是等价的。其中包括:编译程序,解释程序,汇编程序。
{2,4}a = {1,0},{2,4}b = {3,5},无需划分
{3,5}a = {3,5},{3,5}b = {2,4},无需划分
{0,1}a = {1},{0,1}b = {2,4},无需划分
因此,最终的划分为:{0,1}、{2,4}和{3,5},化简后的结果:
5.(P65,14)构造一个DFA M,它接受={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。
T*(i+i)F*(i+i)i*(i+i)
⑵构造语法树
E最左推导构造语法树
E + T
E + T i
T i
i
3.(P36, 9)证明下面的文法是二义的:
SiSeS | iSi
答:对于句子iiiei有两棵不同的语法树。因此该文法是二义的。
SiSeSiiSeSiiieSiiiei
兰大《编译原理》18秋平时作业3(满分)
------------------------------------------------------------------------------------------------------------------------------ (单选题) 1: 编译程序是对_____。
A: 汇编程序的翻译B: 高级语言程序的解释执行C: 机器语言的执行D: 高级语言的翻译正确答案:(单选题) 2: 中间代码生成所依据的是语言的()A: 词法规则B: 语法规则C: 语义规则D: 产生式规则正确答案:(单选题) 3: 在规范归约中,用()来刻画可归约串。
A: 直接短语B: 句柄C: 最左素短语D: 素短语正确答案:(单选题) 4: 四种形式语言文法中,1型文法又称为 _____文法。
A: 短语结构文法B: 前后文无关文法C: 前后文有关文法D: 正规文法正确答案:(单选题) 5: 编译程序是一种_____。
A: 汇编程序B: 翻译程序C: 解释程序D: 目标程序正确答案:(单选题) 6: 正则表达式R1和R2等价是指()A: R1和R2都是定义在一个字母表上的正则表达式B: R1和R2中使用的运算符相同C: R1和R2代表同一正则集D: R1和R2代表不同正则集正确答案:(单选题) 7: 后缀式ab+cd+/可用表达式来表示。
A: a+b/c+dB: (a+b)/(c+d)C: a+b/(c+d)D: a+b+c/d正确答案:(单选题) 8: 编译程序是对()。
------------------------------------------------------------------------------------------------------------------------------ A: 汇编程序的翻译B: 高级语言程序的解释执行C: 机器语言的执行D: 高级语言的翻译正确答案:(单选题) 9: 若B为非终结符,则A→α.B β为()项目。
《编译原理》习题解答
《编译原理》习题解答:第一次作业: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、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。
对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。
编译原理习题及答案(整理后)
第一章1、将编译程序分成若干个“遍”是为了。
b.使程序的结构更加清晰2、构造编译程序应掌握。
a.源程序b.目标语言c.编译方法3、变量应当。
c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是。
b.源程序8、中间代码生成时所遵循的是- 。
c.语义规则9、编译程序是对。
d.高级语言的翻译10、语法分析应遵循。
c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到。
b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析b.语法分析c.中间代码生成e.目标代码生成三、填空题1、解释程序和编译程序的区别在于是否生成目标程序。
2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
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步或多步推导产生的文法符号序列是。
编译原理试题及答案
参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 A . 字符B .单词C .句子D .句型6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是 A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
编译原理平时作业-答案
平时作业1 对于下列语言分别写出它们的正规表达式。
(1) 英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
答:令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*(2) 英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
答:A*B*....Z*(3) Σ={0,1}上的含偶数个1的所有串。
答: (0|10*1)*(4) Σ={0,1}上的含奇数个1的所有串。
答:(0|10*1)*1(5) 具有偶数个0和奇数个1的有0和1组成的符号串的全体。
答:设S是符合要求的串,|S|=2k+1 (k≥0)。
则S→S10|S21,|S1|=2k (k>0),|S2|=2k (k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:和L(M1)等价的正规表达式,即S1为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*类似的考虑有一个自动机M2接受S2,那么自动机M2如下:和L(M2)等价的正规表达式,即S2为:((00|11)|(01|10)(00|11)*(01|10))*因此,S为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*0|((00|11)|(01|10)(00|11)*(01|10))*1(6) 不包含子串011的由0和1组成的符号串的全体。
答:1*|1*0(0|10)*(1|ε)(7) 由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
答:假设w的自动机如下:对应的正规表达式:(1(01*0)1|0)*2 给出接受下列在字母表{0,1}上的语言的DFA。
(完整版)编译原理习题及答案(整理后)
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.利用有限的机器内存但降低了机器的执行效率
编译原理试题及答案
编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 将高级语言代码翻译成机器语言代码B. 进行程序调试C. 进行代码优化D. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。
答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。
词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。
2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。
中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。
三、论述题1. 论述编译器优化的几种常见方法。
答案:编译器优化主要包括以下几种方法:常量折叠、死代码消除、公共子表达式消除、循环优化、代码内联、寄存器分配等。
这些优化方法可以提高程序的执行效率,减少资源消耗,提高程序的运行速度。
结束语:本试题涵盖了编译原理的基本知识点,包括编译器的功能、编译过程的主要阶段、中间代码的作用以及编译器优化的方法。
希望考生能够通过本试题加深对编译原理的理解和掌握。
编译原理试题及答案
参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左 A .非终结符号 B .短语 C .句子 D .直接短语4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是 A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含装 订 线A.三元式B.四元式C.逆波兰式D.语法树9.代码优化的目的是A.节省时间B.节省空间C.节省时间和空间D.把编译程序进行等价交换10.代码生成阶段的主要任务是A.把高级语言翻译成汇编语言B.把高级语言翻译成机器语言C.把中间代码变换成依赖具体机器的目标代码D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。
3.通常把编译过程分为分析前端与综合后端两大阶段。
词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。
4.程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即(静态存储分配)方案和(动态存储分配)方案。
编译原理习题参考答案
编译原理习题参考答案第⼆章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.编译程序是一种常用的软件。
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)。
编译原理答案
编译原理答案(总11页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、填空题1. 汇编程序将翻译成;编译程序将翻译成。
2. 编译程序工作工程可以划分为、、、和等5个基本阶段,同时还会伴有和。
3. 对编译程序而言,输入数据是,输出数据是。
4. 已知文法G[E]: E—>T|E+T|E-F, T->F|T*F|T/F,,F—>(E)|I (“,”是间隔符号,不是文法中的符号)。
该文法的开始符号(识别字符)是,终结符号集合V T是,非终结符号结合V N是,句型T+T*F+i的短语有。
该文法消除直接左递归,改写后的文法为E-> ,T -> ,F-> .5. Chomsky定以来寺中形式语言的文法分别为:文法(又称文法)、文法(又称文法)、文法(又称文法)、文法(又称文法)。
6. 编译过程中扫描器所完成的任务是从中识别出一个个具有。
7. 确定的有穷自动机是一个,通常表示为。
8. LL(k)分析中,第一个L的含义是,第二个L的含义是,“k”的含义是。
9. LL(1)分析中,第一个L的含义是,第二个L的含义是,“1”的含义是。
(0)分析中,“L”的含义是,“R”的含义是,“0”的含义是。
(1)分析中,“L”的含义是,“R”的含义是,“1”的含义是。
(1)分析中,“L”的含义是,“R”的含义是,“1”的含义是。
13.算术表达式:a*(-b+c)的逆波兰式表示为:。
14.算术表达式:a+b*(c+d/e)的逆波兰式表示为:。
15.在编译程序中安排中间代码生成的目的是和。
16.语法制导的翻译程序能同时进行分析和分析。
17.根据所涉及的程序范围,优化可分为、、三种。
二、简单题1. 有人认为编译程序的词法分析、语法分析、语义分析和中间代码生成、代码优化、目标代码生成五个组成部分是缺一不可的,这种看法正确吗说明理由。
2. 多边扫描的程序是高质量的编译程序,优于单遍扫描的编译程序”,对吗为什么3. LR分析器与优先分析器在识别被归约串时的主要异同时什么三、给出生成下述语言的上下文无关的文法{1n0m1m0n|n,m>=0}{WaW r|W属于{0|1}*,W r表示W的逆}四、给出生成下列语言的三型文法:{a n|n>=0}{a n b m|n,m>0}{a n b m c k|n,m,k>=0}五、构造正规式1(0|1)*101相应的最小DFA。
编译原理习题及答案1~3
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、将编译程序分成若干个“遍”是为了b.使程序的结构更加清晰2、构造编译程序应掌握a.源程序b.目标语言c.编译方法3、变量应当c.既持有左值又持有右值4、编译程序绝大多数时间花在上。
d.管理表格5、不可能是目标代码。
d.中间代码6、使用可以定义一个程序的意义。
a.语义规则7、词法分析器的输入是b.源程序8、中间代码生成时所遵循的是-c.语义规则9、编译程序是对d.高级语言的翻译10、语法分析应遵循c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到b.表格管理c.出错处理2、编译程序工作时,通常有阶段。
a.词法分析三、填空题b.语法分析c.中间代码生成e.目标代码生成1、解释程序和编译程序的区别在于是否生成目标程序2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。
3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。
4、编译程序是指将源程序程序翻译成目标语言程序的程序。
一、单项选择题1、文法G:S→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)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,下面是规范推导。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
平时作业1 对于下列语言分别写出它们的正规表达式。
2 (1) 英文字母组成的所有符号串,要求符号串中顺序包含五个元音。
答:令Letter表示除这五个元音外的其它字母。
((letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter))*(2) 英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。
答: A*B*....Z*(3) Σ={0,1}上的含偶数个1的所有串。
答:(0|10*1)*(4) Σ={0,1}上的含奇数个1的所有串。
答:(0|10*1)*1(5) 具有偶数个0和奇数个1的有0和1组成的符号串的全体。
答:设S是符合要求的串,|S|=2k+1 (k≥0)。
则S→S10|S21,|S1|=2k (k>0),|S2|=2k (k≥0)。
且S1是{0,1}上的串,含有奇数个0和奇数个1。
S2是{0,1}上的串,含有偶数个0和偶数个1。
考虑有一个自动机M1接受S1,那么自动机M1如下:和L(M1)等价的正规表达式,即S1为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*类似的考虑有一个自动机M2接受S2,那么自动机M2如下:和L(M2)等价的正规表达式,即S2为:((00|11)|(01|10)(00|11)*(01|10))*因此,S为:((00|11)|(01|10)(00|11)*(01|10))*(01|10)(00|11)*0|((00|11)|(01|10)(00|11)*(01|10))*1(6) 不包含子串011的由0和1组成的符号串的全体。
答:1*|1*0(0|10)*(1|ε)(7) 由0和1组成的符号串,把它看成二进制数,能被3整除的符号串的全体。
答:假设w的自动机如下:对应的正规表达式:(1(01*0)1|0)*3 给出接受下列在字母表{0,1}上的语言的DFA。
4 (1) 所有以00结束的符号串的集合。
5 (2) 所有具有3个0的符号串的集合。
答:(1) DFA M=({0,1},{q0,q1,q2},q0,{q2},δ)其中δ定义如下:δ(q0,0)=q1δ(q0,1)=q0δ(q1,0)=q2δ(q1,1)=q0δ(q2,0)=q2δ(q2,1)=q0(2)正则表达式: 1*01*01*01*DFA M=({0,1},{q0,q1,q2,q3},q0,{q3},δ)其中δ定义如下:δ(q0,0)=q1δ(q0,1)=q0δ(q1,0)=q2δ(q1,1)=q1δ(q2,0)=q3δ(q2,1)=q2δ(q3,1)=q33 下面是用正规式表示的变量声明:( int | float ) id (, id )* ;请改用上下文无关文法表示,也就是写一个上下文无关文法,它和该正规式等价。
答:D T L ;T int | floatL L, id | id4 试分析下面给出的if-then-else语句的文法,它的提出原本是为了矫正dangling-else (悬而未决的-else)文法的二义性:5 stmt → if expr then stmt6 |matched-stmt7 matched-stmt→ if expr then matched-stmt else stmt8 |other9 试说明此文法仍然是二义性的。
答:考虑句子if e then if e then other else if e then other else other 它具有如下所示的两种分析树 stmt expr then e if stmt if matched-stmt expr then matched-stmt e other if esle stmt matched-stmt expr then matched-stmt e other esle stmt matched-stmt other stmt matched-stmt if expr then matched-stmt e if esle stmt esle stmt matched-stmt expr then e stmt other expr then matched-stmt e other if matched-stmt other则上面给出的if-then-else文法仍是二义性的。
10 证明下面文法是SLR(1)文法,并构造其SLR分析表。
11 E→E+T|T12 T→TF|F13 F→F*|a|b答:该文法的拓广文法G'为(0) E' → E(1) E → E+T(2) E → T(3) T → TF(4) T → F(5) F → F*(6) F → a(7) F → b其LR(0)项目集规范族和goto函数(识别活前缀的DFA)如下:I0 = {E'→·E, E→·E+T, E→·T, T→·TF, T→·F, F→·F*,F→·a, F→·b}I1 = {E'→E·, E→E·+T}I2 = {E→T·, T→T·F, F→·F*, F→·a, F→·b}I3 = {T→F·, F→F·*}I4 = {F→a·}I5 = {F→b·}I6 = {E→E+·T, T→·TF, T→·F, F→·F*, F→·a, F→·b}I7 = {T→TF·, F→F·*}I8 = {F→F*·} I9 = {E→E+T·, T→T·F, F→·F*, F→·a, F→·b}求FOLLOW集:FOLLOW(E)={+, $} FOLLOW(T)={+, $, a, b}FOLLOW(F)={+, $, a, b, *}构造的SLR分析表如下:显然,此分析表无多重定义入口,所以此文法是SLR文法。
14 为下面的文法构造LALR(1)分析表15 S→E16 E→E+T|T17 T→(E)|a答:其拓广文法G':(0) S' → S(1) S → E(2) E → E+T(3) E → T(4) T → (E)(5) T → a构造其LR(1)项目集规范族和goto函数(识别活前缀的DFA)如下:I0= {[S’→·S, $], [S→·E, $], [E→·E+T, $/+], [E→·T, $/+],[T→·(E), $/+], [T→·a, $/+]} I1= {[S’→S·, $]} I2= {[S→E·, $], [E→E·+T, $/+]} I3= {[E→T·, $/+]}I4= {[T→(·E), $/+], [E→·E+T, )/+], [E→·T, )/+], [T→·(E), )/+], [T→·a, )/+]}I5= {[T→a·, $/+]} I6= {[E→E+·T, $/+], [T→·(E), $/+], [T→·a, $/+]}I7= {[T→(E·), $/+], [E→E·+T, )/+]} I8= {[E→T·, )/+]}I9= {[T→(·E), )/+}, [E→·E+T, )/+], [E→·T, )/+], [T→·(E), )/+], [T→·a, )/+]}I10= {[T→a·, )/+]} I11= {[E→E+T·, $/+]} I12= {[T→(E)·, $/+]}I13= {[E→E+·T, )/+], [T→·(E), )/+], [T→·a, )/+]} I14= {[T→(E·), )/+], [E→E·+T, )/+]} I15= {[E→E+T·, )/+]} I16= {[T→(E)·, )/+]}合并同心的LR(1)项目集,得到LALR的项目集和转移函数如下:I0= {[S’→·S, $], [S→·E, $], [E→·E+T, $/+], [E→·T, $/+], [T→··(E), $/+], [T→·a, $/+]} I1= {[S’→S·, $]} I2= {[S→E·, $], [E→E·+T, $/+]} I3,8= {[E→T·, $/+/)]}I4,9= {[T→(·E), $/+/)], [E→·E+T, )/+], [E→·T, )/+], [T→·(E), )/+], [T→·a, )/+]}I5,10= {[T→a·, $/+/)]} I6,13= {[E→E+·T, $/+/)], [T→·(E), $/+/)], [T→·a, $/+/)]}I7,14= {[T→(E·), $/+/)], [E→E·+T, )/+]} I11,15= {[E→E+T·, $/+/)]}I12,16= {[T→(E) ·, $/+/)]}LALR分析表如下:18 (1)通过构造识别活前缀的DFA 和构造分析表,来证明文法 E E + id | id 是SLR(1)文法。
答:先给出接受该文法活前缀的DFA 如下:再构造SLR 分析表如下:动作 转移id + $ E0 s 21 1 s 3 acc2 r 2 r 23 s 44r 1 r 1表中没有多重定义的条目,因此该文法是SLR(1)的。
(2)下面左右两个文法都和(1)的文法等价E E + M id | id E M E + id | id M M请指出其中有几个文法不是LR(1)文法,并给出它们不是LR(1)文法的理由。
答:只有文法E M E + id | id M不是LR(1)文法。
因为对于句子id +id +…+id 来说,分析器在面临第一个id 时需要做的空归约次数和句子中+id 的个数一样多,而此时句子中+id 的个数是未知的。