北语15春《编译原理》作业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所识别的语⾔是。
c. x n yx n(n≥0)d. x*yx*2、⽂法G描述的语⾔L(G)是指。
a. L(G)={α|S + ?α , α∈VT*} b. L(G)={α|S*?α, α∈VT*}c. L(G)={α|S *?α,α∈(VT∪V N*)} d. L(G)={α|S+ ?α, α∈(VT∪V N*)}3、有限状态⾃动机能识别。
a. 上下⽂⽆关⽂法b. 上下⽂有关⽂法c.正规⽂法d. 短语⽂法4、设G为算符优先⽂法,G的任意终结符对a、b有以下关系成⽴。
a. 若f(a)>g(b),则a>bb.若f(a)c. a~b都不⼀定成⽴d. a~b⼀定成⽴5、如果⽂法G是⽆⼆义的,则它的任何句⼦α。
a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由⽂法的开始符经0步或多步推导产⽣的⽂法符号序列是。
北交《编译原理》在线作业一【答案59239】
北交《编译原理》在线作业一
红字部分为答案!
一、单选题
1.下列关于语法树的描述中,错误的是()。
A.语法树的根结由开始符号所标记
B.一棵语法树表示了一个句型所有的不同推导过程
C.一棵语法树是不同推导过程的共性抽象,是它们的代表
D.一个句型不是只有唯一的一棵语法树
2.Σ={0,1}上的正规式(0|1)* 表示()。
A.0开头的串
B.1开头的串
C.有一个0和一个1的串
D.由0、1组成的任意串
3.一个结点相应的文法符号属性值是由该结点兄弟结点和/或父节点的相应的文法符号的属性值来计算,按这种情况计算的属性值叫做()。
A.综合属性
B.继承属性
C.自然属性
D.赋值属性
4.下列说法中错误的是()。
A.当一遍中包含若干阶段时,各阶段的工作是穿插进行的
B.遍数越多越好
C.遍数越多,输入/输出所消耗的时间越多
D.并非每种语言都可以用单遍编译来实现
5.()是指源程序中不符合语法或词法规则的错误,这些错误一般在词法分析或语法分析时能检测出来。
A.语义错误
B.语法错误
C.短语错误
D.短句错误
6.编译程序中语法分析器接收以()为单位的输入。
A.单词
B.表达式
C.产生式
D.句子
7.文法G的一棵语法树叶结点的自左至右排列是G的一个()。
A.句子
B.句型
C.句柄
D.素短语
8.高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。
编译原理样题1(有答案)
编译原理一、是非题(下列各题你认为正确的,请在题干的括号内打“√”,错的打“×”。
每题1分,共5分)l、一个LL( l)文法一定是无二义的。
…………………………………………… ( )2、逆波兰法表示的表达式亦称前缀式。
……………………………………………()3、目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
……………()4、正规文法产生的语言都可以用上下文无关文法来描述。
………………………()5、一张转换图只包含有限个状态,其中有一个被认为是初态,最多只有一个终态。
……………………………………………………………………………………()二、填空题(每题2分,共5分)1、语法分析是依据语言的( )规则进行的,中间代码产生是依据语言的( )规进行的。
2、程序语言的单词符号一般可以分为( )等等。
3、语法分析器的输入是( ),其输出是( )。
4、所谓自上而下分析法是指( )。
5、如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( )。
6、对于文法G,仅含终结符号的句型称为( )。
7、逆波兰式ab十c+d*e—所表达的表达式为( )。
8、一个名字的属性包括( )和( )。
9、对于数据空间的存贮分配,FORTRAN采用( )策略,PASCAL采用( )策略。
10、所谓优化是指( )。
三、名词解释题(每题2分,共10分)l、词法分析器:2、语法:3、最右推导:4、语法制导翻译:5、基本块:四、简述题(每题4分,共24分)l、考虑下面的程序:…………Var i:integer;a:array[1··2] of integer;prncedure Q( b);Var b:integer;Begini:=1;b:=b十2;i:=2;b:=b+3End;Begina[1]:=5;a[2]:=6;i:=1;Q(a[i]);print(a[l],a[2])End.试问,若参数传递的方式分别采用传地址和传值时,程序执行后输出a[l],a[2]的值是什么?2、画出识别pascal中实常数(可带正负号,但不含指数部分)的状态转换图。
《编译原理》作业参考答案
《编译原理》作业参考答案一、填空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.词法分析的任务是对输入的源程序进行单词及其属性的识别,为下一步的语法分析进行铺垫;有两种方法可以实现词法分析器:一,手工编写词法分析程序。
二,由词法分析器自动生成程序生成。
【参考借鉴】编译原理-作业答案.docx
《编译原理》第一次作业参考答案一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)?1.bR(abRabR)R所有含有偶数个a的由a和b组成的字符串.2.cRa(a|c)Rb(a|b|c)R|cRb(b|c)Ra(a|b|c)R答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串.答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串.说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更“自然”.二、设字母表∑={a,b},用正则表达式(只使用a,b, ,|,R,+,?)描述下列语言:1.不包含子串ab的所有字符串.bRaR2.不包含子串abb的所有字符串.bR(ab?)R3.不包含子序列abb的所有字符串.bRaRb?aR注意:关于子串(substring)和子序列(subsequence)的区别可以参考课本第119页方框中的内容.~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~《编译原理》第二次作业参考答案一、考虑以下NFA:1.这一NFA接受什么语言(用自然语言描述)?所有只含有字母a和b,并且a出现偶数次或b出现偶数次的字符串.2.构造接受同一语言的DFA.答案一(直接构造通常得到这一答案):答案二(由NFA构造DFA得到这一答案):二、正则语言补运算3.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.1.画出一个DFA,该DFA恰好识别所有不含011子串的所有二进制串.规律:构造语言L的补语言L’的DFA,可以先构造出接受L的DFA,再把这一DFA的接受状态改为非接受状态,非接受状态改为接受状态,就可以得到识别L’的DFA.说明:在上述两题中的D状态,无论输入什么符号,都不可能再到达接受状态,这样的状态称为“死状态”.在画DFA时,有时为了简明起见,“死状态”及其相应的弧(上图中的绿色部分)也可不画出.2.再证明:对任一正则表达式R,一定存在另一正则表达式R',使得L(R')是L(R)的补集.证明:根据正则表达式与DFA的等价性,一定存在识别语言L(R)的DFA.设这一DFA为M,则将M的所有接受状态改为非接受状态,所有非接受状态改为接受状态,得到新的DFAM’.易知M’识别语言L(R)的补集.再由正则表达式与DFA的等价性知必存在正则表达式R’,使得L(R’)是L(R)的补集.三、设有一门小小语言仅含z、o、/(斜杠)3个符号,该语言中的一个注释由/o开始、以o/结束,并且注释1.请给出单个正则表达式,它仅与一个完整的注释匹配,除此之外不匹配任何其他串.书写正则表达式时,要求仅使用最基本的正则表达式算子( ,|,R,+,?).参考答案一:/o(oRz|/)Ro+/思路:基本思路是除了最后一个o/,在注释中不能出现o后面紧跟着/的情况;还有需要考虑的是最后一个o/之前也可以出现若干个o.参考答案二(梁晓聪、梁劲、梁伟斌等人提供):/o/R(z/R|o)Ro/2.给出识别上述正则表达式所定义语言的确定有限自动机(DFA).你可根据问题直接构造DFA,不必运用机械的算法从上一小题的正则表达式转换得到DFA.~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~《编译原理》第三次作业参考答案一、考虑以下DFA的状态迁移表,其中0,1为输入符号,A~H代表状态:其中A为初始状态,D为接受状态,请画出与此DFA等价的最小DFA,并在新的DFA状态中标明它对应的原DFA状态的子集.说明:有些同学没有画出状态H,因为无法从初始状态到达状态H.从实用上讲,这是没有问题的.不过,如果根据算法的步骤执行,最后是应该有状态H的.二、考虑所有含有3个状态(设为p,q,r)的DFA.设只有r是接受状态.至于哪一个状态是初始状态与本问题无关.输入符号只有0和1.这样的DFA总共有729种不同的状态迁移函数,因为对于每一状态和每一输入符号,可能迁移到3个状态中的一个,所以总共有3^6=729种可能.在这729个DFA中,有多少个p和q是不可区分的(indistinguishable)?解释你的答案.解:考虑对于p和q,在输入符号为0时的情况,在这种情况下有5种可能使p和q无法区分:p和q在输入0时同时迁移到r(1种可能),或者p和q在输入0时,都迁移到p或q(4种可能).类似地,在输入符号为1时,也有5种可能使p和q无法区分.如果再考虑r的迁移,r的任何迁移对问题没有影响.于是r在输入0和输入1时各有3种可能的迁移,总共有因此,总共有5R5R9=225个DFA,其中p和q是不可区分的.三、证明:所有仅含有字符a,且长度为素数的字符串组成的集合不是正则语言.证明:用反证法.假设含有素数个a的字符串组成的集合是正则语言,则必存在一个DFA接受这一语言,设此DFA为D.由于D 的状态数有限,而素数有无限多个,所以必存在两个不同的素数p和q(设p<q),使得从D的初始状态出发,经过p个a和q个a后到达同一状态s,且s为接受状态.由于DFA每一步的迁移都是确定的,所以从状态s 出发,经过(q-p)个a,只能到达状态s.考虑仅含有字母a,长度为p+p(q-p)的字符串T.T从初始状态出发,经过p个a到达状态s,再经过(q-p)个a 仍然到达s;同样,经过p(q-p)个a后仍然到达s.因此,从初始状态出发,经过p+p(q-p)个a后必然到达状态s.由于p+p(q-p)=p(q-p+1)是合数,而s为接受状态,因而得出矛盾.原命题得证.~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~一、用上下文无关文法描述下列语言:1.定义在字母表∑={a,b}上,所有首字符和尾字符相同的非空字符串.S→aTa|bTb|a|bT→aT|bT|є说明:1.用T来产生定义在字母表∑={a,b}上的任意字符串;2.注意不要漏了单个a和单个b的情况.2.L={0i1j|i≤j≤2i且i≥0}.S→0S1|0S11|є3.定义在字母表∑={0,1}上,所有含有相同个数的0和1的字符串(包括空串).S→0S1|1S0|SS|є思路:分两种情况考虑.1)如果首尾字母不同,那么这一字符串去掉首尾字母仍应该属于我们要定义的语言,因此有S→0S1|1S0;2)如果首尾字母相同,那么这一字符串必定可以分成两部分,每一部分都属于我们要定义的语言,因此有S→SS.二、考虑以下文法:S→aABeA→Abc|bB→d1.用最左推导(leftmostderivation)推导出句子abbcde.S==>aABe==>aAbcBe==>abbcBe==>abbcde2.用最右推导(rightmostderivation)推导出句子abbcde.S==>aABe==>aAde==>aAbcde==>abbcde3.画出句子abbcde对应的分析树(parsetree).三、考虑以下文法:S→aSbS→aSS→1.这一文法产生什么语言(用自然语言描述)?所有n个a后紧接m个b,且n>=m的字符串.2.证明这一文法是二义的.对于输入串aab,有如下两棵不同的分析树3.写出一个新的文法,要求新文法无二义且和上述文法产生相同的语言.答案一:S→aSb|TT→aT|ε答案二:S→TS’T→aT|εS’→aS’b|ε~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~一、考虑以下文法:S→aTUV|bVT→U|UUU→ε|bVV→ε|cV写出每个非终端符号的FIRST集和FOLLOW集.FIRST(S)={a,b}FIRST(T)={є,b}FIRST(U)={є,b}FIRST(V)={є,c}FOLLOW(S)={$}FOLLOW(T)={b,c,$}FOLLOW(U)={b,c,$}FOLLOW(V)={b,c,$}二、考虑以下文法:S→(L)|aL→L,S|S1.消除文法的左递归.S→(L)|aL→SL’L’→,SL’|ε2.构造文法的LL(1)分析表.FIRST(S)={‘(‘,‘a’}FIRST(L)={‘(‘,‘a’}FIRST(L’)={‘,’,ε}FOLLOW(S)={‘$’,‘,’,‘)’}FOLLOW(L)={‘)’}FOLLOW(L’)={‘)’}3.三、考虑以下文法:S→aSbS|bSaS|ε这一文法是否是LL(1)文法?给出理由.这一文法不是LL(1)文法,因为S有产生式S→ε,但FIRST(S)={a,b,ε},FOLLOW(S)={a,b},因而FIRST(S)∩FOLLOW(S)≠∅.根据LL(1)文法的定义知这一文法不是LL(1)文法.~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~一、考虑以下文法:(0)E’→E(1)E→E+T(2)E→T(3)T→TF(4)T→F(5)F→FR(6)F→a(7)F→b1. 写出每个非终端符号的FIRST集和FOLLOW集.FIRST(E’)=FIRST(E)=FIRST(T)=FIRST(F)={a,b}FOLLOW(E’)={$}FOLLOW(E)={+,$}FOLLOW(T)={+,$,a,b}FOLLOW(F)={+,R,$,a,b}2. 构造识别这一文法所有活前缀(viableprefiRes)的LR(0) 自动机(参照课本4.6.2节图4.31).~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~~\(≧▽≦)/~《编译原理》第八次作业参考答案最终答案:34二、以下文法定义了二进制浮点数常量的语法规则:S→L.L|LL→LB|BB→0|1试给出一个S属性的语法制导定义,其作用是求出该二进制浮点数的十进制值,并存放在开始符号S相关联的一个综合属性value中。
(完整word版)编译原理词法分析习题集带答案
《编译原理》习题(一)——词法分析一、是非题(请在括号内,正确的划√,错误的划×)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )二、选择题1.词法分析器的输出结果是_____。
A.( ) 记号B.( ) 相应条目在符号表中的位置C.( ) 记号和属性二元组D.( ) 属性值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等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.生成目标代码三、填空题1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。
3.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。
6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。
17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。
1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。
电子科大15春《计算机编译原理》在线作业1答案
15春《计算机编译原理》在线作业1一、单选题(共15 道试题,共75 分。
)1. 文法G:S→xSx|y所识别的语言是()。
A. xyxB. (xyx)*C. xnyxn(n≥0)D. x*yx*正确答案:C2. SLR(1)分析法的名字中,“1”的含义是()。
A. 自左向右进行分析B. 自右向左进行分析C. 向貌似句柄的符号串后查看1个输入符号D. 向貌似句柄的符号串前查看1个输入符号正确答案:C3. LR(1)分析法的名字中,“L”的含义是()。
A. 自右向左进行分析B. 采用最右推导的逆过程——最左归约C. 向貌似句柄的符号串后查看1个输入符号D. 自左向右进行分析正确答案:D4. Chomsky 定义的四种形式语言文法中,0型文法又称为()文法。
A. 短语结构文法B. 前后文无关文法C. 前后文有关文法D. 正规文法E. 图灵机F. 有限自动机G. 下推自动机正确答案:A5. 在编译程序中,语法分析分为自顶向下分析和自底向上分析两类:自底向上分析试图为输入符号串构造一个()。
A. 语法树B. 有向无环图C. 最左推导D. 最右推导正确答案:D6. 在编译程序中,语法分析分为自顶向下分析和自底向上分析两类:()和LL(1)分析法属于自顶向下分析。
A. 深度分析法B. 宽度优先分析法C. 算符优先分析法D. 递归子程序分析法正确答案:D7. 对下列错误信息,请指出可能是编译的哪个阶段,else 没有匹配的if 对应()。
A. 语法分析B. 语义分析C. 词法分析D. 词义分析正确答案:A8. 在规范归约中,用()来刻画可归约串。
A. 直接短语B. 句柄C. 最左素短语D. 素短语正确答案:B9. 若文法G 定义的语言是无限集,则文法必然是():A. 递归的B. 前后文无关的C. 二义性的D. 无二义性的正确答案:A10. 对应于产生式A->XY继承属性Y.y,可能正确的语义规则是()。
编译原理习题及答案(整理后)
第一章之相礼和热创作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所识此外言语是.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和i和P+T 和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导.Þ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、发生正轨言语的文法为.型 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|aL →L, S|S(1)画出句型(S,(a ))的语法树.(2)写出上述句型的全部短语、直接短语、句柄和素短语. 6、考虑文法G[T]:T →T*F|F F →F ↑P|P P →(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 无二义性,则最左推导是老师长左边的枝叶:对于d6、选c.7、由图2-8-18、规范推导是最左推导,故选d.9、由T →T,…和T →(… 得 由T →S 得FIRSTVT(S)⊂∧,(};即FIRSTVT(T)={b,∧,(,,}; 10、d 11、c 12、b 13、b 14、b多选解答 1、e 、a 、c 2、a 、c 、e 3、、a 、b 、c 、d 、e填空解答 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 个直接后继,且按从左至右的顺序,这些结点的标识表记标帜分别为X 1,X 2,…,X K ,则A→X 1,X 2,…,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)*.开始符号S至多必须在某个发生式的左部出现一次.2[解答](1)由于发生式左部存在闭幕符号,且全部发生式左部符号的长度均小于等于发生式右部的符号长度,以是文法G[S]是Chomsky1型文法,即上下文有关文法.(2)按发生式出现的顺序规定优先级由高到低(否则无法推出句子),我们可以得到:SÞabQÞabcSÞaSPQÞaabQPQÞaabPQQÞaabbQQÞaabbcQÞaabbccSÞaSPQÞaaSPQPQÞaaabQPQPQÞaaabPQQPQÞaaabPQPQQÞaaaPP QQQÞaaabbPqqqÞaaabbQQQÞaaabbbcQQÞaaabbbccQÞaaabbbccc……于是得到文法G[S]生成的言语L={a n b n c n|n≥1}3【解答】(1)由L={a i b j|j>i≥1}知,所求该言语对应的上下文有关文法首先应有S→aSb型发生式,以包管b的个数很多于a的个数;其次,还需有S→Sb或S→bS型的发生式,用以包管b的个数多于a的个数;也即所求上下文有关文法G[S]为:G[S]:S→aSb|Sb|b4【解答】(1)分别画出对应两句型的语法树,如图2-8-2所示句柄:AaB BdÞ5((6【解答】 首先构造T*P ↑(T*F 由图2-8-4可知,T*P ↑(T*F 直接短语有两个,即P 和T*F 第三章 一、单项选择题1、词法分析所根据的是. a. 语义规则 b. d. 等价变换规则2、词法分析器的输入结果是.a. 单词的种别编码b. 单词在符号表中的地位c. 单词的种别编码和本身值d. 单词本身值3、正轨式M 1和M 2等价是指.a. M 1和M 2的形态数相称b. M 1和M 2的有向弧条数相称c. M 1和M 2所识此外言语集相称d. M 1和M 2形态数和有向弧条数相称4、形态转换图(见图3-6-1)接受的字集为.a. 以 0b. 以0结尾的二进制数组成的集合 c. d. 含偶数个0的二进制数组成的集合 5白,因此,. a. 词法分析器作为子程序较好c. 词法分析器分解为多个过程,由语法分析器选择运用d. 词法分析器其实不作为一个独立的阶段 二、多项选择题1、在词法分析中,能辨认出. a. 基本字 b. 四元式 c. 运算符 d. 逆波兰式 e. 常数2、令∑={a,b},则∑上全部以b 扫尾,后跟多少个ab 的字的全体对应的正轨式为.a.b(ab)*b. b(ab)+c.(ba)*bd. (ba)+b e. b(a|b) 三、填空题1、确定无限自动机DFA 是的一个特例.2、若二个正轨式所暗示的相反,则以为二者是等价的.3、一个字集是正轨的,当且仅当它可由所. 四、判别题1、一个无限形态自动机中,有且仅有一个独一终态. ( )2、设r 和s 分别是正轨式,则有L (r|s )=L(r)|L(s). ( )3、自动机M 和M ′的形态数分歧,则二者必不等价. ( )4、确定的自动机以及不确定的自动机都能正确地辨认正轨集. ( )5、对恣意一个右线性文法G ,都存在一个NFA M ,满足L(G)=L(M). ( )6、对恣意一个右线性文法G ,都存在一个DFA M ,满足L(G)=L(M). ( )7、对任何正轨表达式e ,都存在一个NFA M ,满足L(G)=L(e). ( )8、对任何正轨表达式e ,都存在一个DFA M ,满足L(G)=L(e). ( ) 五、基本题1、设M =({x,y}, {a,b}, f,x,{y})为一非确定的无限自动机,其中f 定义如下:图3-6-7 的NFA Mf (x,a )={x,y} f (x,b )={y} f (y,a )=φ f (y,b )={x,y}试构造相应的确定无限自动机M ′.2、对给定正轨式b*(d|ad )(b|ab )+,构造其NFA M ; 单选解答 1、b 2、c3、c4、d5、b 多选解答 1、a 、c 、e 2、a 、b 、d填空解答 1、NFA 2、正轨集 3、DFA (NFA )所辨认 判别解答 1 、2、3、错 4、5、6、7、8、正确基本1解答:对照自动机的定义M=(S,Σ,f,S 0,Z),由f 的定义可知将转换矩阵中的全部子集重新命名而构成表3-6-4所示的形态转换矩阵.表3-6-4 形态转换矩阵将图调查{1,2}.{1,2}都导向1所示化简21、 D → T 2、 S →P →3、 G[S]aAbDe|dA →BSD|eB →SAc| cD| εD→Se| ε(1)求出该文法的每一个非闭幕符U的FOLLOW集.(2)该文法是LL(1)文法吗?(3)构造C[S]的LL(1)分析表.4、将文法G[V]改形成为LL(1)的.G[V]:V→N|N[E]E→V|V+EN→i5、已知文法:G[A]:A→aAa|ε(1)该文法是LL(1)文法吗?为什么?(2)若采取LL(1)方法进行语法分析,怎样得到该文法的LL(1)分析表?(3)若输入符号串“aaaa”,请给出语法分析过程.1解答: LL(1)分析表见表4-3-1分析虽然这个文法很简单,我们还是从求开始符号集合和后继符号集合开始.FIRST(D)=FIRST(T)={int, real}FOLLOW(D)=FOLLOW (L)={#}FIRST(L)={id} FOLLOW(T)={id}FIRST(R)={,, ε} FOLLOW(R)={#}有了下面每个非闭幕符的FIRST集合,填分析表时要计算一个发生式右部α的FIRST(α)就不是件难事了.填表时独一要警惕的时,ε是发生式R→ε右部的一个开始符号,而#在FOLLOW(R)中,以是R→ε填在输入符号#的栏目中.2解答:该文法不是LL(1)文法,见下面分析中的阐明.分析只要三个非闭幕符有两个选择.1、P的两个右部d P 和ε 的开始符号一定不相交.2、Q的两个右部a Q 和ε 的开始符号一定不相交.3、对S来说,由于x ∈ FIRST(A B),同时也有x ∈ FIRST(P Q x)(由于P和Q都可能为空).以是该文法不是LL(1)文法.3解答:(1)求文法的每一个非闭幕符U的FOLLOW集的过程如下:由于:①S是辨认符号,且有A→BSD、B→SAc、D→Se,以是FOLLOW(S)应包含FIRST(D)∪FIRST(Ac)∪FIRST(e)∪{#}={a,d}∪{a,d,c,e}∪{e}∪{#}={a,c,d,e#}②又由于A→BSD和D→ε,以是FOLLOW中还包含FOLLOW(A).由于S→aAbDe和B→SAc,以是FOLLOW(A)=FIRST(bDe)∪FIRST(c)={b,c}综合①、②得FOLLOW(S)={a,d,c,e,#}∪{a,b,c,d,e,#}由于A→BSD,以是 FOLLOW(B)=FIRST(SD)={a,d}由于S→aAbDe | d、A→BSD| e和B→SAc | cD,以是FOLLOW(D)=FIRST(e)∪FOLLOW(A)∪FOLLOW (B)={e}∪{b,c}∪{a,d}={a,b,c,d,e}(2)G[S]不是LL(1)文法.由于发生式B→SAc|cD| ε中FIRST(SAc)∩FOLLOW(B)={a,d}≠Ø(3)构造G[S]的LL(1)分析表.按照LL(1)分析表的构造算法构造方法G[S]的LL(1)分析表如表4-3-2所示.4解答:对文法G[V]提取公共左因子后得到文法:G′[V]:V→NAA→ε|[E]E→VBB→ε|+EN→i求出文法G′[V]中每一个非闭幕符号的FIRST集:FIRST(V)={i} FIRST(A)={[,ε}FIRST(E)={i} FIRST(B)={+,ε}FIRST(N)={i}求出文法G′[V]中每一个非闭幕符号的FOLLOW集:FOLLOW(V)={#}∪FIRST(B)\{ε}∪FOLLOW(E)={#,+,]}FOLLOW(A)= FOLLOW(V)={+,,#}FOLLOW(E)= FIRST(])\{ε}∪FOLLOW(B)= FIRST(])\{ε}∪FOLLOW(E)={]}FOLLOW(B)= FOLLOW(E)={ ]}FOLLOW(N)= FIRST(A)\{ε}∪FOLLOW(V)={[,],+,#}可以看到,对文法G′[V]的发生式A→ε|[E],有FIRST([E])∩FOLLOW(A)={[}∩{+,],#}= Ø对发生式B→ε|+E,有FIRST(+E)∩FOLLOW(B)={+}∩{]}= Ø而文法的其他发生式都只要一个不为ε的右部,以是文法G′[V]是LL(1)文法.5解答:(1)由于发生式A→aAa|ε有空发生式右部,而FOLLOW(A)={#}∪FIRST(a)={a, #}形成 FIRST(A)∩FOLLOW(A)={A, ε}∩{a, #}≠Ø以是该文法不是LL(1)文法.(2)若采取LL(1)方法进行语法分析,必须修正该文法.因该文法发生偶数(可以为0)个a,以是得到文法G′[A]: A→aaA|ε此时对发生式A→aaA|ε,有FOLLOW(A)={#}∪FOLLOW(A)={#},因此FIRST(A)∩FOLLOW(A)={a, ε}∩{#}=Ø以是文法G′[A]是LL(1)文法,按LL(1)分析表构造算法构造该文法的LL(1)分析表如表4-3-3所示.”的分析过程如表4-3-4所示.第五章1.设有文法G[S]为:S→a|b|(A)A→SdA|S(1)完成下列算符优先关系表,见表5-7-1,并判别G[S]能否为算符优先文法.表5-7-1 算符优先关系表(2素短语.(3)给出输入串(adb)#的分析过程.解答:(1)先求文法G[S]的FIRSTVT集和LASTVT集:由S→a|b|(A)得:FIRSTVT(S)={a,b,( );由A→Sd…得:FIRSTVT(A)={d};又由A→S…得:FIRSTVT(S)⊂FIRSTVT(A),即FIRSTVT(A)={d,a,b,(};由S→a|b|(A)得;LASTVT(S)={a,b,}};由A→…dA得:LASTVT(A)={d},又由A→S得:LASTVT(S)⊂LASTVT(A),即LASTVT(A)={d,a,b,)}.构造优先关系表方法如下:①对P→…ab…,或P→…aQb…,有a≖b;②对P→…aR…,而b∈FIRSTVT(R),有a⋖b;③对P→…Rb…,而a∈FIRSTVT(R),有a⋗b.由此得到:①由S→(A)得:(≖);②由S→(A…得:(⋖FIRSTVT(A),即:(⋖d,(⋖a ,(⋖b,(⋖(;由A→…dA得:d⋖FIRSTVT(A),即:d⋖d,d⋖a,d⋖b,d⋖(;③由S→A)得,LASTVT(A)⋗),即:d⋗),a⋗),b⋗),)⋗);由A→Sd…得:LASTVT(S)⋗d,即:a⋗d,b⋗d,)⋗d;此外,由#S#得:#≖#;由#⋖FIRSTVT(S)得:#⋖a,#⋖b,#⋖(;脂由LASTVT(S)⋗#得:d⋗#,a⋗#,b⋗#,)⋗#.末了得到算符优先关系表,见表5-7-2.表5-7-2 算符优先关系表由表5-7-2≖、⋖、⋗三种优先关系之一,故G[S]为算符优先文法.(2)为求出句型(SdSdS)的短语、简单短语、句柄,我们先画出该句型对应的语法树,如图5-7-3所示.短语:S,SdS,SdSdS,(SdSdS)简单短语(即直接短语):S句柄(即最左直接短语):S素短语:SdS,它同时也是该句型的最左素短语.(3)输入串(adb)#的分析过程见表5-7-4表5-7-4 输入串(adb)#的分析过程第六章一、单项选择题1、若a为闭幕符,则A→α·aβ为项目a.回约b.移进c.接受d.待约2、若项目集I k含有A→α·,则在形态k时,仅当面临的输入符号a∈FOLLOW(A)时,才采纳“A→α·”动作的一定是.LR文法b.LR(0)文法c.LR(1)文法d.SLR(1)文法3、就文法的描绘才能来说,有.a. SLR(1)⊂LR(0)b. LR(1)⊂LR(0)c. SLR(1)⊂LR (1)d.无二义文法⊂LR(1)4、在LR(0)的ACTION子表中,假如某一行中存在标识表记标帜“r j”的栏,则.a.该行一定填满r jb.该行未填满r jc.其他行也有r j子表中也有r j5、一个指明了在分析过程中的某时候所能看到发生式多大一部分.a.活前缀b.前缀c.项目d.项目集二、多项选择题1、一个LR分析器包含.a.一个总控程序b.一个项目集c.一个活前缀d.一张分析表e.一个分析栈2、LR分析器核心部分是一张分析表,该表包含等子表.a.LL(1)分析b.优先关系c.GOTOd.LRe.ACTION3、每一项ACTION[S,a]所规定的动作包含.a.移进b.比较c.接受d.回约e.报错4、对LR分析表的构造,有可能存在动作冲突.a.移进b.回约c.移进/回约d.移进/移进e.回约/回约5、就文法的描绘才能来说,有.a. SLR(1)⊂LR(1)b. LR(1)⊂SLR(1)c. LR(0)⊂LR(1)d. LR(1)⊂无二义文法e. SLR(1)⊂无二义文法6、对LR分析器来说,存在等分析表的构造方法.LRb.LR(0)c.SLR(1)d.SLR(0)e.LR(1)7、自上而下的语法分析方法有 .a.算符优先分析法b.LL(1)分析法c.SLR(1)分析法d.LR(0)分析法LR(1)分析法三、填空题1、对于一个文法,假如可以构造.使得它的均是独一确定的,则称该文法为LR文法.2、字的前缀是指该字的.3、活前缀是指的一个前缀,这种前缀不含之后的任何符号.4、在LR分析过程中,只需的已扫描部分坚持可回约成一个,则扫描过的部分正确.5、将识此外NFA确定化,使其成为以为形态的DFA,这个DFA 就是建立的根底.6、A→α·称为项目;对文法开始符S′→α·为项目;若a为闭幕符,则称A→α·aβ为项目;若B为非闭幕符,则称A→α·aβ为项目.7、LR(0)分析法的名字中“L”暗示,“R”暗示,“0”暗示.四、综合题1、对于文法G[S]: S→AS|bA→SA|a(1)列出全部LR(0)项目(2)列出构成文法LR(0)项目集规范族.单项解答:1、A→α·称为回约项目,对文法开始符S′的回约项目,如S′→α·称为接受项目,A→α·aβ(a为闭幕符)称为移进项目.在此选b.2、当用发生式A→α回约时,LR(0)无论面临什么输入符号都进行回约;SLR(1)则仅当面临的输入符号a∈FOLLOW(A)时进行回约;LR(1)则当在把α回约为A的规范句型的前缀βAa前提下,当α后跟闭幕符a时,才进行回约;因此选d.3、由于LR(0)⊂SLR(1)⊂ LR(1)⊂无二义文法,故选c.4、选a.5、选c.多选解答:1、一个LR分析器包含一个总控程序和一张分析表,选a、d.2、选c、e.3、选a、c、d、e.4、在LR分析表的构造中有可能存在“移进”/“回约”和“回约”/“回约”冲突;故选c、e.5、选a、b、c、d、e.6、选a、b、c、e.7、选a、c、d、e.填空解答:1、一张分析表每个入口2、恣意首部3、规范句型句柄4、输入串活前缀5、活前缀项目集合 LR分析算法6、回约接受移进待约7、自左至右分析采取最右推导的逆过程即最左回约向右检查0个字符综合解答:首先将文法G拓广为G[S′]:S′→SS→AS|bA→SA|a(1)文法G[S′]的LR(0)项目是:。
编译原理作业参考答案
第1章引言1、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。
源程序: 用接近自然语言(数学语言)的源语言(基本符号,关键字)编写的程序,它是翻译程序处理的对象。
目标程序: 目标程序是源程序经过翻译程序加工最后得到的程序。
目标程序(结果程序)一般可由计算机直接执行。
低级语言:机器语言和汇编语言。
高级语言:是人们根据描述实际问题的需要而设计的一个记号系统。
如同自然语言(接近数学语言和工程语言)一样,语言的基本单位是语句,由符号组和一组用来组织它们成为有确定意义的组合规则。
翻译程序: 能够把某一种语言程序(源语言程序)改变成另一种语言程序(目标语言程序),后者与前者在逻辑上是等价的。
其中包括:编译程序,解释程序,汇编程序。
编译程序: 把输入的源程序翻译成等价的目标程序(汇编语言或机器语言),然后再执行目标程序(先编译后执行),执行翻译工作的程序称为编译程序。
解释程序: 以该语言写的源程序作为输入,但不产生目标程序。
按源程序中语句动态顺序逐句的边解释边执行的过程,完成翻译工作的程序称为解释程序。
2、什么叫“遍”?指对源程序或源程序的中间形式(如单词,中间代码)从头到尾扫描一次,并作相应的加工处理,称为一遍。
3、简述编译程序的基本过程的任务。
编译程序的工作是指从输入源程序开始到输出目标程序为止的整个过程,整个过程可以划分5个阶段。
词法分析:输入源程序,进行词法分析,输出单词符号。
语法分析:在词法分析的基础上,根据语言的语法规则把单词符号串分解成各类语法单位,并判断输入串是否构成语法正确的“程序”。
中间代码生成:按照语义规则把语法分析器归约(或推导)出的语法单位翻译成一定形式的中间代码。
优化:对中间代码进行优化处理。
目标代码生成:把中间代码翻译成目标语言程序。
4、编译程序与解释程序的区别?编译程序生成目标程序后,再执行目标程序;然而解释程序不生成目标程序,边解释边执行。
编译原理答案1-2
编译原理答案1-2《编译原理习题精选》第一章形式语言基础1.1文法与语言的形式定义1.2推导树与二义性文法1.3综合题第二章有限状态自动机和词法分析2.1有限状态自动机2.2词法分析2.3综合题第三章自顶向下句法分析3.1下推自动机与句法分析3.2LL(1)文法及其句法分析方法3.3递归子程序句法分析方法3.4综合题第四章自底向上句法分析4.1优先文法及其句法分析方法4.2LR(0)、SLR(1)文法及其句法分析方法4.3LR(1)、LALR(1)文法4.4综合题第五章句法制导翻译方法与中间代码生成5.1中间代码5.2属性文法与句法制导翻译5.3综合题第六章运行时存储和环境管理6.1存储分配6.2环境建立与管理6.3形实参数通讯6.4综合题第七章代码优化7.1基本块内代码优化7.2全局优化7.3综合题第八章综合习题精选第一章形式语言基础§1.1文法与语言的形式定义一、要点提示1.文法G是一个四元组G=(VT,VN,P,)其中:VT是非空有限的终结符集合,VN是非空有限的非终结符集合,P是非空有限产生式集合,VN是文法G的开始符号,集合P中的产生式的一般形式是(或::=),其中''是元符号,称为产生式的左部,称为产生式的右部。
Chomky根据产生式的不同形式,将文法分为四类。
分别是:0型文法(又称短语结构文法);1型文法(又称上下文有关文法);2型文法(又称上下文无关文法);3型文法(又称正则文法);编译程序所涉及的主要是2型与3型文法,分别用于句法分析与词法分析。
2型文法的一般形式为,VN,(VN∪VT)某。
3型文法的一般形式为a或a,、VN,aVT(或a,a)。
2.文法G[]中,是文法的开始符号,对某,若(VN∪VT)某,则称是G的一个句型,若VT某,则称是G的一个句子。
文法G[]的句子的全体所组成的集合称为G[]的语言,记作L(G[])={w|某w,wVT某}。
3.从实用的角度出发,在编译原理中所讨论的文法是被简化了的文法,即:a)文法中不含形如的产生式。
《编译原理》习题答案.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)可以较好地反映句子的结构。
编译原理第一章作业完整答案版
01-普通作业一(第一章)一、选择题(从备选项中选出一个或多个正确答案)。
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. 词组二、判断题(对于下列陈述中正确的说法选择回答“对”,否则选择回答“错”)。
1. 编译程序是一种常见的应用软件。
2. C语言的编译程序可以用C语言编写。
3. 编译方式与解释方式的区别之一在于是否生成目标程序。
4. 中间代码生成是编译程序不可或缺的部分。
5. 含有优化的编译程序执行效率高。
三、解释下列术语:(1)编译程序(2)源程序(3)目标程序(4)编译程序的前端(5)后端(6)遍四、一个典型的编译程序通常由哪些部分组成?各部分的主要功能是什么?并画出编译程序的总体结构图。
五、何谓翻译程序、编译程序和解释程序?它们三者之间有何种关系?参考答案:一、选择题1. D2. A3. AC4. C5. B二、判断题1.错2.对3.对4.错5.错三、(1)把用高级程序设计语言书写的源程序,翻译成等价的计算机汇编语言或机器语言书写的目标程序的翻译程序。
(2)源程序,是指未经编译的,按照一定的程序设计语言规范书写的,人类可读的文本文件。
(3)为源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名。
(4)编译程序的前端通常指:词法分析、语法分析、语义分析等生成最终代码以前的一系列步骤。
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. 编译过程中,语法分析器的任务是______ 。
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[优质PPT]
《编译原理教程》习题解析
40
图2-16 正规式((a | b)*|aa)*b对应的NFA
故选D。
《编译原理教程》习题解析
17
(5) NFA可以有DFA与之等价,即两者描述能力相同; 也即,对于任一给定的NFA M,一定存在一个DFA M', 使L(M)=L(M′)。故选B。
(6) DFA便于识别,易于计算机实现,而NFA便于定 理的证明。故选C。
(7) 本题虽然是第二章的题,但答案参见第三章3.1.3 节。即选C。
实际上,当闭包*取0时,正规式(ab) *a与正规 式a(ba)*由初态X到终态Y之间仅存在一条a弧。由 于(ab)*在a之前,故描述(ab)*的弧应在初态结点X 上;而(ba)*在a之后,故(ba)*对应的弧应在终态结 点Y上。因此,(ab)*a和a(ba)*所对应的NFA也可 分别描述为如图2-9(a)和(b)所示的形式,它们确定 化并化简后仍可得到图2-8所示的最简DFA。
【解答】 计算机执行用高级语言编写的程序主要有两种途 径:解释和编译。
在解释方式下,翻译程序事先并不采用将高级语言程序全 部翻译成机器代码程序,然后执行这个机器代码程序的方法, 而是每读入一条源程序的语句,就将其解释(翻译)成对应其功能 的机器代码语句串并执行,然后再读入下一条源程序语句并解 释执行,而所翻译的机器代码语句串在该语句执行后并不保留。 这种方法是按源程序中语句的动态执行顺序逐句解释(翻译)执行 的,如果一语句处于一循环体中,则每次循环执行到该语句时, 都要将其翻译成机器代码后再执行。
《编译原理教程》习题解析
19
2.3 设M=({x,y}, {a,b}, f, x, {y})为一非确定的
有限自动机,其中f定义如下:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15春《编译原理》作业1
单选题多选题判断题
一、单选题(共6 道试题,共24 分。
)
1. 审查每个算符是否具有语言规范允许的运算对象是()的工作。
A. 语法分析
B. 语义分析
C. 中间代码生成
D. 代码优化
E. 目标代码生成
-----------------选择:B
2. 编译程序是将高级语言程序翻译成( )。
A. 高级语言程序
B. 机器语言程序
C. 汇编语言程序
D. 汇编语言或机器语言程序
-----------------选择:D
3. 四元式之间的联系是通过_____实现的。
A. 指示器
B. 临时变量
C. 符号表
D. 程序变量
-----------------选择:B
4. 下列______优化方法不是针对循环优化进行的。
A. 强度削弱
B. 删除归纳变量
C. 删除多余运算
D. 代码外提
-----------------选择:C
5. 中间代码生成时所依据的是_____。
A. 语法规则
B. 词法规则
C. 语义规则
D. 等价变换规则
-----------------选择:C
6. 用高级语言编写的程序经编译后产生的程序叫_____。
A. 源程序
B. 目标程序
C. 连接程序
D. 解释程序
-----------------选择:B
15春《编译原理》作业1。