一、填空题(每空1分,共20分) 1.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,中间代码生成,代码优化等几个基本阶段,同时还会伴有__表格处理___和 ___出错处理__。
2.若源程序是用高级语言编写的,___目标程序__是机器语言程序或汇编程序,则其翻译程序称为 ___编译程序__ 。
3.编译方式与解释方式的根本区别在于__是否生成目标代码___。
4.对编译程序而言,输入数据是___源程序__, 输出结果是__目标程序___。
5.若两个正规式e1和e2所表示的正规集相同,则e1和e2等价,写作e1=e2。
6.一个句型中的最左简单短语称为该句型的___句柄__。
7.词法分析基于__正则___文法进行,即识别的单词是该类文法的句子。
二、是非题(请在括号内,正确的划√,错误的划×)(每个1分,共10分)1.计算机高级语言翻译成低级语言只有解释一种方式。
(×) 2.在编译中进行语法检查的目的是为了发现程序中所有错误。
(×)3.甲机上的某编译程序在乙机上能直接使用的必要条件是甲机和乙机的操作系统功能完全相同。
(√ )4.正则文法其产生式为 A->a , A->Bb, A,B ∈V N , a 、 b ∈V T 。
(×)5.每个文法都能改写为 LL(1) 文法。
(√)(2班做)6.有穷自动机接受的语言是正规语言。
(√)(1班做)7.对任何一个NFA M都存在一个DFA M’,使得L(M’)=L(M).( √ )8.设r和s分别是正规式,则有L(r|s)=L(r)L(s)。
(×)9.确定的自动机以及不确定的自动机都能正确地识别正规集。
(√)10.词法分析作为单独的一遍来处理较好。
(× )11.有穷自动机接受的语言是正规语言。
(√)三、选择题(每小题2分,共20分)1.文法G 产生的_____的全体是该文法描述的语言。
A.( ) 句型B.( ) 终结符集C.( ) 非终结符集D.( ) 句子2.若文法G 定义的语言是无限集,则文法必然是_____。
A.( ) 递归的B.( ) 前后文无关的C.( ) 二义性的D.( ) 无二义性的3.四种形式语言文法中,1型文法又称为_____文法。
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.采用自上而下分析,必须_____。
(2班做)A.( ) 消除左递归B.( ) 消除右递归C.( ) 消除回溯D.( )提取公共左因子9.在规范归约中,用_____来刻画可归约串。
(2班做)A.( )直接短语B.( )句柄C.( )最左素短语D.( )素短语10.词法分析器用于识别_____。
A.( ) 字符串B.( )语句C.( )单词D.( )标识符11.文法分为四种类型,即0型、1型、2型、3型。
其中0型文法是_____。
A. ( ) 短语文法B.( ) 正则文法C.( ) 上下文有关文法D.( ) 上下文无关文法12.一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组_____。
A.( ) 句子B.( ) 句型C.( ) 单词D.( ) 产生式四、简答题(每小题5分,共30分)1.高级语言程序有哪两种执行方式?其特点是什么?答:高级语言程序有编译程序和解释程序两种执行方式;编译程序(Compiler)——将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。
解释程序(Interpreter)——将高级程序设计语言写的源程序作为输入,边解释边执行源程序本身,而不产生目标程序的翻译程序。
2、考虑文法G[S]:S→aSbS|bSaS|(1)试用最左推导说明此文法是二义性的(2)对于句子abab构造两个相应的最右推导(3)对于句子abab构造两个相应的分析树解答:(1) 句子abab有如下两个不同的最左推导:S => aSbS => abS=>abaSbS => ababS => ababS => aSbS => abSaSbS=> abaSbS=> ababS=> abab所以此文法是二义性的。
(2) 句子abab的两个相应的最右推导:S=> aSbS=> aSbaSbS=> aSbaSb=> aSbab=> ababS=> aSbS=> aSb=> abSaSb=> abSab=> abab(3) 句子abab的两棵分析树:(a) (b)3、已知文法G[E] 为:E→T|E+T|E-TT→F|T*F|T/FF→(E) |i①该文法的开始符号(识别符号)是什么?②请给出该文法的终结符号集合V T和非终结符号集合V N。
③找出句型T+T*F+i 的所有短语、简单短语和句柄。
解:①该文法的开始符号(识别符号)是E。
②该文法的终结符号集合VT={+、-、*、/、(、)、i}。
非终结符号集合VN={E、T、F}。
③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i; 简单短语为i、T*F、第一个T;句柄为第一个T。
4. 构造正规式相应的NFA : 1(0|1)*101解:1(0|1)*101对应的NFA为5.画出接受以/*和*/括起来的注释的状态转换图。
.解答:6.用状态转换图表示识别偶数个0或偶数个1的字符串的有穷自动机。
解答:五.计算题(10分) 1、构造下述文法 G[S] 的自动机:①S->A0 ②A->A0|S1|0该自动机是确定的吗?若不确定,则对它确定化。
解:由于该文法的产生式S->A0,A->A0|S1中没有字符集VT 的输入,所以不是确定的自动机。
要将其他确定化,必须先用代入法得到它对应的正规式。
把S->A0代入产生式A->S1有:A=A0|A01|0=A(0|01)|0=0(0|01)*。
代入S->A0有该文法的正规式:0(0|01)*0,所以,改写该文法为确定的自动机为: 由于状态A 有3次输入0的重复输入,所以上图只是NFA ,下面将它确定化: 下表由子集法将NFA 转换为DFA:由上表可知DFA为:2、设计一个状态数最小的DFA,其输入字母表是{0,1},它能接受以00或01结尾的所有序列,并给出相应的正规文法。
(1班做)解答:正规式为:(0|1)*(00|01) 化简:(0|1)*0(0|1)不确定的有穷自动机为:确定化,并最小化得到:正规文法为:S→1S | 0AA→0B | 0 | 1C | 1B→0B | 0 | 1C | 1C→1S | 0A3、对下面的文法G:E→TE’E’→+E|T→FT’T’→T|εF→PF’F’→*F’|εP→(E)|a|b|∧(1)计算这个文法的每个非终结符的First集和Folow集;(2)证明这个文法是LL(1)的;(3)构造它的预测分析表。
解答:(1) 求First和Follow集First(E)=First(T)={(,a,b,∧} ⑦First(E')={+, ε} ⑥First(T)=First(F)={(,a,b, ∧} ④First(T')={(,a,b, ∧, ε}⑤First(F)=First(P)={(,a,b, ∧} ③First(F')={*,ε}②First(P)={(,a,b, ∧} ①(计算顺序)Follow(E)= {#, ) }Follow(E')= Follow(E)={#,)} (1)(使用的产生式)Follow(T) = First(E')\{ε}∪Follow(T') (1,2)= {+}∪{),#}={+,),#}Follow(T')= Follow(T)={+,},#} (3)Follow(F)= First(T')\{ε}∪Follow(T) (3,4)= {(,a,b,∧,+ ,),#}Follow(F')= Follow(F) (5)= {(,a,b,∧,+ ,),#}Follow(P)= First(F')\{ε}∪Follow(F) (5,6)={*,(,a,b,∧,+ ,),#}(2) 证明:∵a. 文法不含左递归;b. 每个非终结符的各个侯选式的First集不相交;c. First(E')∩Follow(E')={+, ε}∩{#,),}=ΦFirst(T')∩Follow(T')={(,a,b,∧, ε}∩{+,)}=ΦFirst(F')∩Follow(F')={*, ε}∩{,a,( ∧,+,},#}= Φ∴改造后的文法满足LL(1)文法的三个条件,是LL(1)文法。
(3)。