编译原理阶段练习一

合集下载

编译原理样题1(有答案)

编译原理样题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阶段练习题及答案,这是其中一个阶段共3个阶段。答案在后面

编译原理第1阶段练习题及答案,这是其中一个阶段共3个阶段。答案在后面

江南大学网络教育第一阶段练习题及答案,这是其中一个阶段共3个阶段。

答案在后面考试科目:《编译原理》第章至第章(总分100分)__________学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一单选题 (共4题,总分值20分,下列选项中有且仅有一个选项符合题目要求,请在答题卡上正确填涂。

)1. 若一个文法是递归的,则它所产生的语言的句子是()。

(5 分)A. 无穷多个B. 有穷多个C. 可枚举的D. 个数是常量2. 文法G[A]:A→ε A→aB B→Ab B→a是()。

(5 分)A. 0型文法B. 1型文法C. 2型文法D. 3型文法3. 词法分析器的输入是()。

(5 分)A. 单词符号串B. 源程序C. 语法单位D. 目标程序4. 一个上下文无关文法 G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组()。

(5 分)A. 句子B. 句型C. 单词D. 产生式二填空题 (共2题,总分值10分 )5. 编译程序的功能可以分解为词法分析、语法分析、__________、中间代码生成、中间代码优化、目标代码生成。

(5 分)6. 微小语言Micro的单词有下面的几种:标识符、__________、实常数、保留字、__________、换行符。

(5 分)三简答题 (共2题,总分值20分 )7. 给出与正规式R=1(0|1)*101等价的NFA。

(10 分)8. 写出下面程序经词法分析后的TOKEN表示。

begin var X:real;var J:integer;read(J);J:=J+(J*20);X:=J-1;Write(2*J+X)End(10 分)四综合计算题 (共2题,总分值50分 )9. 已知文法G(S) S→a| (T) T→T,S|S写出句子((a,a),a)的规范归约过程及每一步的归约规则和句柄。

(25 分)10. 已知文法 G[E] 为:E→T|E+T|E-T T→F|T*F|T/F F→(E)|i①该文法的开始符号(识别符号)是什么?②请给出该文法的终结符号集合 Vt 和非终结符号集合 Vn 。

编译原理词法分析习题集带答案

编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析一、是非题(请在括号内,正确的划√,错误的划×)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.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

编译原理练习题及答案

编译原理练习题及答案

第一章练习题(绪论)一、选择题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)。

编译原理练习一附答案

编译原理练习一附答案

编译原理练习一附答案一、单选题(每题2分,共20分)1.编译器的()阶段可将源程序的字符流收集到若干记号中。

A. 语法分析B. 语义分析C. 代码生成D. 词法分析2. 文法A→aA | b属于正则文法,正则文法在乔姆斯基层次中对应于()文法。

A. 1型B. 2型C. 3型D. 0型3. 某C语言源代码文件包含#include <stdio.h>,()将对源代码进行处理,把文件stdio.h包含进去。

A.编译器B.解释器C.汇编器D.预处理器4. LL(1)文法的充要条件是()。

A.对于文法中的每条产生式U→α1|α2|…|αn,要求FIRST(αi)∩FIRST(αj)=Φ(i≠j)B.该文法对应的LL(1)分析表中每个项目最多只有一条产生式。

C.A和BD.都不是5. 以下说法中正确的是()。

A.任何语言都可以描述为一个正则表达式。

B.对于任何一个NFA M,都存在一个DFA M’,满足L(M)= L(M’)。

C.任何一个DFA只有一个终态。

D.NFA的弧上标记只含输入字母表中的元素。

6.合成属性的计算可以通过对语法树进行()遍历进行。

A. 前序B.中序C.后序D.任意7.乔姆斯基的2型文法是这样一种语言,其产生式限制为()。

A. α->βB. P->βC. P->a或P->aβD. αPγ->αβγ8. 正则式的“*”读作()。

A. 并且B.连接C.正则闭包D.闭包9. 编译程序中的语义分析器接受以()为单位的输入,并产生信息供以后各阶段使用。

A. 语法树B.子程序C.单词D.语句10.文法A->aAb|ab生成的语言是()。

A. {ab}B.{aAb}C. {a n b n|n≥1}D.{a n b n|n≥0}二、判断题(每题2分,共10分,对的打√,错的打×)1. 一个LR(0)文法一定是SLR(1)文法。

()b2. 在类型声明文法中,类型属性type 是继承属性。

《编译原理1》习题.V12.pdf

《编译原理1》习题.V12.pdf

《编译原理1》习题V12一、单项选择题1.编译程序是一种( A )软件。

A.系统B.应用C.MISD.ERP2.BNF是一种广采用的( C )的工具。

A.描述规则B.描述语言C.描述文法D.描述句子3.无符号常数的识别和拼数工作通常在(B )阶段完成。

A.词法分析B.语法分析C.语义分析D.代码生成4.“运算符与运算对象类型不匹配”属于(B )。

A.语法错误B.语义错误C.语用错误D.词法错误5.一遍扫描的编译程序的优点是(D )。

A.算法清晰B.便于分工C.便于优化D.编译速度快6.编译程序生成的目标代码程序(A )是可执行的程序。

A.不一定B.一定C.一定不D.必须经链接装配后7.编译程序是对(D )。

A.汇编程序的翻译B.高级语言的解释执行C.机器语言的执行D.高级语言的翻译8.测试一个编译程序时使用的测试数据是(A )。

A.源程序B.中间代码C.目标代码D.任意数据9.由“非终结符→符号串”形式的规则构成的文法是(C )。

A.0型文法B.1型文法C.2型文法D.3型文法10.文法识别符号经过任意步推导得到的结果是(A )。

A.句型B.句柄C.句子D.短语11.关于短语和句柄,正确的描述是(B )。

A.短语就是句柄B.直接短语才可能是句柄C.最左短语一定是句柄D.最右短语一定是句柄12.一个语言的文法是(C )。

A.唯一的B.不唯一的C.个数有限的D.无数个13.文法G所描述的语言是( D )集合。

A.文法G的字母表V中所有符号组成的符号串B.文法G的字母表V的闭包V*中的所有符号串C.由文法的开始符号推出的所有符号串D.由文法的开始符号推出的所有的终结符号串14.文法分为四种类型:0型文法、1型文法、2型文法、3型文法,其中3型文法是(B)。

A.短语文法B.正规文法C.上下文有关文法D.上下文无关文法15.一个上下文无关文法包含四个部分,一组非终结符,一组终结符,一个开始符号以及一组( C )。

编译原理练习题答案[1]1

编译原理练习题答案[1]1

编译原理练习题答案[1]1、填空题: 1-01.编译程序的⼯作过程⼀般可以划分为词法分析,语法分析,语义分析,之间代码⽣成,代码优化等⼏个基本阶段,同时还会伴有表格处理和出错处理?1-02.若源程序是⽤⾼级语⾔编写的,⽬标程序是机器语⾔程序或汇编程序,则其翻译程序称为编译程序? 1-03.编译⽅式与解释⽅式的根本区别在于是否⽣成⽬标代码?1-04.翻译程序是这样⼀种程序,它能够将⽤甲语⾔书写的程序转换成与其等价的⽤⼄语⾔书写的程1- 05.对编译程序⽽⾔,输⼊数据是源程序,输出结果是⽬标程序.1-06.如果编译程序⽣成的⽬标程序是机器代码程序,则源程序的执⾏分为两⼤阶段:编译阶段和运⾏阶段.如果编译程序⽣成的⽬标程序是汇编语⾔程序,则源程序的执⾏分为三个阶段:编译阶段,汇编阶段和运⾏阶段 1-07.若源程序是⽤⾼级语⾔编写的,⽬标程序是机器语⾔程序或汇编程序,则其翻译程序称为编译程序。

1-08. ⼀个典型的编译程序中,不仅包括词法分析、语法分析、中间代码⽣成、代码优化、⽬标代码⽣成等五个部分,还应包括表格处理和出错处理。

其中,词法分析器⽤于识别单词。

1- 09.编译⽅式与解释⽅式的根本区别为是否⽣成⽬标代码。

2- 01.所谓最右推导是指:任何⼀步a B 都是对a 中最右⾮终结符进⾏替换的。

2-02. ⼀个上下⽂⽆关⽂法所含四个组成部分是⼀组终结符号、⼀组⾮终结符号、⼀个开始符号、⼀组产⽣式。

2-03.产⽣式是⽤于定义语法成分的⼀种书写规则。

2-04.设 G[S]是给定⽂法,则由⽂法 G 所定义的语⾔L(G)可描述为: L(G) = {x ⼁4- _________________________________________________________ 02.语法分析的任务是识别给定的终极符串是否为给定⽂法的句⼦。

___________________________________________ 4-03.递归下降法不允许任⼀⾮终极符是直接左递归的。

编译原理练习题标准标准答案

编译原理练习题标准标准答案

一、填空题:1-01.编译程序地工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理.1-02.若源程序是用高级语言编写地,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序•1-03.编译方式与解释方式地根本区别在于是否生成目标代码.1-04.翻译程序是这样一种程序,它能够将用甲语言书写地程序转换成与其等价地用乙语言书写地程序.1-05.对编译程序而言,输入数据是源程序,输出结果是目标程序.1-06.如果编译程序生成地目标程序是机器代码程序,则源程序地执行分为两大阶段:编译阶段和运行阶段如果编译程序生成地目标程序是汇编语言程序,则源程序地执行分为三个阶段:编译阶段,汇编阶段和运行阶段.b5E2RGbCAP1-07.若源程序是用高级语言编写地,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序.1-08. 一个典型地编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理.其中,词法分析器用于识别单词.p1EanqFDPw1-09.编译方式与解释方式地根本区别为是否生成目标代码.2-01.所谓最右推导是指:任何一步a = B都是对a中最右非终结符进行替换地.2-02. 一个上下文无关文法所含四个组成部分是一组__________ 生式.DXDiTa9E3d2-03.产生式是用于定义语法成分地一种书写规则.2-04.设G[S]是给定文法,则由文法G所定义地语言 L(G)可描述为:L(G) = {x | S. x,x € V T*} . RTCrpUDGiT2-05.设G是一个给定地文法,S是文法地开始符号,如果S. x (其中x € V*),则称x是文法地一个处型.5PCzVD7HxA2-06.设G是一个给定地文法,S是文法地开始符号,如果S上x(其中x € V T*),则称x是文法地一个句_ 子.jLBHrnAlLg3-01.扫描器地任务是从源程序中识别出一个个单词符号.4-01.语法分析最常用地两类方法是自上而下和自下而上分析法.4- _________________________________________________________02.语法分析地任务是识别给定地终极符串是否为给定文法地句子_____________________________________________ .4-03.递归下降法不允许任一非终极符是直接左递归地.4-04.自顶向下地语法分析方法地关键是如何选择候选式地问题.4-05.递归下降分析法是自顶向上分析方法.4-06.自顶向下地语法分析方法地基本思想是:从文法地开始符号开始,根据给定地输入串并按照文法地产生式一步一步地向下进行直接推导,试图推导出文法地句子,使之与给定地输入串匹酉己.XHAQX74J0X5-01.自底向上地语法分析方法地基本思想是:从给定地终极符串开始,根据文法地规则一步一步地向上进行直接归约,试图归约到文法地开始符号.LDAYtRyKfE5-02.自底向上地语法分析方法地基本思想是:从输入串入手,利用文法地产生式一步一步地向上进行直接归约,力求归约到文法地开始符号 .Zzz6ZB2Ltk5-03.简单优先方法每次归约当前句型地句柄,算符优先方法每次归约当前句型地最左素短语,二者都是不断移进输入符号,直到符号栈顶出现可归约串地尾,再向前找到可归约串地头,然后归约.dvzfvkwMI15-04.在LR( 0)分析法地名称中,L地含义是自左向右地扫描输入串,R 地含义是最左归约,0地含义是向貌似句柄地符号串后查看0个输入符号•rqyn14ZNXI5-05.在SLR (1)分析法地名称中,S地含义是简单地•6-01.所谓属性文法是一个属性文法是一个三元组:A=(G, V, F), —个上下文无关文法G; —个属性地有穷集V和关于属性地断言或谓词地有穷集 F.每个断言与文法地某产生式相联.EmxvxOtOco6-02.综合属性是用于“自下而上”传递信息.6-03.继承属性是用于“自上而下”传递信息.6-04.终结符只有综合属性,它们由词法分析器提供.7-01.在使用高级语言编程时,首先可通过编译程序发现源程序地全部_A_错误和B 部分错误.SixE2yXPq5a.语法b.语义c.语用d.运行8-01.符号表中地信息栏中登记了每个名字地属性和特征等有关信息,如类型、种属、所占单元大小、地址等等.6ewMyirQFL8-02. 一个过程相应地 DISPLAY表地内容为现行活动记录地址和所有外层最新活动记录地地址.9-01. 一个过程相应地 DISPLAY表地内容为现行活动记录地址和所有外层最新活动记录地地址.9-02.常用地两种动态存贮分配办法是栈式动态分配和堆式动态分配.9-03.常用地参数传递方式有传地址,传值和传名.10-01.局部优化是局限于一个基本块范围内地一种优化.10-02.代码优化地主要目标是如何提高目标程序地运行速度和如何减少目标程序运行时所需地空间.kavU42VRUs、单选题:1-10. 一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括(1应其中,(2)b和代码优化部分不是每个编译程序都必需地词法分析器用于识别(3应语法分析器则可以发现源程序中地.她(1) a.模拟执行器 b.解释器 c.表格处理和出错处理 d. 符号执行器⑵ a.语法分析 b.中间代码生成 C.词法分析 d.目标代码生成⑶ a.字符串 b.语句 c.单词 d.标识符y6v3ALoS89⑷ a.语义错误 b.语法和语义错误 C.错误并校正 d.语法错误1-程序语言地语言处理程序是一种(1)a. (2)b 是两类程序语言处理程序,他们地主要区别在于11.(3)d. M2ub6vSTnP(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统(2) a.咼级语言程序和低级语言程序 b.解释程序和编译程序c.编译程序和操作系统d.系统程序和应用程序(3) a.单用户与多用户地差别 b.对用户程序地查错能力c.机器执行效率d.是否生成目标代码1-12. 汇编程序是将a翻译成b,编译程序是将c_翻译成d.a.汇编语言程序b.机器语言程序c.高级语言程序1-18.编译程序与具体地机器 a ,与具体地语言a.a. 有关b.无关1-19.使用解释程序时,在程序未执行完地情况下, a 重新执行已执行过地部分a.也能b.不可能1-20.编译过程中,语法分析器地任务就是 (1)分析单词是怎样构成地(3)分析语句和说明是如何构成程序地 b.(2)分析单词串是如何构成语句和说明地(4)分析程序地结构 a. (2)(3)b. (2)(3)(4)c. (1)(2)(3)d.(1)(2)(3)(4) zvpgeqJ1hkd. a 或者be. a 或者cf. b 或者c1-13.下面关于解释程序地描述正确地是b.(1) 解释程序地特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRA N 语言 (3) 解释程序是为打开编译程序技术地僵局而开发地 a. (1)(2)b. (1)c. (1)(2)(3)d.(2)(3) OYujCfmUCw1-14.高级语言地语言处理程序分为解释程序和编译程序两种 .编译程序有五个阶段,而解释程序通常缺少(1)e 和(1)b.其中,(1)e 地目地是使最后阶段产生地目标代码更为高效.eUts8ZQVRd与编译系统相比,解释系统 (2)d.解释程序处理语言时,大多数采用地是_(3L 方法.⑷a 就是一种典型地 解释型语言.sQsAEJkW5T (1) : a. 中间代码生成 b.目标代码生成 c.词法分析 d.语法分析e.代码优化GMslasNXkA(2) : a. 比较简单,可移植性好,执行速度快b. 比较复杂,可移植性好,执行速度快c. 比较简单,可移植性差,执行速度慢d.比较简单,可移植性好,执行速度慢(3) : a. 源程序命令被逐个直接解释执行b.先将源程序转化为之间代码,再解释执行c.先将源程序解释转化为目标程序 ,在执行d.以上方法都可以(4) : a. BASIC b. C c. FORTRAN d. PASCAL TirRGchYzg1-15.用高级语言编写地程序经编译后产生地程序叫 b .用不同语言编写地程序产生 b 后,可用g 连接在一起生成机器可执行地程序 .在机器中真正执行地是 e. 7EqZcWLZNXa.源程序b.目标程序c.函数d.过程e.机器指令代码 f.模块g.连接程序 h.程序库1-16.要在某一台机器上为某种语言构造一个编译程序 ,必须掌握下述三方面地内容 :c , d , ______f . lzq7IGfO2E a.汇编语言 b. 高级语言 c. 源语言 d. 目标语言e.程序设计方法f.编译方法1-17.由于受到具体机器主存容量地限制 诸阶段地工作往往是(2」进行地. (1) a. 过程b.程序c.批量 ⑵a.顺序b.并行c.成批g.测试方法h.机器语言,编译程序几个不同阶段地工作往往被组合成d.遍 d.穿插(1)d ,1-21.编译程序是一种常用地、软件•a. 应用b.系统1-22.编写一个计算机高级语言地源程序后,到正式上机运行之前,一般要经过b这几步.(1)编辑 (2)编译 (3)连接 (4)运行a. (1)⑵⑶⑷b. (1) (2)(3)c. (1) (3)d.(1) (4)1-23.编译程序必须完成地工作有 a.(1)词法分析⑵语法分析(3)语义分析(4) 代码生成之间代码生成(6) 代码优化a. (1)(2)(3)(4) b. (1) (2)(3)(4)(5) c. (1) (2)(3)(4)(5)(6) NrpoJac3v1d.(1)(2)(3)(4)(6) e. (1)(2)(3)(5)(6)1-24 .“用高级语言书写地源程序都必须通过编译,产生目标代码后才能投入运行”这种说法 a.a.不正确b.正确1-25.把汇编语言程序翻译成机器可执行地目标程序地工作是由b完成地.a.编译器b.汇编器c.解释器d.预处理器1-26.编译程序生成地目标程序b是机器语言地程序.a. 一定b.不一定1-27.编译程序生成地目标程序b是可执行地程序.a. 一定b.不一定1-28 .编译程序是一种 B .A.汇编程序B. 翻译程序C. 解释程序D. 目标程序1nowfTG4KI1-29 .按逻辑上划分, 编译程序第二步工作是 C .A.语义分析B. 词法分析C. 语法分析D. 代码优化fjnFLDa5Zo1-30 •通常一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 C . tfnNhnE6e5A.模拟执行器B.解释器C.表格处理和出错处理D.符号执行器2-07 .文法G所描述地语言是 C 地集合.A.文法G地字母表V中所有符号组成地符号串B.文法G地字母表V地闭包V*中地所有符号串C.由文法地开始符号推出地所有终极符串D.由文法地开始符号推出地所有符号串2-08 .乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型.其中3型文法是B . HbmVN777sLA.短语文法B.正则文法C. 上下文有关文法D. 上下文无关文法2-09.文法 G[N]= ({b} , {N , B}, N, {Nb | bB, bN}),该文法所描述地语言是C .A. L(G[N])={b i | i > 0}B. L(G[N])={b 2i | i > 0}C. L(G[N])={b | i > 0}D. L(G[N])={b | i > 1}2-10 .一个句型中地最左B称为该句型地句柄.可选项有:A.短语B.简单短语C.素短语D.终结符号2-11 •设G 是一个给定地文法,S 是文法地开始符号,如果 S .x (其中x € V),则称x 是文法G 地一个B . V7l4jRB8HsA.候选式B. 句型C. 单词D. 产生式2-12 •一个上下文无关文法G 包括四个组成部分,它们是:一组非终结符号,一组终结符号,一个开始符号,以及一组 D.83ICPA59W9 A.句子 B. 句型 C. 单词 D. 产生式2-13.文法 G[E]:T I E+ T —F I T * F F T a I ( E )该文法句型E+ F* (E + T )地简单短语是下列符号串中地 B .◎ ( E+ T ) ②E+ T ③F ④F* (E + T )可选项有:A )①和③B )②和③C )③和④D )③2-14 .若一个文法是递归地,则它所产生地语言地句子A.是无穷多个B.是有穷多个C.是可枚举地 3-02 •词法分析器用于识别 C .4-08.编译程序中语法分析器接收以 A 为单位地输入.D.个数是常量A.句子B. 句型C.单词D.产生式4-07.在语法分析处理中,FIRST 集合、A.非终极符集B. 终极符集FOLLOW 集合、 SELECT 集合均是 BmZkklkzaaPC. 字母表D.状态集A.单词B. 表达式C.产生式 D. 句子5-06 .在自底向上地语法分析方法中,分析地关键是A.寻找句柄B.寻找句型C.消除递归D.5-07.在LR 分析法中,分析栈中存放地状态是识别规范句型A.句柄B.前缀 C.活前缀选择候选式 AVktR43bpw 地DFA 状态.B. C.D. LR(0)项目 ORjBnOwcEd、是非题(下列各题,你认为正确地,请在题干地括号内打“ 错地打“X” .)1-31 .计算机高级语言翻译成低级语言只有解释一种方式 (X) 2MiJTy0dTT 1-32.在编译中进行语法检查地目地是为了发现程序中所有错误(X) gIiSpiue7A1-34.甲机上地某编译程序在乙机上能直接使用地必要条件是甲机和乙机地操作系统功能完全相同.(X )uEhOU1Yfmh2-15.正则文法其产生式为 A a, A Bb, A,B € V N , a 、b€ V T . 4-09.每个文法都能改写为LL (1)文法.(X )4- 10.递归下降法允许任一非终极符是直接左递归地 5-08.算符优先关系表不一定存在对应地优先函数.(V )(V) IAg9qLsgBX(V) WWGHWVVHPE(X) asfpsfpi4k5-10.LR法是自顶向下语法分析方法(X) ooeyYZTjj15-11.简单优先文法允许任意两个产生式具有相同右部5-12.若一个句型中出现了某产生式地右部,则此右部一定是该句型地句柄 (X)四、名词解释1- 35.扫描遍 _____ 指编译程序对源程序或中间代码程序从头到尾扫描一次2- 16.短语一一设G[Z]是给定文法,w=xuy € V+,为该文法地句型,如果满足下面两个条件:① Z xUy ; ② U 「u;则称句型xuy 中地子串u 是句型xuy 地短语.2-17.简单短语一一设 G[Z]是给定文法,w=xuy € S ,为该文法地句型,如果满足下面两个条件:v4bdyGious① Z — xUy ; ② 4 u ;则称句型xuy 中地子串u 是句型xuy 地简单短语(或直接短语).2-18.句柄——一个句型中地最左简单短语称为该句型地句柄4- 11.语法分析--按文法地产生式识别输入地符号串是否为一个句子地分析过程 4- 12.选择符集合 SELECT--给定上下文无关文法地产生式a , A € V N , a € V *,若a ^ s ,则SELECT(A> a )=FIRST( a ),其中如果 a —、s ,贝U SELECT(A> a )=FIRST( a s ) U FOLLOW(A),FIRST( a s )表示 FIRST( a )地非{ s }兀素.J0bm4qMpJ9Aw a 年3是文法G'中地一个规范推导,G'是G 地拓广文法,符号串丫是a B 地前缀,则称 丫是G 地,也是G'地一个活前缀.其中S'为文法开始符号.或:可归前缀地任意首 部. XVauA9grYP5- 15.可归前缀——是指规范句型地一个前缀,这种前缀不含句柄之后地任何符号 5-16.LR(0)项目一一把产生式右部某位置上标有圆点地产生式称为相应文法地一个 LR(0)项目.5- 17.最左素短语一一设有文法 G[S],其句型地素短语是一个短语,它至少包含一个终结符,并除自身外不包含其它素短语,最左边地素短语称最左素短语.bR9C6TJscw6- 05.语义规则一一对于文法地每个产生式都配备了一组属性地计算规则,称为语义规则 6- 06.翻译方案一一将属性文法中地语义规则用花括号{ }括起来,插在产生式右部地合适地方,指明语义规则地计算次序,陈述一些细节,得到一种语义动作与语法分析交错地表示方法,以表述语义动作在语法 分析过程中地执行时刻,称之为翻译方案 .pN9LBDdtrd7- 03.后缀式 -- 一种把运算量(操作数)写在前面把算符写在后面(后缀)地表示法.即一个表达式E 地后缀形式可以如下定义:(1)如果E 是—个变量或常量,则 E 地后缀式是E 自身.⑵ 如果E 是Eop E 2形式地表达式,这里 op 是任何二元操作符,则 E 地后缀式为&'巨’op,这里 E'和E 2‘分别为E 1和E 2地后缀式.DJ8T7nHuGT(X) BkeGulnkxl 5-13. 一个句型地句柄一定是文法某产生式地右部 7-02.数组元素地地址计算与数组地存储方式有关 •(V)8-03.在程序中标识符地出现仅为使用性地.9-04.对于数据空间地存贮分配, FORTRA 采(V) PgdOOsRIMo(X) 3cdXwckm15(X) h8c52WOngM5-14.活前缀一一若S' a(3)如果E是( EJ形式地表达式,则日地后缀式就是E地后缀式.答:一个过程地活动指地是该过程地一次执行.就是说,每次执行一个过程体,产生该过程体地一个活动9-07.活动记录答:为了管理过程在一次执行中所需要地信息,使用一个连续地存储块,这样一个连续地存储块称为活动记录.9-08.活动地生存期答:指地是从执行某过程体第一步操作到最后一步操作之间地操作序,包括执行过程时调用其它过程花费地时间.10-06. 基本块地DAG.答:一个基本块地 DAG是—种其结点带有下述标记或附加信息地DAG.(1)图地叶结点(没有后继地结点)以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数地值.如果叶结点用来代表某变量A地地址,则用addr( A)作为该结点地标记.通常把叶结点上作为标记地标识符加上下标0,以表示它是该变量地初值 .QF81D7bvUA(2)图地内部结点(有后继地结点)以一运算符作为标记,表示该结点代表应用该运算符对其后继结点所代表地值进行运算地结果.4B7a9QFw9h(3)图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表地值五、简答题:2-19什么是句子?什么是语言?答:设G是一个给定地文法,S是文法地开始符号,如果S〔x(其中x € V T*),则称x是文法地一个句子.设G[S]是给定文法,则由文法G所定义地语言L(G)可描述为:L(G) = {x | S . x,x € V T*} . ix6iFA8xoX 2-20.已知文法 G[E]为:T|E+T|E-T—F|T*F|T/FF^( E) |i①该文法地开始符号(识别符号)是什么?②请给出该文法地终结符号集合V T和非终结符号集合M.③找出句型T+T*F+i地所有短语、简单短语和句柄.解:①该文法地开始符号(识别符号)是 E.②该文法地终结符号集合V T={+、-、*、/、(、)、 i}.非终结符号集合M={E、T、F}.③句型 T+T*F+I地短语为i、T*F、第一个 T、T+T*F+i;简单短语为i、T*F、第一个T;句柄为第一个T.2-21.已知文法 G[S]为:S T dABA T aA|aB T Bb| £①G[S]产生地语言是什么?②G[S]能否改写为等价地正规文法?8 /注6带+号地结点为初始状态;解:① G[S]产生地语言是 L(G[S])={da n b m| n> 1,m>0}.②G[S]能改写为等价地正规文法,其改写后地等价地正规文法 G[S / ]为:S J dA A T aA|aB|a BT bB|b2- 22.设有语言L(G)={ada R| a € (a,b) *,a R为a 之逆},试构造产生此语言地上下文无关文法G.wt6qbkCyDE解:根据题义,可知a R为a 之逆地含义就是句子中地符号 a 、b 以d 为中心呈左右对称出现;由于a€ (a,b) *, 所以a 、b 地个数可以为零.所以可构造产生此语言地上下文无关文法 G[S]为:S T aSa|bSb|d Kp5zH46zRk3- 03 .简述DFA 与NFA 有何区别?答:DFA 与NFA 地区别表现为两个方面:一是NFA 可以若干个开始状态,而DFA 仅只一个开始状态.另一方 面,DFA 地映象M 是从KXE 到K,而NFA 地映象M 是从KX 刀到K 地子集,即映象 M 将产生一个状态 集合(可能为空集),而不是单个状态.YI4HdOAA61 3- 04.试给出非确定自动机地定义. 答:一个非确定地有穷自动机(NFA M 是一个五元组:M=( K, X, f, S , Z).其中:1. K 是一个有穷集,它地每个元素称为一个状态;2. 工是一个有穷字母表,它地每个元素称为一个输入符号,所以也称工为输入符号表;3. f 是状态转换函数,是在 KX X * T K 地子集地映射,即,f: K X X *T 2K;表明在某状态下对于某输入符号可能有多个后继状态; ch4PJx4BII4. S ( K 是- -个非空初态集;5. Z ( K 是- -个终态集(可空). 3-05.为正规式(a|b ) *a(a|b)构造一个等价地确定地有限自动机.解答:3- 06.给定下列自动机,将其转换为确定地自动机qd3YfhxCzo注:带+号地结点为初始状态;带一号地结点为终止状态+AE dVG dd BC+ startSd* D(1) 把此自动机转换为确定自动机 DFA.⑵给出此DFA 地正则表达式. 解答:(1):有状态矩阵如图:501nNvZFisa bab=00,1 2二 0 01 21 2 —01 01 2-2 1 2-2 1 29 / 1 6 2+— d •+— d • S A ABCE G+[SA][A][A][BCE] [G] A BCE[A][BCE][G] BB[BCE][BCE] [DG]CC D[G][H]DD[DG][DH]EE G[H][H]G H[DH][DH]HH注:带+号地结点为初始状态;带一号地结点为终止状态3- 07.给定下列自动机:其中:开始状态:0终止状态:2⑵确定化,得到DFAS42ehLvE3M+db从而可得DFA如图:a(2)此DFA地正则表达式为:(aa *b b)(b ab) 4-13.消除下列文法 G[E]地左递归.E-T I T—T/F I FI E ) I i解答:消除文法G[E]地左递归后得到:E T TE'E'T -TE'I £T T FT'T'T /FT' I £F T ( E) I i4-14.在LL(1)分析法中丄L分别代表什么含义答:第一个L代表从左到右地扫描,第二个 4-15.自顶向下分析思想是什么?答:从开始符出发导出句型并一个符号开始符号可推导出给定地终结符串4-16.自顶向下地缺点是什么?或 a b (b ab)L代表每次进行最左推导.个符号地与给定终结符串进行匹配.因此判定给定终结符号串是正确句子.如果全部匹配成功,则表示.jW1viftGw9答:在推导过程中,如果对文法不做限制.那么产生式地选择成为无根据地,只好一一去试所有可能地产生式,直至成功为止.这种方法地致命弱点是不断地回溯,大大影响速度.xSODOYWHLP4-17 .LL (1)文法地定义是什么?答:一个上下文无关文法是 LL(1)文法地充分必要条件是每个非终结符A地两个不同产生式,A T a ,A T 3 ;满足 SELECT(A T a ) A SELECT(A T 3 )=①.其中,a、3 不能同时二& . LOZMklqlOw4-18 .什么是文法地左递归?答:一个文法含有下列形式地产生式之一时:1)A T A3 , A€ VN 3 € V*2)A T B3 , B T Aa , A、B€ VN a、3 € V* 则称该文法是左递归地.4-19.递归下降法地主要思想是什么?答:对每个非终结符按其产生式结构写出相应语法分析子程序 •因为文法递归相应子程序也递归,子程序地结构与产生式结构几乎一致 •所以称此种方法称为递归子程序法或递归下降法 • ZKZUQsUJed 5- 19.自底向上分析法地原理是什么?答:在采用自左向右扫描,自底向上分析地前提下,该类分析方法是从输入符号串入手,通过反复查找当 前句型地句柄(最左简单短语),并使用文法地产生式把句柄归约成相应地非终极符来一步步地进行分析地•最终把输入串归约成文法地开始符号, 表明分析成功.dGY2mcoKtT5-23.给定文法 G[Z] : rCYbSWRLIA1. Z T C s2. C T if E then3. S T A = E 其中: Z 、C 、S A 、E € V N ;4. E T E V Aif 、then 、=、V 、 i € V T5. E T A6. A T i2. Follow(Z) = {#}Follow(C) = {i} Follow(S) = {#}Follow(E) = {#, V ,then}Follow(A) = { = ,# , V ,then } 则可构造ACTIONGOTO0 ifthe n=V i#Z CSEAS 3121OKa) 构造此文法地LR(0)项目集规范族,并给出识别活前缀地 b) 构造其SLR( 1)分析表. G 中加入产生式 0. Z' T Z, 解答:1.首先拓广文法:在TuWrUpPpf X Z ' T Z I 7: C T if E . then 7qWAq9jPqE Z T . C SE T E . V AC T . if E thenI 9 : S TA = . EI i : Z ' T Z . E T . E V A 12: Z T C . sE T . A S T . A = E A T . i A T . iI 10: C T if E then . 13: C T if . E thenI 11: E T E V . AE T . E V AA T . iE T . AI 12: S T A = E . A T . iE T E . V A I 4: Z T C S .I 13: E T E V A .15: S T A . = E 16: A T i .DFA.然后得到新地文法 ,再求G 地识别全部活前缀地 DFA FyXjoFIMWh2 S6 4 53 S6 7 84 r 15 S96 「6 r 6 「6 r 67 S10 S118 「5 「5 r 59 S6 12 810 「211 S6 1312 S11 r 313 「4 「4 r 45-24. 设有文法G[S]:S T a AA T AbA T b求识别该文法所有活前缀地DFA.llVIWTNQFk解答:(1).首先拓广文法:在G中加入产生式0.S ' T S,然后得到新地文法G0.S S1.S T aA2.A T Ab3.A T b(2).再求G地识别全部活前缀地DFA6-07.语法制导翻译方法地基本思想是什么答:在语法分析过程中,每当使用一条产生式进行推导或归约时,就执行该产生式所对应地语义动作进行属性计算,完成对输入符号串地翻译.yhUQsDgRTI6-08.何谓“语法制导翻译”?答:在语法分析过程中,随着分析地步步进展,根据每个产生式所对应地语义子程序(或语义规则描述地语义动作)进行翻译地办法称作语法制导翻译.MdUZYnKS8l6-09.在一个属性文法中,对应于每个产生式A T a都有一套与之相关联地语义规则,每条规则地形式为b: = f (c1,c2…,ck),其中对于b地要求是什么?答:语义规则中地左部属性变量b被规定为只能是下述两种变量:①对应产生式左部符号地综合属性变量;②对应产生式右部符号地继承属性变量.7-05.常用地中间语言种类有哪几种?答:有逆波兰式、三地址代码、抽象语法树和DAG.8-06.符号表地作用有哪些?答:在编译程序中符号表用来存放语言程序中出现地有关标识符地属性信息,这些信息集中反映了标识符地语义特征属性•起主要作用是:09T7t6eTno①收集符号属性;②上下文语义地合法性检查地依据;③作为目标代码生成阶段地址分配地依据•9-09 .运行时存储器地划分是怎样地?答:运行时存储器地划分如下图所示•10-07.简述优化地原则是什么?答:编译程序提供地对代码优化必须遵循地原则是:(1)等价原则.经过优化后不应改变程序运行地结果•(2)有效原则.使优化后所产生地目标代码运行时间较短,占用地存储空间较小(3)合算原则.应尽可能以较低地代价取得较好地优化效果.10-08 •简述常用地优化技术有哪些?答:编译程序中常用地优化技术有:(1) 删除公共子表示式;(2) 复写传播;(3) 删除无用代码;(4) 代码外提;(5) 强度削弱;(6) 删除归纳变量;(7) 合并常量.10-09.设有基本块:⑴ a:=b-c(2)d:=a+4(3)e:=a-b(4)f:=a+4(5)b:=b+c(6)c:=b-f(7)b:=b-c(8) f:=b+f (9) a:=a-f (1) 画出DAG 图;(2) 假设基本块出口时只有 解答:(1) 给出DAG 如右:(2) 重写三地址代码如下:a:=b-c d:=a+4 f:=de:=a-b b:=b+c c:=c+d b:=b-c f:=b-d a:=a+d10-10.何谓优化?按所涉及地程序范围可分为哪几级优化?答:优化:对程序进行各种等价变换,使得从变换后地程序出发,能产生更有效地目标代码三种级别:局部优化、循环优化、全局优化.e5TfZQIUB510-11.设有基本块「:= 2 T 2:= 10/T 1 T s := S — R T 4:= S + R A := T 2 * T 4 B := A T 5:= S + R T 6:= T 3 * T 5(1)画出 DAGS;A, B 还被引用,请写出优化后地三地址代码序列 .s1SovAcVQMT 4:= S+ Ra, b 还被引用,请写出优化后地三地址代码序列(2)假设基本块出口时只有 解:(1)DAG:见右图(2) 优化后地四元式10 +b9 +e6 5 ++ 324 1 4cb8 c7山 11^A:= 5*T4 B:= T3+ T4GXRw1kFW5s版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理•版权为个人所有This article in eludes some parts, in cludi ng text, pictures, and desig n. Copyright is pers onal own ership. UTREX49%9用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.8PQN3NDYyPUsers mayuse the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisi ons of copyright law and other releva nt laws, and shall not infringe upon the legitimate rights of this website and its releva nt obligees. In additi on, when any content or service of this article is used for other purposes, writte n permissi on and remun erati on shall be obta ined from the pers on con cer ned and the releva nt obligee. mLPVzx7ZNw转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.AHP35hB02dReproducti on or quotati on of the content of this article must be reas on able and good-faith citatio n for the use of n ews or in formative public free information. Itshall not misinterpret or modify the originalintention of the content of this article, and shall bear legal liabilitysuch as copyright. NDOCB14BT。

编译原理练习题

编译原理练习题

编译原理练习题⼀章: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、过程1、扫描器的任务是从源程序中识别出⼀个个单词符号。

2、⾼级语⾔源程序有两种执⾏⽅式,即解释和编译。

判断:⾼级语⾔编写的源程序都必须通过编译,产⽣⽬标代码后才能运⾏。

多遍扫描的编译程序的多遍是指多次重复读源程序。

⾼级语⾔程序到低级语⾔程序的转换是基于语义的等价变换。

编译程序中错误处理的任务是对检查出的错误进⾏修改。

⽬标程序⼀定是机器语⾔程序。

连接装配程序可把经编译程序产⽣的⽬标程序变成可执⾏的机器语⾔程序。

简答题:1、请指出下列错误信息可能是编译的哪个阶段报告的?①else没有匹配的if;②数组下标越界;③使⽤的函数没有定义;④在数中出现了⾮数字信息。

答:①语法分析阶段②语义分析与中间代码⽣成阶段③语义分析与中间代码⽣成阶段④词法分析阶段2、何谓源程序、中间代码和⽬标代码?它们三者之间有何种关系?答:所谓源程序是指⽤某种⾼级语⾔编写的程序,它是编译程序的加⼯对象。

⽬标程序是指低级语⾔(机器语⾔或汇编语⾔)编写的程序,它是编译程序的加⼯结果。

中间代码是其结构介于源程序和⽬标程序之间的⼀种机内表⽰形式,它是编译程序产⽣的中间临时结果。

它们三者之间的关系是等价关系,即结构不同,但语义相同。

⼆章:1、⽂法G:S-→xSx|y所识别的语⾔是。

A、xyx B 、(xyx)* C、x n yx n(n≥0) D、x*yx*2、设有⽂法G[S]=({S,B},{b},{S-→b|bB,B-→bS},S),该⽂法所描述的语⾔是。

编译原理习题1

编译原理习题1

※<习题一>填空题:1、编译阶段按前后端组合,可分为编译前端和编译后端,其中与目标机有关的阶段一般属于分析阶段,而与源语言相关的阶段一般属于综合阶段。

2、设文法G =(V N,V T,P,S),若P中的每一个规则A→β满足:A∈V N,β∈(V N∪V T)* ,则称此文法为 0 型文法。

3、已知M为一个确定的有穷自动机,M=(Q,∑,q0,F,δ),则Q表示一个有穷的状态集合 ; ∑表示字母表,δ表示状态转换函数,q0是唯一的初始状态。

4、规范推导是指最右推导,每步推导只变换符号串中最右边的非终结符,其逆过程即最左规约,称为规范归约。

5、LR(0)项目集规范族中的项目可分为四类,即移进项目、待约项目、归约项目和接受项目,其中归约项目和归约项目或移进项目共存于一个项目集中会引起冲突。

6、表达式s:=a+b*c/d+(b-d)的逆波兰式表示为sabc*d/bd-++:= 。

判断题:1、从功能上看,一个编译程序就是一个语言翻译程序。

T2、LEX是一个语法分析程序的生成系统。

F3、一个句型的最左(直接)简单短语称为句柄。

T4、已证明文法的二义性是可判定的。

F5、一个NFA一定能转换为DFA。

T6、递归下降分析法是一种不确定的自顶向下分析法。

F简答:1、文法G是LL(1)文法的充要条件是什么?答:(1).不能有左递归;(2). LL(1)文法的分析表不出现多重定义即:对于文法G的每个非终结符A的任何两条不同规则A→α|β,下面条件成立:•FIRST(α)∩FIRST(β)=φ即头符号集不相交。

•假若β==*>ε,那么,FIRST(α)∩FOLLOW(A)=φ,即α所能推出的符号串的头符号集中的元素不能出现在FOLLOW(A)中。

2、将表达式A:=B*(C-D)/D:翻译成波兰后缀表达式。

答:ABCD-D/*:=※<习题二>填空题:1、对给定文法G[E],由推导序列E=>E+T=>T+T=>i+T=>i+i 可知:该推导为(最左)推导,从该推导序列可得到( 5 )个句型,其中的(i+i)同时也是句子。

编译原理练习题参考答案

编译原理练习题参考答案

、填空题: 1-01.编译程序的工作过程一般可以划分为 词法分析,语法分析,语义分析,之间代码生成,代码优化 等 几个基本阶段,同时还会伴有 表格处理 和 出错处理•1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程 序• 1-03.编译方式与解释方式的根本区别在于是否生成目标代码•1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程1- 05.对编译程序而言,输入数据是 源程序,输出结果是 目标程序.1-06.如果编译程序生成的目标程序是机器代码程序 ,则源程序的执行分为两大阶段:编译阶段和运 行阶段.如果编译程序生成的目标程序是汇编语言程序 ,则源程序的执行分为三个阶段:编译阶段, 汇编阶段和运行阶段 1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序。

1-08. 一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成 等五个部分,还应包括表格处理和出错处理。

其中,词法分析器用于识别单词。

1- 09.编译方式与解释方式的根本区别为是否生成目标代码。

2- 01.所谓最右推导是指:任何一步a B 都是对a 中最右非终结符进行替换的。

2-02. 一个上下文无关文法所含四个组成部分是 一组终结符号、一组非终结符号、一个开始符号、一组产生式 。

2-03.产生式是用于定义语法成分的一种书写规则。

2-04.设 G[S]是给定文法,则由文法 G 所定义的语言L(G)可描述为: L(G) = {x 丨4- _________________________________________________________ 02.语法分析的任务是识别给定的终极符串是否为给定文法的句子。

___________________________________________ 4- 03.递归下降法不允许任一非终极符是直接 左 递归的。

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

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

编译原理习题及答案(整理后)第⼀章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步或多步推导产⽣的⽂法符号序列是。

编译原理习题及答案1~3

编译原理习题及答案1~3

图2-13 习题2.6的NFA
用子集法将图2-13所示的NFA确定化,如图2-14所示
由图2-14可看出非终态2和4的下一状态相同,终态6和8 的下一状态相同,即得到最简状态为
{0} {1} {2,4} {3} {5} {6,8} {7}
按顺序重新命名为0、1、2、3、4、5、6,则 得到最简DFA,如图2-15所示。
(2) 将编译过程分成若干“遍”是为了 。
A.提高程序的执行效率
B.使程序的结构更加清晰
C.利用有限的机器内存并提高机器的执行效率
D.利用有限的机器内存但降低了机器的执行效

(3) 构造编译程序应掌握 。
A.源程序
B.目标语言
C.编译方法
D.A~C项
(4) 编译程序绝大多数时间花在 上。
A.出错处理
2.9构造一个DFA,它接收 Σ ={a,b}上所有含偶数 个a的字符串。 解:Σ ={a,b}上所有含偶数个a的字符串可表示为 (b|ab*a)*
2.10 下列程序段以B表示循环体,A表示初始化,I表 示增量,T表示测试:
(4) 状态转换图(见图2-1)接受的字集为 _______。 A.以0开头的二进制数组成的集合 B.以0结尾的二进制数组成的集合 C.含奇数个0的二进制数组成的集合 D.含偶数个0的二进制数组成的集合
图2-1 习题2.1的DFA M
(5) 对于任一给定的NFA M, 一个DFA M′,使 L(M)= L(M′)。
S
a
b
0
2
1
1

2
2
2
2
其状态转换图如图2-3所示。
图2-3 习题2.3的DFA M′
将图2-3所示的DFA M′最小化。首先,将M′的状态分 成终态组{1,2}与非终态组{0}。其次,考察{1,2}。由于 {1,2}a={1,2}b={2} {1,2},因此不再将其划分了,也即整 个划分只有两组:{0}和{1,2}。令状态1代表{1,2},即把原 来到达2的弧都导向1,并删除状态2。最后,得到如图2-4 所示的化简了的DFA M′。

编译原理第1阶段练习题

编译原理第1阶段练习题

江南大学现代远程教育第一阶段练习题考试科目:《编译原理》第1章至第4章(总分100分)学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、选择与填充(30)1. 一个正则语言只能对应( )?A. 一个正则文法B. 一个最小有限状态自动机C. 一个自然语言D. 一个上下文有关文法2. 对于编译程序而言,输入数据是源程序,输出数据是___________________。

3. 给出在字母表{0,1}上的“所有以00结尾的符号串的集合”的语言的正则表达式:_____________________。

4. 一个句型中最左的()称为该句型的句柄。

A. 简单短语B. 短语C. 非终结符号D. 终结符号5. Micro语言只有三种语句:()、输入语句和输出语句。

A. GOTO语句B.赋值语句C. 条件语句D.循环语句6. 描述高级语言语法的常用方法有________________和BNF范式。

二、给出与正规式R=(ab)*(a|b*)ab等价的NFA。

(16)三、简述 DFA 与 NFA 有何区别。

(14)四、判断下列文法是否具有二义性:G[P]: P→PaP|PbP|cP|Pe|f(18)五、对于下面的文法G[Z],构造句子(i*i+i)*i的最左和最右推导及相应的语法树。

(22)(1) Z::=E (2) E::=T+E (3) E::=T (4) T::=F*T(5) T::=F (6) F::=(E) (7) F::=i附:参考答案:一、选择与填充(30)1.一个正则语言只能对应( B )?A. 一个正则文法B. 一个最小有限状态自动机C. 一个自然语言D. 一个上下文有关文法2.对于编译程序而言,输入数据是源程序,输出数据是____目标程序_________。

3. 给出在字母表{0,1}上的“所有以00结尾的符号串的集合”的语言的正则表达式:________(0|1)*00__________。

《编译原理》练习题

《编译原理》练习题

《编译原理》练习题一一、填空题(每空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) 。

编译原理练习题答案

编译原理练习题答案

编译原理练习题答案编译原理练习题⼀、选择题1.下列()程序语⾔是依赖于机器的。

A.⾃然语⾔B.⾼级语⾔C.SQL语⾔D.汇编语⾔或机器语⾔2.编译程序是对()程序进⾏翻译。

A.机器语⾔B. 汇编语⾔C. ⾼级语⾔D. ⾃然语⾔3.编译程序的⼯作过程划分为5个阶段:词法分析、()、语义分析与中间代码A. 语法分析B. 出错处理C. 表格管理D.存储空间组织4.编译程序各阶段的⼯作都涉及到()。

A. 语法分析B. 语义分析C.代码优化D.表格管理5.设A是符号串的集合,下列对A*计算不正确的是()。

A.{ε}∪A+B. A*=A1∪A2∪…∪A n∪…C. A0∪A+D. A*=A0∪A1∪A2∪…∪A n∪…6.设x是符号串,符号串的幂运算x0=()A.ΦB.xC.1D.εB.⽂法C.产⽣式D.语⾔本⾝8.设有⽂法G的符号集V,⾮终结符集V N,终结符集V T,下列叙述中正确的是()。

A.V=V TB.V=V NC.V=V T∪V ND.V=V T∩V N9.⽂法G产⽣的()的全体构成该⽂法描述的语⾔。

A.句型B.终结符集C.⾮终结符集D.句⼦10.若⼀个⽂法满⾜(),则称该⽂法为⼆义⽂法。

A. 存在⼀个最左推导。

B.存在⼀个最右推导。

C.⽂法的某个句⼦存在两棵(包括两棵)以上的语法树。

D.⽂法的某个句⼦存在⼀棵(包括⼀棵)以上的语法树。

11.给定⽂法A→bA|cc,下⾯的符号串中为该⽂法句⼦的是()。

①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc可选项有:A.①⑤B.①③④⑤C.①④D.①④⑤12.设∑={0,1},则∑上所有以1开头,后跟若⼲个010的字串的集合对应的正规式为()。

A.1(010)*B.1(010)+C.(010)*1D.(010)+113.从编译程序的语法分析⾓度看,源程序是句⼦的集合,()可以较好地反映句⼦的结构。

A.线性表B.树14.在常⽤的语法分析中,递归下降分析法属于()分析⽅法。

编译原理第一章练习和答案

编译原理第一章练习和答案

例1设有文法G[S]:S →a|(T )| T →T,S|S (1) 试给出句子(a,a,a)的最左推导。

(2) 试给出句子(a,a,a)的分析树 (3) 试给出句子(a,a,a)的最右推导和最右推导的逆过程(即最左规约)的每一步的句柄。

【解】(1) (a,a,a)的最左推导S=>(T) =>(T,S) =>( T,S,S) =>( S,S,S) =>(a,S,S) =>(a,a,S) =>(a,a,a) (2)(a,a,a)的分析树S( T ) T , S S aT ,S aa(3) (a,a,a)最右推导 最左规约每一步的句柄S=>(T) 句柄为:(T) =>(T,S) 句柄为:T,S =>(T,a) 句柄为:a =>(T,S,a) 句柄为:T,S =>(T,a,a) 句柄为:第一个a =>(S,a,a) 句柄为:S=>(a,a,a) 句柄为:第一个a例2已知文法G[Z]:Z →0U|1V U →1Z|1 V →0Z|0(1) 请写出此文法描述的只含有4个符号的全部句子。

(2) G [Z]产生的语言是什么? (3) 该文法在Chomsky 文法分类中属于几型文法? 【解】(1)0101,0110,1010, 1001(2)分析G[Z]所推导出的句子的特点:由Z 开始的推导不外乎图1所示的四种情形。

图 1文法G[Z]可能的几种推导Z1U Z UZZ1V 0ZZ1V由Z 推导出10或01后就终止或进入递归,而Z 的每次递归将推导出相同的符号串:10或01。

所以G[Z]产生的语言L(G[Z])={x|x∈(10|01)+ }(3)该文法属于3型文法。

例3 已知文法G=({A,B,C},{a,b,c},P,A), P由以下产生式组成:A→abcA→aBbcBb→bBBc→CbccbC→CbaC→aaBaC→aa此文法所表示的语言是什么?【解】分析文法的规则:每使用一次Bc→Cbcc,b、c的个数各增加一个;每使用一次aC→aaB或aC→aa, a的个数就增加一个;产生式Bb→bB、 bC→Cb起连接转换作用。

编译原理习题

编译原理习题

习题一1、画出编译程序的总体结构图,简述其部分的主要功能。

[答案]编译程序的总框图见下图。

图编译程序的总体结构图其中词法分析器,又称扫描器,它接受输入的源程序,对源程序进行词法分析,识别出一个个的单词符号,其输出结果上单词符号。

语法分析器对单词符号串进行语法分析(根据语法规则进行推导或归纳),识别出程序中的各类语法单位,最终判断输入串是否构成语法上正确的“程序”。

语义分析及中间代码产生器,按照语义规则对语法分析器归纳出(或推导出)的语法单位进行语义分析并把它们翻译成一定形式的中间代码。

编译程序可以根据不同的需要选择不同的中间代码形式,有的编译程序甚至没有中间代码形式,而直接生成目标代码。

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

一般最初生成的中间代码执行效率都比较低,因此要做中间代码的优化,其过程实际上是对中间代码进行等价替换,使程序在执行时能更快,并占用更小的空间。

目标代码生成器把中间代码翻译成目标程序。

中间代码一般是一种与机器无关的表示形式,只有把它再翻译成与机器硬件相关的机器能识别的语言,即目标程序,才能在机器上运行。

表格管理模块保持一系列的表格,登记源程序的各类信息和编译各阶段的进展状况。

编译程序各个阶段所产生的中间结果都记录在表格中,所需要的信息也大多从表格中,所需要的信息也大多从表格中获取,整个编译过程都在不断地和表格打交道。

出错处理程序对出现在源程序中的错误进行处理。

如果源程序有错误,编译程序应设法发现错误,把有关错误信息报告给用户。

编译程序的各个阶段都有可能发现错误,出错处理程序要对发现的错误进行处理、记录,并反映给用户。

2、计算机执行用高级语言编写的程序有哪些途径?它们之间的主要区别是什么?[答案]计算机执行用高级语言编写的程序主要途径有两种,即解释与编译。

像Basic之类的语言,属于解释型的高级语言。

它们的特点是计算机并不事先对高级语言进行全盘翻译,将其变为机器代码,而是每读入一条高级语句,就用解释器将其翻译为一条机器代码,予以执行,然后再读入下一条高级语句,翻译为机器代码,再执行,如此反复。

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

编译原理练习一
一、填空题
仁编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析、代码生成、代码优化等几个基本阶段,同时还会伴有表格处理和出错处理。

2•若源程序是用高级语言编写的,目标程序是机器或汇编语言的程序,则其翻译程序称为编译程序。

3.编译程序与解释程序的根本区别在于是否生成目标代码。

4•如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段:编译阶段和运行阶段。

如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段:编译阶段、汇编阶段和运行阶段。

5.词法分析的任务是:依据语言的词法规则,分析由字符组成的源程序,把它识别为一个一个具有独立意义的最小语法单位,即“单i —”,并识别出与其相关的属性。

6.确定的有限自动机是一个五元组(五元式) ,通常表示为DFA= (K,匕,M,S,Z)。

7.高级程序设计语言的单词通常分为五类,它们是关键字、标识符、常—以及运算符、界限符。

8.词法分析程序的输出形式是一个单词,每个单词由单词类别和单词自身值两部分组成。

9.高级语言的语言的处理程序分为解释程序和编译程序两种。

编译程序有五个
阶段,而解释程序通常缺少代码优化和目标代码生成。

其中,代码优化的目的是
使最后阶段产生的目标代码更为高效。

与编译系统相比,解释系统比较简单,可移植性好,执行速度慢。

解释程序处理语言时,大多数采用的是先将源程序转化为中间代码,再解释执行方法。

BASIC就是一种典型的解释型语言。

10.编译程序与具体的机器有关亠与具体的语言无关。

二、选择题(单项或多项)
1.在使用高级语言编程时,首先可通过编译程序发现源程序的全部二错误和部分 b 错误。

a语法b、语义c、语用d、运行
2.程序语言的语言处理程序是一种(1) a o (2) b是两类程序处理程序,它们的主要区别在于 (3) d 。

(1) a系统软件b、应用软件c、实时系统d、分布式系统
(2) a 高级语言程序和低级语言程序
b 、解释程序和编译程序
3 •下面关于解释程序的描述正确的是 a 。

a 、 解释程序的特点是处理程序时不产生目标代码 b 、 解释程序适用于 COBOL 和FORTRAN 语言 c 、 解释程序是为打开编译程序技术的僵局而开发的
4 •要在某一台机器上为某种语言构造一个编译程序,必须掌握下述三方面的内 容: c _____ 、 d ______________ 、 f ___________ 。

a 、汇编语言 b 、咼级语言 c 、源语言 d 、目标语言 e 、程序设计方法学 f 、编译方法 g 、测试方法 h 、机器语言
5 •由于受到具体机器主存容量的限制,编译程序几个不同阶段的工作往往被组 合成 b ,诸阶段的工作往往是 h 进行的。

а、 过程 b 、遍 c 、批量 d 、程序 e 、顺序 f 、并行 g 、成批 h 、穿插
б. 编译程序必须完成的工作有 abed 。

a 词法分析 b 、语法分析 c 、语义分析 d 、代码生成
e 、中间代码生成
f 、代码优化
7. 编写一个计算机高级语言的源程序后,到正式上机运行之前,一般要经过
a b c 这几步。

a 、编辑 b 、编译 c 、连接 d 、运行 8 •“用高级语言书写的源程序都必须通过编译, 产生目标代码后才能投入运行。

这种说法 a _______ 。

a 、不正确 b 、正确 9. ___________________________ 编译程序生成的目标程序 b 是机器语言的程
序。

a 、一定
b 、不一定
10. ____________________________ 编译程序生成的目标程序 b 是可执行的程
序。

a 、一定
b 、不一定
11. 编译过程中词法分析器的任务包括 a b c d e f g a 、 组织源程序的输入
b 、 按词法规则分割出单词,识别出其属性,并转换成属性字的形式输出
c 、 删除注解
c 、编译程序和操作系统 (3) a 单用户和多用户的差别
c 、机器执行效率
d 、系统程序和应用程序 b 、对用户程序的差错能力 d 、是否生成目标代码
d、删除空格及无用字符
e 、 行记数、列记数
f 、 发现并定位词法错误
g 、 建立符号表 12.
正则式的“ 读作 b ,“ ”读作 c , “ * ”读作
d a 、并且 b 、或者
c 、连接
d 、闭包
13•设有如图所示的有穷自动机,状态 为开始状态,状态
为终止状态,假设
digit 代表数字0到9。

则下述实数中 d 可被该有穷自动机识别。

a +47 b 、-1 c 、 .5 d 、-11.47
e 、至少两个
14 •设有穷自动机的状态转换图如下状态
为开始状态,状态
为终止状态,则
下述正则表达式中 ab 可被该有穷自动机识别 a 、0( 10)*0 b 、11( 01)*1 c 、 1( 101)*00
15. b 这样一些语言,它们能被确定的有限自动机识别,但不能用正
贝U 表达式表示。

a 、存在
b 、不存在
c 、无法判定是否存在
三、构造下列正则式相应的 DFA
1. 1(0|1)*101
+

digi
t
2.b((ab)*|bb)*ab
NFA 为:
子集法求DFA…….略
四、将所示的NFA确定化
子集法求DFA得:
0, 1
最小DFA 为:
六、构造一个DFA ,它接受的符号串集合等于正则表达式(ab*c)|(abc*)所示的符 号串集合。

要求先构造NFA ,其次转换成DFA ,最后加以简化。

NFA 为:
DFA 为
:
b
b 最小DFA为:。

相关文档
最新文档