




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、编译原理复习题、单项选择题1构造编译程序应掌握。DA.源程序B.目标语言C.编译方法D.以上三项都是2编译程序绝大多数时间花在上。DA.出错处理B.词法分析C.目标代码生成D.表格管理3编译程序是对。 DA.汇编程序的翻译B.高级语言程序的解释执行C.机器语言的执行D.高级语言的翻译4.将编译程序分成若干“遍”,是为了。BA.提高程序的执行效率B.使程序的结构更为清晰概述部分C 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率词法分析部分1DFA M( 见图 1-1)接受的字集为。DA. 以 0 开头的二进制数组成的集合 B. 以 0 结尾的二进制数组成的集
2、合 C. 含奇数个 0 的二进制数组成的集合 D. 含偶数个 0 的二进制数组成的集合 2词法分析器的输出结果是。 CA. 单词的种别编码 C. 单词的种别编码和自身值B. 单词在符号表中的位置D. 单词自身值3正规式 M1 和 M2 等价是指。 CA. M1 和 M2 的状态数相等 B. M1 和 M2 的有向边条数相等 C. M1 和 M2 所识别的语言集相等 D. M1 和 M2 状态数和有向边条数相等 4词法分析器的加工对象是。 CA中间代码B 单词5同正规式( a|b) *等价的正规式为 A (a|b)+Ba*|b*6. 两个 DFA 等价是指: 。 D A. 这两个 DFA 的状态
3、数相同B. 这两个 DFA 的状态数和有向弧条数都相等 C. 这两个 DFA 的有向弧条数相等C源程序D元程序。DC (ab)*D (a*|b*)+D. 这两个 DFA 接受的语言相同7. 下列符号串不可以由符号集 S a,b 上的正闭包运算产生的是: (A )A. B. aC. aa D. ab 8称有限自动机 A1 和 A2 等价是指 。DA A1 和 A2 都是定义在一个字母表上的有限自动机 BA1 和 A2 状态数和有向边数相等编译原理复习题CA1和 A2状态数或有向边数相等D A1 和 A2 所能识别的字符串集合相等 9同正规式( a|b) +等价的正规式是 _CD9。BACA(a|
4、b)*C(ab)* (ab) 语法分析BDa|b)(a|b)a|b)|( a|b)1在规范归约中,用来刻画可归约串。 BA. 直接短语 B. 句柄C. 最左素短语 D. 素短语 2若 B 为非终结符,则 A B为项目。 DA. 归约B. 移进C. 接受D. 待约 3如果文法 G 是无二义的,则它的任何句子 。 AA. 最左推导和最右推导对应的语法树必定相同B. 最左推导和最右推导对应的语法树可能不同C. 最左推导和最右推导必定相同D. 可能存在两个不同的最左推导,但它们对应的语法树相同 4下列动作中,不是自下而上分析动作的是:。 BA. 移进B. 展开C. 接受D. 报错6若 a 为终结符,则
5、 A a为项目。 BA. 归约B. 移进C. 接受D. 待约7语法分析时所依据的是。 AA. 语法规则B. 词法规则C. 语义规则D. 等价变换规则8文法 G: SxSx|y 所识别的语言是。CA. xyxB. (xyx)*C. xnyxn (n0)D. x*yx*9下列动作中,不是自上而下分析动作的是:。 CA. 匹配B. 展开C. 移进D. 报错10若 A 为非终结符,则 A 为 项目。 A A. 归约B. 移进C. 接受D. 待约11文法 G:SxSx| xS|y 所识别的语言是。 AA. x myxn(m n 0)B. (xyx)*C. x nyx n(n 0)D. x*yx*13由文
6、法的开始符号出发经过若干步(包括0 步)推导产生的文法符号序列称为 。 BA语言B句型C句子D 句柄14在自上而下的语法分析中,应从开始分析。 CA句型B句子C文法开始符号D 句柄15一个文法 G,若 ,则称它是 LL ( 1)文法。 CA G中不含左递归BG 无二义性CG的 LL (1)分析表中不含多重定义的条目D G中产生式不含左公因子16项目 S S. 为。D编译原理复习题A.归约项目B.移进项目C.待约项目D.接受项目17. 语法分析器的输入是:。AA. Token 序列B. 源程序C. 目标程序 D. 符号表18. 在 LR (0)的 Action 表中,如果某行中存在标记为“rj”
7、的栏,则:A. 该行必定填满“ rj ”C. 其他行可能也有“ rj ”19. LR 分析过程中栈内存储的是 A. 活前缀B. 该行未必填满“ rj ”D. goto 表中也可能有“ rj ” 。AB. 前缀C. 归约活前缀 D. 项目20. 文法 G:S x xS | y 所识别的语言是 。 D A xxynB (xxy) nC xxnyxD (xx) n y21. 若状态 k含有项目“ A .”,对任意非终结符 a,都用规则“ A ”归约的语法分析方法是。BA LALR 分析法BLR(0) 分析法C LR(1)分析法D SLR(1)分析法22. 在 SLR (1)的 Action 表中,如
8、果某行中存在标记为“ rj ”的栏,则:。BA. 该行必定填满“ rj ”B. 该行未必填满“ rj”C. 其他行可能也有“ rj”D. goto 表中也可能有“ rj”23. 一个 指明了在 LR 分析过程中的某个时刻所能看到产生式多大一部分。 DB. 前缀A. 活前缀C. 归约活前缀 D. 项目24. 若状态 k 含有项目“ A .”,且仅当输入符号 aFOLLOW(A) 时,才用规则“ A ”归约的语法分 析方法是。DA LALR 分析法BLR(0) 分析法C LR(1)分析法DSLR(1) 分析法25设有文法 GT:T T*F|FFFP|PP(T)|a 该文法句型 T*P (T*F)
9、的句柄是下列符号串 。C A. ( T*F )B. T*F C. PD. P(T*F)26 LR 分析表中的转移表( goto)是以作为列标题的。 BA终结符B 非终结符 C终结符或非终结符D表示状态的整形数27 编译程序的语法分析器必须输出的信息是。 AA 语法错误信息B 语法规则信息C语法分析过程 D语句序列 28下列项目中为可移进项目的是 。 CA E E .BL.CL.-LD FL*F.29 LR 分析表中的动作表( action )是以 作为列标题的。 DA 终结符B非终结符C终结符或非终结符D终结符和结束符 #30下列项目中为可归约项目的是。 BAE .EBL.CL-.LDFL*.
10、F33LR 分析器的核心部分是一张分析表,该表由 组成。 D编译原理复习题A ACTION 表BGOTO 表C预测分析表D ACTION 表和 GOTO 表34在递归下降子程序方法中,若文法存在左递归,则会使分析过程产生_ 。DA回溯B 非法调用C有限次调用D无限循环35最左简单子树的叶结点,自左至右排列组成句型的 。 CA短语B 句型C句柄D间接短语36由文法的开始符号出发经过若干步(包括0 步)推导产生的文法符号序列中,如果只含有终结符,则文法符号序列称为 。 CA语言B 句型C句子D句柄37LL (1)分析法中“ 1”的含义是在输入串中查看一个输入符号,其目的是 。CA 确定最左推导B确
11、定句柄C确定使用哪一个产生式进行展开D确定是否推导语义分析1.表达式( a b)( e f)的逆波兰表示为。BA ab efBabefCabefDab ef2中间代码生成时所依据的是。 CA 词法规则B语法规则C语义规则D等价变换规则3 -a-(b*c/(c-d)+(-b)*a) 的逆波兰表示是。 (代表后缀式中的求负运算符 ) CA. abc*cd-ba*+/-B. abc*cd-ba*+/-C. abc*cd-/ba*+-D. abc*/cd-ba*+-4有文法 G 及其语法制导翻译如下所示(语义规则中的* 和+分别是常规意义下的算术运算符) :E E(1) T E.val = E (1)
12、 .val * T.valE TE.val =T.valT T(1) #n T.val= T(1) .val + n.val T nT.val =n.val则分析句子1 2 3 # 4其值为。 CA. 10B34C. 14D.545有文法 G 及其语法制导翻译如下所示(语义规则中的* 和+分别是常规意义下的算术运算符)E E(1) T E.val = E (1) .val * T.valE T E.val = T.valT T(1) # n T.val = T(1) .val + n.val T n T.val = n.val 则分析句子 2 3 # 4 其值为 。 CA. 10B. 21C.
13、 14D. 246间接三元式表示法的优点为 。AA.采用间接码表,便于优化处理B.节省存储空间,不便于表的修改C.便于优化处理,节省存储空间D.节省存储空间,不便于优化处理7文法 GS 及其语法制导翻译定义如下:产生式语义动作S Sprint(S.num)S (L)S.num = L.num +1编译原理复习题S.num = 0L L(1), SL.num = L(1).num + S.numL S L.num = S.num若输入为 (a,(a),且采用自底向上的分析方法,则输出为。 CA 0B1C 2D48四元式之间的联系是通过 实现的。 BA 指示器B 临时变量C符号表D 程序变量9表达
14、式( a b)( cd)的逆波兰表示为。BA ab cdBabcdC ab cdDab cd10表达式 a+b+c+d 的逆波兰表示为。 BA a+bc+d+C ab+cd+B ab+c+d+D abc+d+11.有文法 G 及其语法制导翻译如下所示(语义规则中的*和+分别是常规意义下的算术运算符)T E.val = E(1).val * T.valE.val = T.valT.val = T(1).val + n.val T.val = n.val3 # 4 其值为E E(1) ETTT(1)# n T n 则分析句子 A. 10 C. 14 12表达式 Aa+bc+。BB. 21D. 24
15、a+b+c 的逆波兰表示为。BB ab+c+abc+文法 GS 及其语法制导翻译定义如下: 产生式语义动作S Sprint(S.num)S (L)S.num = L.num +1S aS.num = 0L L(1), SL.num = L(1).num + S.numL S L.num = S.num 若输入为 (a, a),且采用自底向上的分析方法,则输出为 A0C13.D abc+。BC2D414有一语法制导翻译定义如下:SbAbprint“ 1”A ( Bprint“ 2”Aaprint“3”B aA)print“4”若输入序列为b( a( a(aa)b,且采用自底向上的分析方法,则输出
16、序列为A 32224441B34242421C 12424243D3444221215赋值语句X:=-(a+b)/(c-d)-(a+b*c)的逆波兰表示是。CB1。BA. Xab+cd-/-bc*a+-:= B. Xab+/cd-bc*a+-:=C. Xab+-cd-/ a bc* +-:=编译原理复习题+表示符号连接运算:D. Xab+cd-/abc* +-:= 16有一语法制导翻译定义如下,其中 S Bprint B.versB aB.vers=aB bB.vers=bB BaB.vers=a+B.versB BbB.vers=b+B.vers。DD babaD词法错误若输入序列为 aba
17、b,且采用自底向上的分析方法,则输出序列为A aabbB abab C bbaa17编译程序不能检查、处理的错误是程序中的 。 BA 静态语义检查B动态语义检查C语法错误(优化、存储、错误管理)1.在编译过程中,如果遇到错误应该。CA. 把错误理解成局部的错误B. 对错误在局部范围内进行纠正,继续向下分析C. 当发现错误时,跳过错误所在的语法单位继续分析下去D. 当发现错误时立即停止编译,待用户改正错误后再继续编译、填空题 概述部分: 1编译程序的开发常常采用自编译、 交叉编译 、 自展 和移植等技术实现。 2解释程序和编译程序的区别在于 是否生成目标程序 。3如果编译程序生成的目标程序是汇编
18、语言程序,则源程序的执行分为3 个阶段: 编译阶段 、 汇编阶段 和 运行阶段 。4编译程序工作过程中,第一阶段输入是源程序 ,最后阶段的输出为 目标程序 。5编译过程通常可分为 5 个阶段 词法分析阶段 、 语法分析阶段 、 语义分析和中间代码生成阶段 、 优化阶段和目标代码生成阶段。6如果编译阶段生成的目标程序是某特定计算机系统的机器代码程序,则源程序的执行分为两大阶段: 编译阶段 和 运行阶段 。7对编译程序而言,输入数据是源程序 ,输出结果是 目标程序 。8贯穿于编译程始终的工作有符号表处理和出错处理。词法分析部分:1词法分析的工作是将源程序中的字符串 变换成 单词符号流 的过程,所遵
19、循的是语言的构词规则 。2若两个正规式所表示的正规集 相同,则认为二者是等价的。3若两个正规式所表示的正规集相同,则认为二者是等价 的。4正规式 R1 和 R2 等价是指 表示相同的正规集 。5词法分析器的输入是源程序字符串,输出结构是二元式(单词种别, 单词自身的值) 。词法分析所遵循的是语言的 构词 规则。6确定的有限自动机是一个五元组,包含的五个元分别是:状态集合、字母表、初态、终态集、状态转换函数集合 。7有限自动机是更一般化的状态转换图, 它分为 确定的有限自动机 DFA 和 非确定的有限自动机 NFA编译原理复习题两种。8NFA 和 DFA 的区别主要有两点:其一是 NFA 可以有
20、若干个初始状态,而 DFA 仅有一个初始状态 其二是 NFA 的状态转换函数 f 不是单值函数,而是一个多值函数 。语法分析部分: (基本概念、 LL (1)、LR(0)、SLR(1)、递归下降子程序)1 语法分析的方法通常分为两类:自上而下分析方法 和 自下而上分析方法2文法中的终结符集和非终结符集的交集是空集 。3一个句型的最左直接短语称为该句型的_句柄 。4规范归约是最右推导 的逆过程。5自下而上语法分析中分析器的动作有_移进、归约 、_接受 _ 、_报错 _。6自上而下语法分析中分析器的动作有_匹配终结符 、 _展开非终结符 _、_分析成功、报错 _。7常用的自上而下语法分析方法有递归
21、下降子程序方法和预测分析表方法(LL( 1)方法)。8常用的自下而上语法分析方法有算符优先分析法和LR 分析法。9一个 LL(1) 分析器由一张 LL(1) 分析表(预测分析表) 、 一个先进后出分析栈 和一个 控制程序(表驱动程序)组成。10一个 LR 分析器由 分析栈 、 分析表 和总控程序三个部分组成。11LR(0) 分析法的名字中, “L”表示 自左至右分析输入串 ,“R”表示 采用最右推导的逆过程即最左 归约 。“0”表示 向右查看 0 个字符 。12LL(1)分析法中,第一个 L 的含义是 从左到右扫描输入串 ;第二个 L 的含义是 分析过程中采用 最左推导 ;“ 1”的含义是 只
22、需向右查看一个符号就可以决定如何推导 。13LR(1)文法的含义是: L 表明自左至右扫描输入串 _,R表明_采用最右推导的逆过程(最左归约)方法进行分析 _。14一个上下文无关文法是 LL(1) 文法的充分必要条件是:对每一个非终结符 A 的任何两个不同产生式 A,则有 FIRST()| ,有下面的条件成立: (1)FIRST()FIRST(=) ?;(2)假若 FOLLOW(A) = ?。15对于 LL (1)文法中的任何产生式 A| ,则需要满足 _First(_ ) First( )= 、 _若_ =* , 则_ First(_ ) _Follow(A)=_ _。16LR 分析器的核心
23、部分是一张分析表, 该表包括 动作( ACTION )表 和 状态转换( GOTO )表 等 两个子表。17关于非终结符 A 的直接左递归产生式: A A|,其中 、 是任意的符号串且 不以 A 开头,则可 以将 A 的产生式改写为右递归的形式为:AA , AA| 。18在消除回溯, 提取公共左因子时, 关于 A 的产生式 A 1 | 2 | | i | i+1 | | j,可以改写为: A A | i+1 | | j , A 1 | |i 。19 设 GS 是一文法,如果符号串 x 是从识别符号推导出来的,即有 S x,则称 x 是文法 GS的 _*句型_,若 x仅由终结符号组成,即 S x
24、,x VT ,则称 x为文法 GS的_句子 。20已知文法 GS:SeT|RTTDR| R dR|D a|bd求 FIRST(S)=e ,d,a,b, ; FOLLOW(D)=_d ,#。语义处理部分:1文法符号的属性有两种,一种称为继承属性 ,另一种称为 综合属性 。2编译过程中,常见的中间语言形式有逆波兰表示法 、 抽象语法树 、 三元式 、 四元式 。3语法制导翻译的方法就是为每个产生式配上一个翻译子程序(语义动作或语义子程序) ,并在语编译原理复习题法分析的同时执行它们。4编译过程中,常见的中间语言形式有逆波兰表示法 、 抽象语法树 、 三元式 、 四元式 。6文法符号的属性有两种,一
25、种称为继承属性 ,另一种称为 综合属性 。7四元式之间的联系是通过 临时变量 实现的。 8在属性文法中,终结符只有 综合 属性。10语法制导翻译的方法就是为每个产生式配上一个翻译子程序(语义动作或语义子程序) ,并在语法分析的同时执行它们。11目前较常见的语言语义的描述形式是_属性文法 ,并使用 _语法制导翻译方法完成对语法成分的翻译。(优化、存储、错误管理)1.代码优化的含义是: 对代码进行 间效率。等价变换 ,使得变换后的代码具有更高的时间效率 和 空2.按照优化对象所涉及的程序范围,优化分为局部优化3.基本块,是指程序中顺序执行的语句序列4.从编译角度看,分配目标程序数据空间的基本策略有
26、: 和堆式动态分配策略循环优化 和 全局优化,其中只有一个静态分配策略入口 和一个 出口栈式动态分配策略三、判断题123设 r 和 s 分别为正规式,则有 L(r|s) = L(r) | L(s). 。 ( 一个文法的所有句型的集合形成该文法所能接受的语言。 语法分析之所以采用上下文无关文法是因为它的描述能力最强。 由于 LR(0) 分析表构造简单,所以它的描述能力强,适用面宽;)( )LR(1) 分析表因构造复杂而描述能力弱,4 适用面窄。 ( ) 5逆波兰表示法表示表达式时无需使用括号。( )6自动机 M 和 M 的状态个数不同,则二者必不等价。( 7 LL(1) 文法一定不含左递归和二义
27、性。 ( ) 8所有 LR 分析器的总控程序都是一样的,只是分析表各有不同。 9无论是三元式表示还是间接三元式表示的中间代码,其三元式在三元式表中的位置一旦确定就很难改 变。 10 11( )121314151617181920212223242526( ) 三地址语句类似于汇编语言代码,可以看成中间代码的一种抽象形式。 最左推导也被称为规范推导。 ( ) 运算对象排列的先后顺序在后缀式和中缀式中不同。 ( ) 出现在移进 -归约分析器栈中的内容被称为文法 G 的活前缀。( LR 方法可以分析含有左递归的文法。 ( ) 三元式的编号具有双重含义,既代表此三元式,又代表三元式存放的结果。 语义规
28、则中的属性有两种:综合属性与继承属性。 ( ) 移进 -归约分析器的格局中栈的内容一般是文法符号与状态。( 由于递归下降子程序方法较 LL ( 1)方法简单,因此它要求文法不必是 四元式的编号具有双重含义,既代表此四元式,又代表四元式存放的结果。 用高级语言编写的源程序必须经过编译,产生目标程序后才能运行。 源程序到目标程序的变换是等价变换,即两者结构不同,但语义是一致的。 对于任何一个正规式 e,都存在一个 DFA A , 最小化的 DFA ,它的状态数最小。 (NFA 的确定化算法具有消除边的功能。 ( 每个非终结符产生的终结符号串都是该语言的子集。 一个语言的文法是不唯一的。 ( )(
29、)LL)1)文法。( )使得)e)=L(A)编译原理复习题 27语法错误校正的目的是为了把错误改正过来。( )28源程序和目标程序是等价关系。 ()29编译程序中错误处理的任务是对检查出的错误进行修改。( )30使用有限自动机可以实现单词的识别。 ()31一个非确定的有限自动机 NFA 可以通过多条路径识别同一个符号串。 ( )32最小化的 DFA 所识别接受的正规集最小。()33一个语言(如 C 语言)的句子是有穷的。()34LL (1)方法又称为预测分析方法。 ()35一个 LL (1)文法是无二义和无回溯方法。)36语法分析器可以检查出程序中的所有错误。)37LR 分析法是自上而下的语法
30、分析方法。()三、多项选择题1. 编译器的各个阶段的工作都涉及到( AE)A. 表格处理B.词法分析C. 语法分析D.语义分析E. 出错处理2. 令 a,b ,则 上的符号串的全体可用下面的正规式表示。 ( ABE )A. (a|b)*B. (a*|b*)*C. (a|b)+D. (ab)*E. (a*b*)*3.自上而下的分析方法有: (AD )A. 递归下降分析法B. LR (0)分析法C. LALR (1)分析法D. LL (1)分析法E. SLR( 1)分析法4.文法 G:GS: SCDAbbAC aCABa aBCbCBBbbBAD aDCBD bDD Aa bD是( A )。A.
31、0 型文法B. 1 型文法C. 2 型文法D. 3 型文法E. 上下文有关文法5. 对 LR 分析表的构造,有可能存在的动作冲突有: ( AD ) A. 移进 /归约冲突B. 移进/移进冲突C. 归约冲突 D. 归约 /归约冲突E. 移进冲突6. 一个编译器可能有的阶段为( ABCDE )A. 词法分析B. 语法分析C. 语义分析D. 中间代码生成E. 目标代码生成7 令 a,b ,则 上的所有以 b开头,后跟若干个(可为 0 个) ab的符号串的全体可用下面的正规式表 示。( AB )B. (ba)*bD. (ba)+bA.b (ab)*C. b(a|b)+编译原理复习题E. b (a|b)
32、*8. 自下而上的分析方法有: (BCE )A. 递归下降分析法B. LR ( 0)分析法C. LALR (1)分析法D. LL ( 1)分析法E. SLR ( 1)分析法9. 一般来说,编译器可分为前端和后端,下列编译阶段可被划分为编译的前端的有:ABCDE )A. 词法分析C. 语义分析10令 a,b ,则B. 语法分析D. 中间代码生成 E. 中间代码优化 上的符号串的全体可用下面的正规式表示。ABE )A. (a|b)* B. (a*|b*)*C. (a|b)+ D. (ab)*E. (a*b*)*11下列符号串是符号集 a,b 上的正规式的有: ( ABCDE )A. B. aC.
33、ab D. (ab a) (ab a)( ABDE )B. “或 ”运算服从结合律D. “连接 ”运算服从结合律E. ab ab 12正规式服从的代数规律有:A. “或 ”运算服从交换律C. “连接 ”运算服从交换律E. “连接 ”运算可对“或”运算进行分配 13 令 a,b ,则 上的所有以 b 开头,后跟若干个(可为 0 个) ab的符号串的全体可用下面的正规 式表示。( AB )A.b (ab)* B. (ba)*b C. b(a|b)+D. (ba)+b E. b (a|b)*14 一个 LR 分析器包括: (ADE )A. 一个总控程序 B. 一个项目集C. 一个活前缀 D. 一个分
34、析栈E. 一张分析表15 LR 分析器的核心部分是一张分析表,该表包括(DE )等子表。A. LL ( 1)分析表 B. LR (1)分析表C. SLR ( 1)分析表 D. Action 表E. goto 表16 Action 表中的每一项 ActionS,a 所表示的动作可能为: ( ABCD )A. 移进 B. 接受 C. 归约D. 出错 E. 待约 五简答题1构造正规表达式 (a|b)*|aa)*b 的 NFA 。 解:a4b10编译原理复习题2设 M=(x,y, a,b, f, x, y)为一非确定的有限自动机,其中f 定义如下:f(x,a)=x,y fx,b=yf(y,a)= fy
35、,b=x,y试构造相应的确定有限自动机M 。解:对照自动机的定义 M=(S, ,f,So,Z) ,由 f的定义可知 f(x,a) 、 f(y,b)均为多值函数,因此 M 是一非确定 有限自动机。先画出 NFA M 相应的状态图,如下图所示。用子集法构造状态转换矩阵,如下表所示。IIaIbxx,yyyx,yx,yx,yx,y将转换矩阵中的所有子集重新命名,形成下表所示的状态转换矩阵,即得到M =(0,1,2,a,b,f,0,1,2)M 状态转换图如下图所示。a, b状态f字符ab02112222注意:本题由于集合的命名和先后顺序不同,可能最终结果不同。 )3画出编译程序的总体结构图,简述各部分的
36、主要功能。解:编译程序的总体框图如下所示:11编译原理复习题(1)词法分析器,又称扫描器,它接受输入的源程序,对源程序进行词法分析,识别出一个个单词符 号,其输出结果是二元式 (单词种别,单词自身的值 )流。( 2)语法分析器,对单词符号串进行语法分析(根据语法规则进行推导或归约),识别出程序中的各类语法单位,最终判断输入串是否构成语法上正确的句子。(3)语义分析及中间代码生成器,按照语义规则对语法分析器归约出(或推导出)的语法单位进行语 义分析并把它们翻译成一定形式的中间代码。 编译程序可以根据不同的需要选择不同的中间代码形式, 有 的编译程序甚至没有中间代码形式,而直接生成目标代码。(4)
37、优化器对中间代码进行优化处理。一般最初生成的中间代码执行效率都比较低,因此要做中间代 码的优化,其过程实际上是对中间代码进行等价替换,使程序在执行时能更快,并占用更小的空间。(5)目标代码生成器,把中间代码翻译成目标程序。中间代码一般是一种与机器无关的表示形式,只 有把它再翻译成与机器硬件直接相关的机器能识别的语言,即目标程序,才能在机器上运行。(6)表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。编译程序各 个阶段所产生的中间结果都记录在表格中, 所需要的信息也大多从表格中获取, 整个编译过程都在不断和 表格打交道。( 7)出错处理程序对出现在源程序中的错误进行处理
38、。如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。 编译程序的各个阶段都有可能发现错误, 出错处理程序要对发现的错误进行 处理、记录,并反映给用户。4构造一个 DFA ,它接受 = 0, 1 上所有满足如下条件的字符串:每个1 后面都有 0 直接跟在右边。解:(1) 0*(0|10)*0* 或者 (0|10)*(2)NFA(2 分)子集法确定化II0I112编译原理复习题X, 0, 1, 3, Y0, 1, 3, Y20, 1, 3, Y0, 1, 3, Y221, 3, Y-1, 3, Y1, 3, Y2重新命名状态,即得:S0112322334-443 最小化首先分为终
39、态集和非终态集3 1, 2, 4 因为 10 = 2 20 = 2 40 = 4 状态均属于集合 1, 2, 4 ,所以对于输入符号 0不能区分开 1,2,4 三个状态; 11 = 3 2 1 = 3 4 1 = 3 状态均属于集合 3 ,所以对于输入符号 1: 3 1, 2, 4 ,其对应的 DFA 如下图所示:5 写出 C 语言标识符集(字母或下划线开头的由字母、数字、下划线构成的串)的正规式。 解答:用 D 表示数字 0-9,用 L 表示字母 a-z|A-Z ,则 C 语言标识符的正规式为:L|_)(L|D|_)*语法分析部分:6构造一文法,使其描述的语言L = | (a, b)* ,且
40、 中含有相同个数的 a和 b。解:S | aA|bBA b| bS| aAAB a| aS| bBB7对于文法 G(S) :S (L) | aS | aL L, S | S(1) 画出句型 (S, (a)的语法树。13编译原理复习题(2) 写出上述句型的所有短语、直接短语和句柄。解:(1) 句型(S, (a)的语法树如下图所示:(2) 从语法树中可以找到( 3分)短语: a; (a); S; S,(a); (S, (a) 直接短语: a; S句柄: S8令文法 GN 为GN: N D|NDD 0|1|2|3|4|5|6|7|8|9 给出句子 568 的最左、最右推导。解:最左推导: N ND
41、NDD DDD 5DD 56D 568 最右推导: N ND N8 ND8 N68 D68 5688已知文法 GA: A aABl|aBBb|d试给出与 GA 等价的 LL(1) 文法 GA ; 解: GA :A aAA ABl | BdBB bB| 9试构造下述文法的 SLR(1) 分析表。GA: A aABl|aBBb|d解:拓广文法(0)SA(1)A aABl(2)Aa(3)B Bb(4)Bd14编译原理复习题First (A )=afollow(A)=# ,dFirst(B)=dfollow(B)=lSLR(1)分析表如下:abdl#AB0S211ACC2S2R2R233S454R45
42、S7S66R1R17R310. 试构造下述文法的 LL(1) 分析表。GS: S (L) |a LL,S|S 解:消除左递归:G(S): S (L) | aL SL L , SL| 构造 FIRST 集,如下: (1)FIRST(S) = (, a (2)FIRST(L) = (, a( 3) FIRST(L ) = , 构造 FOLLOW 集如下:(1) FOLLOW(S) = #, , ) (2)FOLLOW(L) = )15(3) FOLLOW(L ) = )编译原理复习题LL(1) 分析表()a#SS (L)S aLL SLL SL LL L ,SL11已知文法 GS: S aSbS|
43、bSaS| 试证明 GS 是二义文法证明: 该文法产生的语言是 a 的个数和 b 的个数相等的串的集合。该文法二义,例如句子 同的最左推导。S aSbS abS abaSbS ababS abababab 有两种不S aSbS abSaSbS abaSbS ababS abab12已知文法:S ( L |aL S , L| )判断是不是LL(1)文法,如果是请构造文法 的预测分析表,如果不是请说明理由。【解】1)求各非终结符的FISRT 集和 FOLLOW 集:First(S)= (, a FIRST(L) = ) FIRST(S) = (, ), a FOLLOW(S) = , # FOLL
44、OW(L) = FOLLOW(S) = , # FIRST( L) a= FIRST(S , L) )= 所以是 LL (1)文法2)预测分析表:(a#SS ( LS aLL S , LL S , LL )13文法16S A a | b A c | d c | b d a A d编译原理复习题构造识别活前缀的 DFA 。请根据这个 DFA 来判断该文法是不是 SLR(1)文法并说明理由。解】Follow(S)=#Follow(A)=a,cI4 存在冲突且 Follow(A) c= cI7 存在冲突且 Follow(A) a= a 所以不是 SLR(1)文法 14设有文法 GS:SS*S|S+S
45、|(S)|i该文法是否为二义文法 ,并说明理由?解】该文法是二义文法,因为该文法存在句子i*i+i, 该句子有两棵不同的语法树如图所示。Si(1)ii iSi(2)i分析表。GD: D TLTint | realLid RR , id R |【解】 FIRST(T)=intreal FOLLOW(T)= id FIRST(L)=idFOLLOW(L)= #FIRST(R)=FOLLOW(R)= #FIRST(D)=intreal FOLLOW(D)=#15. 构造下面文法的LL(1)因为 FIRST(int) FIRST(real)= 17FIRST( , id R ) FOLLOW(R)=
46、所以是 LL( 1)文法, LL(1)分析表如下:intrealid#编译原理复习题DDTLDTLTTintTrealLL id RRR , id RRSLR(1)16给定文法 S aS|bS|a ,下面是拓广文法和识别该文法所产生的活前缀的DFA。判断该文法是否是文法:如果是构造其 SLR(1) 分析表,如果不是请说明理由。(1) 将文法 G(S)拓广为 G(S) :(0)S S(1)S aS(2) S bS(3) S a(2) 识别该文法所产生的活前缀的 DFA如图 1 所示。图118解】注意到状态 I 1存在“移进 -归纳”冲突,计算 S 的 FOLLOW集合:FOLLOW(S)=# a b FOLLOW(R)= 可以采用 SLR冲突消解法,得到如下的 SLR分析表。 从分析表可以看出,表中没有冲突项,所以该文法是 SLR(1) 文法。表 1 SLR 分析
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025宁夏民族职业技术学院辅导员考试题库
- 山东省曲阜师范大学附属中学2025届高三六校第一次联考化学试卷含解析
- 人力搬运合同标准文本
- 出让厂房用地合同标准文本
- 买车维修合同标准文本
- 江苏省南通市启东市启东中学2025届高考化学一模试卷含解析
- 广东省揭阳市华侨高级中学2025届高三最后一卷化学试卷含解析
- 2025届江西省南昌十九中学高三压轴卷化学试卷含解析
- 反腐廉洁观后感
- 入学房屋租赁合同范例
- 安徽省 2025 年九年级中考历史模拟试卷二(含答案)
- 2025年国家铁路局机关服务中心招聘7人历年自考难、易点模拟试卷(共500题附带答案详解)
- 武汉市部分学校2024-2025学年下学期3月考七年级数学试题(含答案)
- 2024-2030全球动态细胞分析行业调研及趋势分析报告
- 河北省石家庄市2025届高三下学期3月一模试题 数学 含答案
- 湖南中烟工业有限责任公司招聘考试真题2024
- 电梯维护保养
- 2025年全国高考体育单招政治时事填空练习50题(含答案)
- CB-T4528-2024《船舶行业企业应急管理要求》
- (高清版)DZT 0399-2022 矿山资源储量管理规范
- 宝石花鑫盛油服公司考试题
评论
0/150
提交评论