编译原理作业

合集下载

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

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

《编译原理》作业参考答案一、填空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 第二章词法分析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计算小数点右面数字的个数)。

编译原理作业(答案new)

编译原理作业(答案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 对于下列语言分别写出它们的正规表达式。

(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。

编译原理作业

编译原理作业

习题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章引言1、解释下列各词源语言:编写源程序的语言(基本符号,关键字),各种程序设计语言都可以作为源语言。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

编译原理题目

编译原理题目

编译原理题目
1. 词法分析器的设计与实现
2. 语法分析器的生成方法与工具
3. 语法制导翻译的算法与实现
4. 语法制导的代码生成技术
5. 语义分析器的设计与实现
6. 属性文法的定义和属性计算方法
7. 中间代码的生成与优化技术
8. 目标代码生成的方法与实现
9. 解释器与编译器的区别与联系
10. 正则表达式在编译原理中的应用
11. 有限自动机的概念与构建方法
12. 句法制导翻译技术在编译器中的应用
13. 语言语义的表示与验证方法
14. 静态类型检查器的设计与实现
15. 字节码与机器码的转换方法
16. 抽象语法树的构建与遍历算法
17. 参数传递的机制与实现
18. 变量作用域的嵌套与解析方法
19. 优化编译器的关键技术与算法
20. 并行编程在编译器优化中的应用。

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

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

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) 分布式系统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)。

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

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

编译原理习题及答案(整理后)第⼀章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)c. a~b都不⼀定成⽴d. a~b⼀定成⽴5、如果⽂法G是⽆⼆义的,则它的任何句⼦α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由⽂法的开始符经0步或多步推导产⽣的⽂法符号序列是。

编译原理第一章作业

编译原理第一章作业

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春《编译原理》

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) 。

编译原理作业与试题讲解

编译原理作业与试题讲解

试题三:中间代码生成相关问题解答
```
中间代码:`t1 = b + c; a = t1;`
VS
THANKS
感谢观看
试题一:词法分析相关问题解答
示例
源代码:`int a = 10;`
试题一:词法分析相关问题解答
记号分类 int(关键字) a(标识符)
试题一:词法分析相关问题解答
01
=(赋值运算符)
02
10(常数)
;(分隔符)
03
试题二:语法分析相关问题解答
问题描述
语法分析是编译过程中的核心阶段,主要任务是根据语 言的语法规则将记号序列转化为抽象语法树(Abstract Syntax Tree, AST)。请解释什么是抽象语法树,并给 出其构建过程的示例。
03
语法分析
语法分析的定义与任务
定义
语法分析是编译过程中的一个重要阶段,主要任务是将源代码分解成一系列的语法结构,以便后续的 语义分析和代码生成。
任务
确定源代码中各个语句的语法结构,如词法分析、句法分析、语义分析等,并生成相应的语法树。
语法分析的算法与实现
自顶向下分析法
从文法的开始符号出发,逐步向下推导,直到推导出输入符号集合中 的某一个符号。常见的算法有递归下降分析法和预测分析法。
无限循环
在语法分析过程中,如果存在无 限循环的情况,会导致程序崩溃。 解决方法是检查文法的构造,避 免产生无限循环。
语义错误
语法分析只是对源代码的形式进 行解析,无法检测语义错误。解 决方法是在语法分析之后进行语 义分析,检查源代码的语义是否 正确。
04
中间代码生成
中间代码生成的定义与任务
定义
中间代码生成是编译过程的一个阶段,将源代码转换成一种中间表示形式,以 便进一步优化和目标代码生成。

黑大编译原理作业(附答案)

黑大编译原理作业(附答案)

⿊⼤编译原理作业(附答案)编译原理⼀.填空题1.⼀个典型的编译程序,它⼀般包括⼋个⽅⾯的内容:①词法分析程序⑤代码优化程序②语法分析程序⑥⽬标代码⽣成③语义分析程序⑦错误检查处理④中间代码⽣成⑧信息表管理2.编译执⾏和解释执⾏的区别在于:是否产⽣⽬标代码。

3.⼀个⽂法通常可表⽰成⼀个四元式G[S]=(VN,,VT,P,S)。

4.⼀个递归⽂法所产⽣的句⼦,其个数必然是⽆穷个。

5.设G[S]为⼀⽂法,由⽂法的开始符号S推导出的符号串称为G的_句型_。

6.⼀个句型的最左_直接短语_(即规范分析中,最先被规约的⼦串)称为该句型的句柄。

7.Chomsky定义了四类基本的⽂法,分别称之为:①0型⽅法(短语结构)③2型⽅法(前后⽂⽆关)②1型⽅法(前后⽂有关)④3型⽅法(正规)8.词法分析的任务就在于依次扫描输⼊串中的各个字符并从其中识别出⼀系具有独⽴意义的单词,我们通常把构成各个单词的字符串称为该单词的_词⽂。

9.⼀般来说各类单词的语法都能⽤相应的正规(3型)⽂法来描述。

10我们通常把⼀个有限⾃动机表⽰为M=(K,∑,∮,S0,Z)。

11引⼊具有ε动作的NFA主要⽬的是_把识别各类单词的有限⾃动机⽤ε失线连接起来,组成⼀个单⼀的NFA,然后把所得的NFA 确定化后再据此设计编译程序的词法分析器。

12正规⽂法、正规式,在描述语⾔的意义下是等价的。

13状态转换图、状态矩阵、有限⾃动机,在识别语⾔的意义下是等价的。

14状态转换图中初态结点没有射⼊⽮线,终态结点没有射出⽮线。

15通常构造词法分析程序的两种途径是:①⼿⼯⽅式编程②借助⼯具⾃动⽣成。

⼆.判断题1.⽂法和语⾔之间是⼀⼀对应关系。

( × )2.设G1和G2为两个⽂法,若它们所产⽣的语⾔相等,即L(G1)=L(G2),则称G1和G2等价. ( √ )3.每棵语法树的叶从左到右排列组成⼀个句型。

( √ )4.若⽂法G=(VN ,VT,P,S)的每⼀个产⽣式形如A→β,A∈VN,β∈V*,则称为上下⽂⽆关⽂法,通常⽤来描述计算机语⾔的语法结构。

编译原理作业集-第一章-修订版

编译原理作业集-第一章-修订版

第一章引论本章要点:1. 正确理解什么是编译程序;2. 了解编译程序工作的基本过程及各阶段的基本任务;3. 熟悉编译程序的总体结构框图;4. 了解编译程序的构造过程和构造工具。

本章目标:1. 掌握本章的“编译程序”、“交叉编译程序”、“编译前端与编译后端”等基本概念,并能在以后的学习熟练运用;2. 掌握T形图表示。

本章重点:1. 概念比较:①编译程序、解释程序;②诊断编译程序、优化编译程序;③交叉编译程序、可变目标编译程序;④编译前端与编译后端;2. 编译工作过程的五个阶段;3. 编译程序总框;4. 编译程序“移植”。

本章难点1. 编译程序“移植”;作业题及参考答案一、单项选择题:(按照组卷方案,至少8道小题)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. 编译程序处理的对象是源语言。

编译原理 作业答案

编译原理 作业答案

《编译原理》第一次作业参考答案一、下列正则表达式定义了什么语言(用尽可能简短的自然语言描述)?1.b*(ab*ab*)*所有含有偶数个a的由a和b组成的字符串.2.c*a(a|c)*b(a|b|c)* | c*b(b|c)*a(a|b|c)*答案一:所有至少含有1个a和1个b的由a,b和c组成的字符串.答案二:所有含有子序列ab或子序列ba的由a,b和c组成的字符串.说明:答案一要比答案二更好,因为用自然语言描述是为了便于和非专业的人员交流,而非专业人员很可能不知道什么是“子序列”,所以相比较而言,答案一要更“自然”.二、设字母表∑={a,b},用正则表达式(只使用a,b, ,|,*,+,?)描述下列语言:1.不包含子串ab的所有字符串.b*a*2.不包含子串abb的所有字符串.b*(ab?)*3.不包含子序列abb的所有字符串.b*a*b?a*注意:关于子串(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的所有接受状态改为非接受状态,所有非接受状态改为接受状态,得到新的DFA M’. 易知M’识别语言L(R)的补集. 再由正则表达式与DFA的等价性知必存在正则表达式R’,使得L(R’)是L(R)的补集.三、设有一门小小语言仅含z、o、/(斜杠)3个符号,该语言中的一个注释由/o开始、以o/结束,并且注释禁止嵌套.1.请给出单个正则表达式,它仅与一个完整的注释匹配,除此之外不匹配任何其他串. 书写正则表达式时,要求仅使用最基本的正则表达式算子( ,|,*,+,?).参考答案一:/o(o*z|/)*o+/思路:基本思路是除了最后一个o/,在注释中不能出现o后面紧跟着/的情况;还有需要考虑的是最后一个o/之前也可以出现若干个o.参考答案二(梁晓聪、梁劲、梁伟斌等人提供):/o/*(z/*|o)*o/2.给出识别上述正则表达式所定义语言的确定有限自动机(DFA). 你可根据问题直接构造DFA,不必运用机械的算法从上一小题的正则表达式转换得到DFA.~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第三次作业参考答案一、考虑以下DFA的状态迁移表,其中0,1为输入符号,A~H代表状态:01A B AB A CC D BD D AE D FF G EG F GH G D其中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种可能的迁移,总共有3*3=9种迁移.因此,总共有5*5*9=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.用最左推导(leftmost derivation)推导出句子abbcde.S ==> aABe ==> aAbcBe ==> abbcBe ==> abbcde2.用最右推导(rightmost derivation)推导出句子abbcde.S ==> aABe ==> aAde ==> aAbcde ==> abbcde3.画出句子abbcde对应的分析树(parse tree).三、考虑以下文法: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 → F*(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)= {+, *, $, a, b}2.构造识别这一文法所有活前缀(viable prefixes)的LR(0)自动机(参照课本4.6.2节图4.31).STATE ACTION GOTOa b+*$E T F0s4s5123 1s6accept2s4s5r2r27 3r4r4r4s8r44r6r6r6r6r65r7r7r7r7r76s4s593 7r3r3r3s8r38r5r5r5r5r59s4s5r1r17STACK SYMBOLS INPUT ACTION(1)0a+ab*$shift(2)04a+ab*$reduce by F→a(3)03F+ab*$reduce by T→F(4)02T+ab*$reduce by E→T(5)01E+ab*$shift(6)016E+ab*$shift~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~ ~\(≧▽≦)/~《编译原理》第八次作业参考答案一、考虑以下语法制导定义(Syntax Directed Definition):对于输入串gbbabbccd构造带注释的分析树(annotated parse tree).最终答案:34二、以下文法定义了二进制浮点数常量的语法规则:S → L.L | LL → LB | BB → 0 | 1试给出一个S属性的语法制导定义,其作用是求出该二进制浮点数的十进制值,并存放在开始符号S相关联的一个综合属性value中。

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

编译原理作业
P7:1.1;1.2自编2.1;2.2自编2.3;2.4自编2.5自编3.1
自编3.2自编3.3;3.4P100.4.1;4.2自编4.3;4.4自编5.1
自编5.2自编7.1;7.2 自编8.1
P7:1.1
P7;1.2
自编2.1
文法G[S]:S→xSx│y所识别的语言是。

a. xyx
b. (xyx)*
c. x n yx n(n≥0)
d. x*yx*
【解答】
自编2.2
令文法G[N]为
G[N]: N→D∣ND
D→0∣1∣2∣3∣4∣5∣6∣7∣8∣9
(1) G[N]的语言L(G)是什么?
(2) 给出句子0127、34和568的最左推导和最右推导。

【解答】
自编2.3
对于文法G[S]: S→(L)∣aS∣a
L→L, S∣S
(1) 画出句型(S,(a))的语法树;
(2) 写出上述句型的所有短语、直接短语、句柄。

【解答】
自编2.4
已知文法G[S]为S→SaS∣ε,试证明文法G[S]为二义文法。

【解答】
自编2.5
按指定类型,给出语言的文法。

(1) L={a i b j│j>i≥1}的上下文无关文法;
(2) 字母表∑={a,b}上的同时只有奇数个a和奇数个b的所有串的集合的正规文法;
自编3.1
什么是扫描器?扫描器的功能是什么?
自编3.2
结合自动机证明:正规式(ab)*a与正规式a(ba)*是否等价?给出分析过程。

自编3.3
已知自动机DFA如图3-4所示
图3-4 DFA
写出其对应的语言,分别用正规文法和自然语言描述。

【解答】
自编3.4
设有L(G)={a2n+1b2m a2p+1| n≥0,p≥0,m≥1}。

(1) 给出描述该语言的正规表达式;
(2) 构造识别该语言的确定有限自动机(可直接用状态图形式给出)。

【解答】
P100:4.1
P100;4.2
自编4.3
在算符优先分析法中,为什么要在找到最左素短语的尾时才返回来确定其对应的头,能否按扫描顺序先找到头后再找到对应的尾,为什么?
【解答】
自编4.4
设有文法G[S]: S→a|b|(A)
A→SdA|S
(1) 构造算符优先关系表;
(2) 给出句型(SdSdS)的短语、简单短语、句柄、素短语和最左素短语;
【解答】
自编5.1
(1) 四元式之间的联系是通过实现的。

a. 指示器
b. 临时变量
c. 符号表
d. 程序变量
(2) 间接三元式表示法的优点为。

a. 采用间接码表,便于优化处理
b. 节省存储空间,不便于表的修改
c. 便于优化处理,节省存储空间
d. 节省存储空间,不便于优化处理
(3) 表达式(┐A∨B)∧(C∨D)的逆波兰表示为。

a. ┐AB∨∧CD∨
b. A┐B∨CD∨∧
c. AB∨┐CD∨∧
d. A┐B∨∧CD∨
【解答】
自编5.2
(4) 有一语法制导翻译如下所示:
S→bAb {print″1″}
A→(B {print″2″}
A→a {print″3″}
B→Aa) {print″4″}
若输入序列为b(((aa)a)a)b,且采用自下而上的分析方法,则输出序列为。

【解答】
自编7.1
将下面程序划分为基本块并作出其程序流图。

read(A,B)
F=1
C=A*A
D=B*B
if C<D goto L1
E=A*A
F=F+1
E=E+F
write(E)
halt
L1: E=B*B
F=F+2
E=E+F
write(E)
if E >100 goto L2
halt
L2: F=F-1
goto L1
【解答】
自编7.2
试画出如下中间代码序列的程序流图,并求出:
(1) 各结点的必经结点集合D(n);
(2) 流图中的回边与循环。

J=0
L1:I=0
if I< 8 goto L3
L2:A=B+C
B=D*C
L3:if B =0 goto L4
write B
goto L5
L4:I= I+1
if I<8 goto L2
L5:J= J+1
if J<=3 goto L1
halt
【解答】
自编8.1
何谓嵌套过程语言运行时的DISPLAY表?它的作用是什么?【解答】。

相关文档
最新文档