《编译原理》作业
编译原理_平时作业(含答案)
编译原理_平时作业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。
《编译原理》作业参考答案
《编译原理》作业参考答案一、填空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.词法分析的任务是对输入的源程序进行单词及其属性的识别,为下一步的语法分析进行铺垫;有两种方法可以实现词法分析器:一,手工编写词法分析程序。
二,由词法分析器自动生成程序生成。
编译原理作业与答案
编译原理独立作业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 )$ 的分析过程。
编译原理作业
编译原理作业
1.设字母表A={a},符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以及A+
2. 令∑={a,b,c},又令x=abc,y=b,z=aab,写出如下符号串及它们的长度:xy,xyz,(xy)3
3. 设有文法G[S]:S::=SS*|SS+|a,写出符号串aa+a*规范推导,并构造语法树。
4. 已知文法G[Z]:Z::=U0∣V1 、U∷=Z1∣1 、V::=Z0∣0 ,请写出全部由此文法描述的只含有四个符号的句子。
5. 已知文法G[S]:S::=AB A::=aA︱εB::=bBc︱bc , 写出该文法描述的语言。
6.已知文法E::=T∣E+T∣E-T 、T::=F∣T*F∣T/F 、F::=(E)∣i,写出该文法的开始符号、终结符号集合V T、非终结符号集合V N。
7. 对6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。
8. 设有文法G[S]:S::=S*S|S+S|(S)|a,该文法是二义性文法吗?给出分析过程。
9. 写一文法,使其语言是奇正整数集合。
10.给出语言{a n b m|n,m≥1}的文法。
编译原理作业集
编译原理作业集1 第二章词法分析1. C或Java语言的标示符是字母和数字组成的序列,第一个字符必须是字母,下划线视为字母,且大小写字母不同。
请写出匹配C或Java语言标示符的正规表达式。
2.为下边所描述的串写正规式,字母表是 {0, 1}. a) 以11 结尾的所有串 b) 只包含一个1的所有串2 第三章上下文无关文法1. ________是描述程序设计语言语法结构的形式工具。
2. 设G=(VN,VT,P,S)是一文法,且V= VN∪VT,若S =>*α,α∈V,则称α为文法G的,若S=>*α,α∈VT,则称α为文法G的。
3. 给出语言L={ab|j>i>=1}的上下文无关文法。
4. 文法G[S]的产生式如下:S?SaS | SbS | cS | Sd | t 对于输入串 tbctat: (1) 给出一个推导;(2) 画出(1)中推导对应的分析树;ij**(3) 文法G是否是二义性的,请证明你的结论。
3 第四章语法分析1. 考虑文法G[S]:S-> A��B A->a|b B->(C) C->CS|S 1) 消除上述文法的左递归,重写该文法。
2) 求消除左递归后的文法的非终结符构造First集合和Follow集合。
3) 为消除左递归后的文法构造LL(1)分析表。
4) 并写出对句子 (ab) 的LL(1)分析过程。
2. 给定文法G[S]: S->SaSb��c给出句子 cacbacb 的规范推导,画出该句子的语法推导树,指出该句子的句柄。
3. 给定文法G[S]:S->S b A��A A->a 1) 造文法G[S]的LR(1)项目的DFA。
2) 上述文法构造LR(1)分析表。
3) 写出句子 ababa的分析过程。
4 第五章语义分析1.通过下面文法给出的十进制数的浮点数值,写出一个属性文法(提示:使用一个属性count计算小数点右面数字的个数)。
编译原理作业参考答案
最左推导: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
编译原理作业(答案new)
第3章作业【编辑人:陈芳芳】1.写一文法,使其语言是偶正整数的集合。
要求:(1)允许0打头;(2)不允许0打头。
【解】:(1)允许0打头且含0的偶正整数集合的文法为:N—>(0|D|E)N|(E|0)D—>1|3|5|7|9E—>2|4|6|8(2) 不允许0打头的偶正整数集合的文法为:R—>(D|E)N|EN—>(0|D|E)N|(E|0)D—>1|3|5|7|9E—>2|4|6|82.一个上下文无关文法生成句子abbaa的推导树如下:SA B Sa S B B A aƐ b b a(1)给出该句子的相应的最左推导,最右推导。
(2)该文法的产生式集合P可能有哪些元素?(3)找出该句子的所有短语,简单短语,句柄。
【解】:(1)最左推导:S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa最右推导:S=>ABS=>ABAa=>ABaa=>ASBBaa=>ASBbaa=>ASbbaa=>Abbaa=>abbaa (2) 产生式集合P:S—>ABS | Aa| ƐA—>aB—>SBB | b(3) 短语:a , Ɛ , b , bb , aa , abbaa直接短语:a , Ɛ , b句柄:a3、给出生成下述语言的上下文无关文法:(1){a n b n a m b m | n, m >= 0}(2){1n0m1m0n | n, m >= 0}【解】:(1)S—>AAA—>aAb | Ɛ(2)S—>1S0 | AA—>0A1 | Ɛ第4章课后作业1. 构造一个状态数最小的DFA,它接受∑={0,1}上所有倒数第二个字符为1的字符串。
【编辑人:胡志高】【解】:(1)构造相应的正规式:(0|1)* 1(0|1)(2)由正规式构造NFA,如下图:(3)NFA转化DFA① T0=ε-closure({0})={0}②运用子集构造法求DFA状态,如下表,其中T0为初态,T2、T3为终态:ε-closure(move(Ti,0))ε-closure(move(Ti,1)) T0={0}{0} {0,1}T1={0,1} {0,2} {0,1,2}T2={0,2} {0} {0,1}T3={0,1,2} {0,2} {0,1,2}③分别用0,1,2,3代表T0,T1,T2,T3,得DFA如下图:(4)最小化DFA①找DFA中等价状态,分析过程如下:P0=({0,1},{2,3})P1=({0},{1},{2},{3})经以上分析可知:0无等价状态。
编译原理作业题整理
编译原理作业题整理第一章习题一1.解释性名词:源语言、目标语言、翻译、编译和翻译。
答:源语言:由译者翻译并用于编写源程序的语言。
目标语言:被翻译器翻译之后得到的语言,用于书写目标程序的语言。
翻译器:能够完成从一种语言到另一种语言的变换的软件。
编译器:一种特殊的翻译器,要求目标语言比源语言低级。
解释器:解释器是不同于编译器的语言处理器。
解释器与编译器不同样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。
第二章词汇分析:假设∑={0,1},求1.写出包括010的所有字符串的标准公式2.写出不含010的所有字符串的标准形式答:1.(0|1)*(010)(0|1)*2.(10*1)*|((11|00)*|0111*0)*.2.(0 | 1)*010(0 | 1)*解:(1)re的分解树如下:r17r16r11r9r7r5r60r81r100(r15r14*)r131r120 | r4(r3)r21*r10|(2)根据分解树和基本的汤普森构造算法,逐步构造等价的NFA。
过程如下: start0r1:23r2:start415203?r3、r4:start1?6?415?r5:start0203?6?1?7?415?开始7'r6:08r7:start0203?6?1?708?415?开始8'r8:19r9:start0203?6?1?70819?415?start0r10:9’10r11:start0203?6?1?70819010?415?startr12:01213startr13:114150 r14、r15:start111213?16?11415?0r16:start10’1213?16?11?17?11415?r17:?从203开始?6.7081912? 1010? 11? 415?? 14?(3)由子集法构造等价的dfa过程如下:ABCDEFGHI0BBBEFFHF1CDCCGGIGI?\闭包({0})?{0,1,2,4,7}? A.a0??_closure({3,8})?{1,2,3,4,6,7,8}?ba1??_closure({5})?{1,2,4,5,6,7}?cb0u闭包({3,8})?{1,2,3,4,6,7,8}? bb1闭包({5,9})?{1,2,4,5,6,7,9}? Dc0??_closure({3,8})?bc1??_closure({5})?cd0u闭包({3,8,10})闭包({3,8})闭包({10})?B{10,11,12,14,17}? {1,2,3,4,6,7,8,10d1??_closure({5})?ce0u闭包({3,8,13})闭包({3,8})闭包({13})?B{11,12,13,14,16,17}? {1,2,3,4,6,7,8e1??_closure({5,9,15})??_closure({5,9})??_closure({15})?d?{11,12,14,15,16,17}? {1,2,4,5,6,7,9f0\u闭包({3,8,13})?Ff1??_closure({5,9,15})?{1,2,4,5,6,7,9,11,12,14,15,16,17}?gg0闭包({3,8,10,13})闭包({3,8,10})闭包({13})?e闭包({13})?E{11,12,13,14,16,17}? {1,2,3,4,6,7,8,10,11,12,13,14,16,17}? hg1u闭包({5,15})?c闭包({15})?C{11,12,14,15,16,17}?{1,2,4,5,6,7,11,12,14,15,16,17}? 我。
编译原理作业
c
Bห้องสมุดไป่ตู้
I7: S→bASB.
I8: B →c.Aa B →c. A →. dSa A →. b
A a
I11: B →cA.a
(2)根据识别文法规范句型活前缀的DFA,{I3: S→bA.SB, S→bA., S→.bASB ,S→.bA}和 {I8: B→c.Aa , B →c., A →.dSa , A →.b }存在移进-归约冲突,所以文法不是LR(0)的; 又由于FOLLOW(S)∩{b}={a,c,#}∩{b}=Φ , FOLLOW(B)∩{d,b}={a,c,#}∩{d,b}=Φ ,所以这些 冲突可以用SLR(1)的方法来解决,所以文法是SLR(1)文法。
作业1
1、为语言L1={ ambm bnan| m≥0 ,n ≥1}构造一个上下文无关文法;
则文法G[S]可为: 或:S →AB
S →AB | B A →aAb | ab B →bBa | ba
A →aAb | ε B →bBa | ba
或:S →AbBa A →aAb | ε B →bBa | ε
A → DB | ε B → dB |ε D → a | bd (1)求文法的每个非终结符的FIRST集和 FOLLOW集,以及各规则的SELECT集。 (2)说明文法是LL(1)的理由。 2、构造上述文法的预测分析表,并给出符号串 dbd#的预测分析过程。
• 作业3: 1、(1)FIRST(S) ={ e,a,b, d, ε} ,FOLLOW(S)={ #}
(1) 识别文法规范句型活前缀的DFA:
I0: S ’→.S
S
S →. bASB b S →. bA
拓广文法并编号 产生式:
I1: S ’→S.
编译原理作业
习题11.1解释名词:源语言、目标语言、翻译器、编译器和解释器。
答:源语言是指待翻译的语言,和目标语言相对。
目标语言是指被翻译的语言,与源语言相对。
能够完成从一种语言到另一种语言的变换的软件称为翻译器,这两种语言分别叫做该翻译器的源语言和目标语言。
编译器是一种特殊的翻译器,它进行语言变换的特点是目标语言比源语言低级。
解释器是不同于编译器的另一类语言处理器。
它不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。
它的执行方式是一边翻译一边执行,因此其执行效率一般偏低。
1.2典型的编译器可以划分成几个主要的逻辑阶段?各阶段的主要功能是什么?答:典型的编译器可以划分成七个主要的逻辑阶段,分别是词法分析器、语法分析器、语义分析器、中间代码生成器、独立于机器的代码优化器、代码生成器、依赖于机器的代码优化器。
各阶段的主要功能:(1)词法分析器:词法分析阅读构成源程序的字符流,按编程语言的词法规则把它们组成词法记号流。
(2)语法分析器:按编程语言的语法规则检查词法分析输出的记号流是否符合这些规则,并依据这些规则所体现出的该语言的各种语言构造的层次性,用各记号的第一元建成一种树形的中间表示,这个中间表示用抽象语法的方式描绘了该记号流的语法情况。
(3)语义分析器:使用语法树和符号表中的信息,依据语言定义来检查源程序的语义一致性,以保证程序各部分能有意义地结合在一起。
它还收集类型信息,把它们保存在符号表或语法树中。
(4)中间代码生成器:为源程序产生更低级的显示中间表示,可以认为这种中间表示是一种抽象机的程序。
(5)独立于机器的代码优化器:试图改进中间代码,以便产生较好的目标代码。
通常,较好是指执行较快,但也可能是其他目标,如目标代码较短或目标代码执行时能耗较低。
(6)代码生成器:取源程序的一种中间表示作为输入并把它映射到一种目标语言。
如果目标语言是机器代码,则需要为源程序所用的变量选择寄存器或内存单元,然后把中间指令序列翻译为完成同样任务的机器指令序列。
《编译原理》作业题库含答案
《编译原理》作业题库1. 单选题1. 下列哪一项不是与机器有关的代码优化()。
A. 寄存器优化B. 多处理优化C. 特殊的指令优化D. 有用的指令消除正确答案:D2. 处理冲突的方法不包括以下哪种方法()。
A. 开放定址法B. 再哈希法C. 链地址法D. 建立一个私有溢出区正确答案:D3. 优化可生成()的目标代码。
A. 运行时间较短B. 占用存储空间较小C. 运行时间短但占用内存空间大D. 运行时间短且占用存储空间小正确答案:D4. 一个文法是递归的,则它产生的语言的句子个数()。
A. 必定无穷B. 必定有限C. 可能无穷,也可能有限D. 说不准正确答案:A5. 已知文法G:S→WZ W→X|Y X→a|aX Y→b|bY Z→c|cZ,G定义的语言的相应正规式为()。
A. aa*|bb*|cc*B. (aa*|bb*)cc*C. aa*(bb*|cc*)D. (a|b|c)*正确答案:B6. 设G 是一个给定的文法,S 是文法的开始符号,如果S->x( 其中x∈V*), 则称x 是文法G 的一个()。
A. 候选式B. 句型C. 单词D. 产生式正确答案:B7. 词法分析器用于识别()。
A. 字符串B. 语句C. 单词D. 标识符正确答案:C8. 给定文法G[E]:E→E+T∣T T→T*F∣F F→(E)∣i, 则以下()全都不是规范句型的活前缀①T+ ②T* ③ε④T*F ⑤E+E ⑥E* ⑦E+ T* ⑧i ⑨(E+T)⑩(i)A. ②④⑥B. ⑤⑥⑩C. ①②③④D. ⑦⑧⑨正确答案:A9. 下列()不属于程序设计语言中的低级语言?A. 机器语言B. 汇编语言C. C语言D. 面向机器的程序设计语言正确答案:C10. 设已给文法G=(VN,VT,P,S),其中:VN={S} VT={a1,a2,…,an,∨,∧,~,[,]} P={S→ai∣i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]} 此文法所产生的语言是( )。
编译原理作业参考答案
编译原理作业参考答案作业一一、是非题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.状态转换图是一张有限方向图。
《编译原理》习题及答案
第一章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步或多步推导产生的文法符号序列是。
编译原理大作业
课程论文递归下降分析器的实现课程名称所属学院班级学生姓名学号二零一四年十二月目录1、递归下降分析器的设计思想 (1)1.1自顶向下的语法分析方法 (1)1.2递归下降分析法 (1)1.3递归下降分器意义: (1)1.4递归下降分析器思想: (1)1.5递归下降分析器的作用: (2)1.6递归下降分析器的形成过程: (2)2、递归向下分析器实现 (2)2.2待分析的简单词法 (2)2.3要求构造的递归下降程序 (3)2.4主函数分析 (3)3、输入串运行分析: (4)4、关键代码分析及运行过程: (5)4.1关键代码分析 (5)4.2文法函数调用过程 (6)5、程序测试: (7)5.1、当程序运行时出现如下输入程序界面 (7)5.2、当程序运行时出现如下输入程序界面 (7)总结 (8)参考文献: (9)附录: (10)递归下降分析器的实现摘要:本文分析了递归下降分析器的实现以及具体的功能,所谓递归下降分析法,就是对文法中的每个非终结符编写一个函数(子程序),每个函数(子程序)的功能是识别由该非终结符所标示的语法成分。
由于描述语言的文法通常是递归定义的,因此相应的这组函数(子程序)一定是相互递归的方式进行调用,所以将此种分析方法称为递归下降分析法。
关键词:递归下降分析器消除递归非终结符1、递归下降分析器的设计思想1.1自顶向下的语法分析方法自顶向下分析法也称面向目标的分析方法,也就是从文法的开始符号出发企图推导出与输入的单词串完全相匹配的句子,若输入串是给定文法的句子,则必能推出,反之必然出错。
自顶向下的确定分析方法需对文法有一定的限制,但由于实现方法简答、直观,便于手工构造或自动生成语法分析器,因而仍是目前常用的方法之一。
而自顶向下的不确定分析方法是带回溯的分析方法,这种方法实际上是一种穷举的试探方法,因此效率低,代价高,因而极少使用。
1.2递归下降分析法递归下降分析法是确定的自上而下分析法,它要求文法是LL(1)文法。
编译原理第一章作业
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)编译程序的前端通常指:词法分析、语法分析、语义分析等生成最终代码以前的一系列步骤。
17春《编译原理》
17春《编译原理》作业_1一、单选题1. 用高级语言编写的程序经编译后产生的程序叫_____。
A. 源程序B. 目标程序C. 连接程序D. 解释程序答案B2. 构造编译程序应掌握______。
A. 源程序B. 目标语言C. 编译方法D. 以上三项都是答案D3. 四种形式语言文法中,1型文法又称为_____文法。
A. 短语结构文法B. 前后文无关文法C. 前后文有关文法D. 正规文法答案C4. 解释程序处理语言时, 大多数采用的是_____方法。
A. 源程序命令被逐个直接解释执行B. 先将源程序转化为之间代码, 再解释执行C. 先将源程序解释转化为目标程序, 再执行D. 以上方法都可以答案B5. 四元式之间的联系是通过_____实现的。
A. 指示器B. 临时变量C. 符号表D. 程序变量答案B6. 把汇编语言程序翻译成机器可执行的目标程序的工作是由_____完成的。
A. 编译器C. 解释器D. 预处理器答案B7. 下列______优化方法不是针对循环优化进行的。
A. 强度削弱B. 删除归纳变量C. 删除多余运算D. 代码外提答案C8. 将编译程序分成若干个"遍"是为了( )。
A. 提高程序的执行效率B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率答案B9. 在自底向上的语法分析方法中,分析的关键是_____。
A. 寻找句柄B. 寻找句型C. 消除递归D. 选择候选式答案D10. 设G 是一个给定的文法,S 是文法的开始符号,如果S->x( 其中x∈V*), 则称x 是文法G 的一个_____。
A. 候选式B. 句型C. 单词D. 产生式答案B二、多选题1. 一个LR(1) 项目可以看成()两个部分组成。
A. 心B. 向前搜索符集合C. 分析表答案A,B2. 循环优化的重要技术有()。
A. 代码外提B. 删除归纳变量C. 强度削弱D. 局部优化答案A,B,C3. 运行时的存储区常常划分为:()A. 目标区B. 静态数据区C. 栈区D. 堆区答案A,B,C,D三、判断题1. 解释程序适用于COBOL 和FORTRAN 语言。
《编译原理》练习题
《编译原理》练习题一一、填空题(每空1分)1.设G [S ]是一个文法,我们把能由文法的 (1) 推导出来的符号串α称为G 的一个句型。
当句型α仅由 (2) 组成时 (即α∈V T *),则将它称为G 产生的句子。
2.从某一给定的状态q 出发,仅经过若干条 (3) 的矢线所能达到的状态所组成的集合称为ε-CLOSURE(q)。
3.设G=(V N ,V T ,P,S)是一文法,我们说G 中的一个符号X ∈V N ∪V T 是有用的,是指X 至少出现在 (4) 的推导过程中,否则,就说X 是无用的。
我们将不含形如A→A 的产生式和不含无用符号及无用产生式的文法称为 (5) 。
4.我们常采用形如 (class, value)的二元式作为一个单词的 (6) 。
其中,class 是一个整数,用来指示该单词的 (7) ,value 则是单词之值。
5.一个文法G[S]可表示成形如 (8) 的四元式。
其中V N ,V T ,P 均为非空的有限集,分别称为非终结符号集、终结符号集和产生式集, S ∈V N 为文法的开始符号。
此外,将出现在各产生式左部和右部的一切符号所组成的集合称为 (9) ,记作V 。
显然,V=V N ∪V T ,V N ∩V T =∅。
6.通常,可通过两种途径来构造词法分析程序。
其一是根据对语言中各类单词的某种描述或定义,用 (10) 构造词法分析程序;另外一种途径是所谓词法分析程序的(11) 。
7.设G 为一文法,A→α是G 的一个产生式,如果α具有υAδ的形式,其中υ,δ不同时为ε,则称产生式A→α是 (12) 。
若存在推导δυαA A *⇒⇒,则称产生式A→α是 (13) 。
8.设M=(K,Σ,f,S 0,Z)为一DFA ,并设s 和t 是M 的两个不同状态,我们说状态s,t 为某一输入串w (14) ,是指从s,t 中之一出发,当扫视完w 之后到达M 的终态,但从其中的另一个状态出发,当扫视完同一个w 后而进入 (15) 。
编译原理作业
编译原理作业编译原理是计算机科学领域中的一门重要课程,主要研究程序编译过程中的原理、技术和方法。
编译原理可以帮助我们理解程序是如何被翻译成机器语言,并最终在计算机上执行的。
编译原理的基本概念包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。
其中,词法分析是将程序源代码划分为一个个的词法单元,语法分析是根据语法规则确定这些词法单元之间的关系,而语义分析则是对程序的含义进行分析和验证。
在编译原理中,词法分析器是一个重要的组成部分。
它将输入的字符流转化为一个个的词法单元,例如标识符、关键字、运算符和常量等。
词法分析器通过正则表达式和有限状态自动机来实现,能够高效地识别出程序中的各种词法单元。
语法分析是编译原理中的另一个核心概念。
它通过上下文无关文法来描述程序的语法结构,将输入的词法单元序列转化为一个个的语法分析树。
语法分析器通常采用自顶向下的递归下降分析法或自底向上的移进-规约分析法来实现。
在编译过程中,语义分析是对程序的含义进行分析和验证。
它检查程序中的语义错误,并生成中间表示形式(IR),用于后续的代码生成和优化。
语义分析器通常通过语法制导翻译和语义规则来实现。
中间代码生成是将高级语言程序转化为中间表示形式的过程。
中间代码是一种抽象的表示形式,它比源代码更接近于目标代码,但仍保留了高级语言的结构和语义。
中间代码可以通过三地址码、四元式、抽象语法树等形式表示。
代码优化是编译过程中的一个重要环节,它通过对中间代码进行优化,提高程序的执行效率和资源利用率。
代码优化的目标包括减少指令数、减少内存访问、提高并行性等。
代码优化器通常采用各种优化技术,例如常量传播、死代码消除、循环展开等。
目标代码生成是将中间代码转化为目标机器代码的过程。
目标机器代码是计算机可以直接执行的指令序列,它与具体的硬件平台相关。
目标代码生成器通常根据目标机器的架构和指令集来生成相应的机器代码。
编译原理是计算机科学中的一门基础课程,它研究程序编译过程中的原理、技术和方法。