《编译程序设计原理》练习题

合集下载

《编译程序设计原理》练习题课件

《编译程序设计原理》练习题课件

例2-1(2/2)
语义 year(年)、month(月)、day(日) 语义约束条件 0 < month.value < 13 0 < day.value < 32,31,30 0 < year.value < 10000
习题

2-1 试分析一个简短的 C 程序,找出几 个属于语法、词法、语义的语言现象。 2-2 试分析例 2-1 的 date 输出数据的 处理中,应该做哪些词法分析、语法分 析、语义处理。 2-3 理解交叉编译和自展技术

If 条件语句、While 循环语句翻译成三地 址代码
思考题:试分析以下 C 程序的运行结果 float x, y; char buf[32]; main( ) { int i; char *p = &x + 20; for( i = 0; i < 32; i++ ) buf[ i ] = ‘a’ + i; while( *++p != ‘x’ ) putchar( *p ); }
13章自测题1设r1000122012301234567898求rgg和fam使得lmlglr2构造算术表达式的文法g并且1指出各语法变量的意义2求求xlogsinyb4最左推导最右推导3求求xlogsinyb4的语法树3叙述下列概念的定义和意义前缀文法直接推导规范归约短语句柄正规式正规定义式种别码与属性值双缓冲叙述下列概念的定义和意义前缀文法直接推导规范归约短语句柄正规式正规定义式种别码与属性值双缓冲4编译程序的总体结构及各模块的功能

思考题6-1 程序的执行过程中如何 进行存储分配?何时为哪些数据目 标分配存储空间?

思考题6-2 什么叫静态绑定?什么 叫动态绑定?变量的绑定和过程的 绑定有什么区别?

编译原理试题与答案

编译原理试题与答案

编译原理试题与答案第1讲绪论本讲模拟练习题(不计分)1. 编译是对( )。

A. 机器语⾔的执⾏B. 汇编语⾔的翻译C. ⾼级语⾔的翻译D. ⾼级语⾔程序的解释执⾏正确答案:C你选对了2. ⽤⾼级语⾔编写的程序经编译后产⽣的程序叫( )。

A. 源程序B. ⽬标程序C. 连接程序D. 解释程序正确答案:B你选对了3. ( )不是编译程序的组成部分。

A. 词法分析程序B. 代码⽣成程序C. 设备管理程序D. 语法分析程序正确答案:C你选对了4. 源程序是句⼦的集合,( )可以较好地反映句⼦的结构。

A. 线性表B. 树C. 完全图D. 堆栈正确答案:B你选对了5. 编译程序是⼀种( )。

A. 汇编程序B. 翻译程序C. 解释程序D. ⽬标程序正确答案:B你选对了6. 按逻辑上划分,编译程序第三步⼯作是( )。

A. 语义分析B. 词法分析C. 语法分析D. 代码⽣成正确答案:A你选对了7. 编译程序中语法分析器接收以( )为单位的输⼊。

A. 单词B. 表达式C. 产⽣式D. 句⼦正确答案:A你选对了8. 编译过程中,语法分析器的任务就是( )。

A. 分析单词是怎样构成的B. 分析单词串是如何构成语句和声明的C. 分析语句和声明是如何构成程序的D. 分析程序的结构正确答案:B你选对了9. 语法分析时所依据的是( )A. 语法规则B. 词法规则C. 语义规则D. 等价变换规则正确答案:A你选对了第1讲测验(计分)把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由( )完成的。

1. 单选(1分) 把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由A. 编译器B. 解释器C. 预处理器D. 汇编器正确答案:D你选对了2. 单选(1分) ( )不是编译程序的组成部分。

A. 词法分析程序B. 语法分析程序C. 代码⽣成程序D. 设备管理程序正确答案:D你选对了3. 单选(1分) 通常⼀个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码⽣成,代码优化,⽬标代码⽣成等六个部分,还应包括( )。

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)

《编译原理》复习题(看完必过)一、单项选择题1.将编译程序分成若干个“遍”是为了( B )A.提高程序的执行效率B. 使程序的结构更加清晰C.利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.不可能是目标代码的是( D )A.汇编指令代码 B.可重定位指令代码C.绝对指令代码 D.中间代码3.词法分析器的输入是( B )A.单词符号串 B.源程序C.语法单位 D.目标程序4.中间代码生成时所遵循的是( C )A.语法规则 B.词法规则C.语义规则 D.等价变换规则5.编译程序是对( D )A.汇编程序的翻译 B.高级语言程序的解释执行C.机器语言的执行 D.高级语言的翻译6.词法分析应遵循( C )A.语义规则 B.语法规则C.构词规则 D.等价变换规则7.词法分析器的输出结果是( C )A.单词的种别编码 B.单词在符号表中的位置C.单词的种别编码和属性值 D.单词属性值8.正规式M1和M2等价是指( C )A.M1和M2的状态数相等 B.M1和M2的有向弧条数相等C.M1和M2所识别的语言集相等 D.M1和M2状态数和有向弧条数相等9.词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此,( B ) A.词法分析器应作为独立的一遍B.词法分析器作为子程序较好C.词法分析器分解为多个过程,由语法分析器选择使用.D.词法分析器并不作为一个独立的阶段10.如果L(M1)=L(M2),则M1与M2( A )A .等价B .都是二义的C .都是无二义的D .它们的状态数相等 11.文法G :S →xSx|y 所识别的语言是( C )A .xyxB .(xyx)* c .x n yx n (n ≥0) d .x *yx *12.文法G 描述的语言L(G)是指( A ) A.⎭⎬⎫⎩⎨⎧∈⇒=+*,|)(T V S G L αααB .⎭⎬⎫⎩⎨⎧⋃∈⇒=+*)(,|)(N T V V S G L ααα C .⎭⎬⎫⎩⎨⎧∈⇒=**,|)(T V S G L αααD .⎭⎬⎫⎩⎨⎧⋃∈⇒=**)(,|)(N T V V S G L ααα 13.有限状态自动机能识别( C )A .上下文无关文法B .上下文有关文法C .正规文法D .短语文法14.如果文法G 是无二义的,则它的任何句子( A ) A .最左推导和最右推导对应的语法树必定相同 B .最左推导和最右推导对应的语法树可能不同 C .最左推导和最右推导必定相同D .可能存在两个不同的最左推导,但它们对应的语法树相同 15.由文法的开始符经0步或多步推导产生的文法符号序列是( C ) A .短语 B .句柄 C .句型 D .句子 16.文法G :E →E+T|T T →T*P|P P →(E)|i则句型P+T+i 的句柄为( B )A .P+TB .PC .P+T+iD .i 17.文法G :S →b|∧|(T) T →T ∨S|S 则FIRSTVT(T)=( C )A .{ b ,∧,( }B .{ b ,∧,) }C .{ b ,∧,(,∨ }D .{ b ,∧,),∨ } 18.产生正规语言的文法为( D )A .0型B .1型C .2型D .3型19.任何算符优先文法( D )优先函数。

编译原理练习题答案

编译原理练习题答案

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

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

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

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

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

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

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

2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为:L(G)={x│S x,x∈V T*} 。

2-05.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型。

2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V T*),则称x是文法的一个句子。

3-01.扫描器的任务是从源程序中识别出一个个单词符号。

4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。

编译原理基础题(学生用)

编译原理基础题(学生用)

编译原理基础题一、选择题1、在使用高级语言编程时,首先可通过编译程序发现源程序的全部()错误和部分语义错误。

A、语法B、语义C、语用D、运行2、编译过程中,语法分析器的任务是()。

(1)分析单词是怎样构成的; (2)分析单词串是如何构成语句和说明的;(3)分析语句和说明是如何构成程序的;(4)分析程序的结构A、(2)(3)B、(2)(3)(4)C、(1)(2)(3)D、(1)(2)(3)(4)3.生成能被5整除的正整数的文法G[Z]是_ ____。

A. G[Z]: Z→AC,A→BA|B,B→0|1|2|…|9,C→0|5B. G[Z]: Z→AC,A→BA|ε,B→0|1|2|…|9,C→0|5C. G[Z]:Z→DA0|A5,A→BA|ε,B→0|D,D→1|2|…|9D. G[Z]:Z→AC|C,A→BA|B,B→0|1|2|…|9,C→0|54、编译程序中的语法分析器接受以()为单位的输入,并产生有关信息供以后各阶段使用。

A、表达式B、产生式C、单词D、语句5、算符优先分析法每次都是对()进行归约。

A、直接短语B、句柄C、素短语D、最左素短语6、过程调用时,参数的传递方法通常有()。

(1)传值;(2)传地址;(3)传结果;(4)传名A、(1)(2)B、(1)(2)(3)C、(1)(2)(4)D、(1)(2)(3)(4)7、在编译方法中,动态存储分配的含义是()。

A、在运行阶段对源程序中的量进行分配B、在编译阶段对源程序中的量进行分配C、在编译阶段对源程序中的量进行分配,在运行时这些量的地址可以根据需要改变D、以上都不对8、a:= a+b*c↑(d/e)/f的逆波兰记号表示是()。

A、aabc*+↑de/f/:=B、aabcde↑/*f/:=C、aabcde/↑*f/+:=D、以上都不对。

9.算符文法是指的文法。

①没有形如U→...VW...的规则(U,V,W VN)②VT中任意两个符号之间至多存在一种算符优先关系③没有相同右部的规则④没有形如U→ε的规则A. ①B. ①和②C. ①、②和③D. ①、②、③和④10、编译程序绝大多数时间花在上。

编译原理考试习题及答案

编译原理考试习题及答案

( T ② S ① a
T ,
T ④ S ③ a
2019/1/29
CH.5.练习题3(P133.)

3.(1) 计算练习2文法G2的FIRSTVT和LASTVT。 S→a||(T) T→T,S|S

(1) 解: (执行相应的算法可求得) FIRSTVT(S)={ a, ∧, ( } FIRSTVT(T)={ , , a, ∧, ( } LASTVT(S)={ a, ∧, ) } LASTVT(T)={ , , a, ∧, ) }
(1) 正规式 1(0|1)*101
0
0
DFA:
3,2
1 0
3,5,2
1 1 0
x
1
1,3,2
1
0
3,4,2
1
3,Y,4,2 I0 I1 1 3 3 3 5 3
I {X} {1,3,2} {3,2} {3,4,2} {3,5,2} {3,Y,4,2}
I0 {3,2} {3,2} {3,5,2} {3,2} {3,5,2}
2019/1/29 22
CH.5.练习题2(P133.)

2.(2).给出(a,(a,a))“移进-归约”的过程。 (2) 解: (a,(a,a))的“移进-归约”过程: 步骤 符号栈 输入串 动作 9 #(T,( S ,a))# 归约 S → a 10 #(T,(T , a ))# 归约 T → S 11 #(T,(T, a ))# 移进 , 12 #(T,(T, a ))# 移进 a 13 #(T,( T,S ))# 归约 S → a 14 #(T, (T ) )# 归约 T → T,S 15 #(T, (T) )# 移进 ) 16 #( T, S )# 归约 S → (T)

编译原理考试题库

编译原理考试题库

一、判断(共计50分,每题2.5分)1、静态存储分配策略是在程序运行期间为源程序中的量进行分配。

A. 正确B. 错误错误:【B】2、含有优化部分的编译程序的执行效率高。

A. 正确B. 错误错误:【A】3、四元式之间的联系是通过符号表实现的。

A. 正确B. 错误错误:【B】4、包含公共左因子的文法也能直接用预测分析法来分析。

A. 正确B. 错误错误:【B】5、局部优化是在一个程序块内进行的优化。

A. 正确B. 错误错误:【B】6、数组元素的地址计算与数组的存储方式有关。

A. 正确B. 错误错误:【A】7、紧跟在条件转移语句后面的语句是基本块的入口语句。

A. 正确B. 错误错误:【A】8、LL(1)文法是无左递归、无二义性文法。

A. 正确B. 错误错误:【A】9、设有一个LR(0)项目集I={X→α.Bβ, A→α.},该项目集含有“归约-归约”冲突。

A. 正确B. 错误错误:【B】10、使用语法制导翻译法的编译程序能够同时进行语法分析和语义分析。

A. 正确B. 错误错误:【A】11、包含左递归的文法也能直接用LL(1)分析法来分析。

A. 正确B. 错误错误:【B】12、产生式是用于定义词法成分的一种书写规则。

A. 正确B. 错误错误:【B】13、如果i •>j , 则j <•i 。

A. 正确B. 错误错误:【B】14、编译程序与解释程序的区别在于编译程序对源程序进行了翻译,而解释程序则没有。

A. 正确B. 错误错误:【B】15、在形式语言中,最右推导的逆过程也称为规范归约。

A. 正确B. 错误错误:【A】16、设有一个LR(0)项目集Ii={X→α.Bβ,A→α.},该项目集含有“移进-归约冲突”。

A. 正确B. 错误错误:【A】17、动态存储分配是指在编译阶段对源程序中的量进行分配,以使目标代码在运行时加快行速度。

A. 正确B. 错误错误:【B】18、设有一个LR(0)项目集Ii={X→α.,A→α.},该项目集含有“归约-归约冲突”。

编译原理考试及答案

编译原理考试及答案

编译原理考试及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是将源代码翻译成目标代码,以下哪个选项不属于编译器的主要功能?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:D2. 在编译原理中,BNF(巴科斯-诺尔范式)是一种用于描述哪种结构的记号?A. 语法结构B. 词法结构C. 语义结构D. 控制结构答案:A3. 编译过程中的哪个阶段负责检查变量是否被正确声明?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C4. 下列哪个选项不是编译器前端处理的一部分?A. 预处理B. 词法分析C. 语法分析D. 目标代码生成答案:D5. 在编译原理中,自底向上的解析方法通常指的是哪种分析方法?A. LL(1)分析B. LR(1)分析C. LALR(1)分析D. SLR(1)分析答案:B6. 编译器中的语义分析阶段主要负责什么?A. 识别标识符B. 检查语法结构C. 构建抽象语法树D. 生成中间代码答案:C7. 编译器中的错误恢复机制主要在哪个阶段进行?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:B8. 编译器中的代码优化通常发生在哪个阶段?A. 语义分析B. 中间代码生成C. 目标代码生成D. 机器无关代码优化答案:D9. 在编译原理中,哪些技术用于处理左递归?A. 直接左递归消除B. 间接左递归消除C. 直接和间接左递归消除D. 只有直接左递归消除答案:C10. 编译器中的哪些技术用于处理冲突?A. 预测分析表B. 状态转换图C. 优先级规则D. 所有选项答案:D二、填空题(每题2分,共20分)1. 编译器的前端主要负责源程序的______和______。

答案:词法分析;语法分析2. 编译器的后端主要负责______和______。

答案:代码优化;目标代码生成3. 在编译原理中,一个文法的产生式规则形式为:A → α,其中A是非终结符,α是终结符和非终结符的有限序列,这种产生式规则被称为______产生式。

(完整word版)编译原理练习题

(完整word版)编译原理练习题

一章: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.()是两类程序语言处理程序。

A. 高级语言程序和低级语言程序B. 解释程序和编译程序C. 编译程序和操作系统D. 系统程序和应用程序2. 编译程序前三个阶段完成的工作是()。

A. 词法分析、语法分析和代码优化B. 代码生成、代码优化和词法分析C. 词法分析、语法分析、语义分析和中间代码生成D. 词法分析、语法分析和代码优化3. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。

A. 字符串B. 产生式C. 非开始符号D. 文法4. 词法分析器的输出结果是()。

A. 单词的种别编码B. 单词在符号表中的位置C. 单词的种别编码和自身值D. 单词自身值5. 一个句型中称为句柄的是该句型的最左()。

A. 非终结符号B. 短语C. 句子D. 直接短语6. 高级语言编译程序常用的语法分析方法中,递归下降分析法属于()分析方法。

A. 自左向右B. 自顶向下C. 自底向上D. 自右向左7. 在通常的语法分析方法中,()特别适用于表达式的分析。

A. 算符优先分析法B. LR分析法C. 递归下降分析法D. LL(1)分析法8. 优化可生成_____的目标代码。

A. 运行时间较短B. 占用存储空间较小C. 运行时间短但占用内存空间大D. 运行时间短且占用存储空间小9.()是两类程序语言处理程序。

A. 系统程序和应用程序B.编译程序和操作系统C. 解释程序和编译程序D.高级语言程序和低级语言程序10. 经过编译所得到的目标程序是()。

A. 四元式序列B. 间接三元式序列C. 二元式序列D. 机器语言程序或汇编语言程序11. 程序的基本块是指()。

A. 一个子程序B. 一个仅有一个入口和一个出口的语句C. 一个没有嵌套的程序段D. 一组顺序执行的程序段,仅有一个入口和一个出口12. 一个上下文无关文法G包括四个组成部分:一组终结符,一组非终结符,一个开始符号,以及一组()。

编译原理练习题及答案

编译原理练习题及答案

第一章练习题(绪论)一、选择题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.将编译程序分成若干个“遍”是为了_b__。

a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2.构造编译程序应掌握__d__。

a.源程序b.目标语言c.编译方法d.以上三项都是3.变量应当c_。

a.持有左值b.持有右值c.既持有左值又持有右值d.既不持有左值也不持有右值4.编译程序绝大多数时间花在_d___上。

a.出错处理b.词法分析c.目标代码生成d.管理表格5.词法分析器的输出结果是_c___。

a.单词的种别编码b.单词在符号表中的位置c.单词的种别编码和自身值d.单词自身值6.正规式MI和M2等价是指__c__。

a. MI和M2的状态数相等b.Ml和M2的有向弧条数相等。

C.M1和M2所识别的语言集相等d. Ml和M2状态数和有向弧条数相等7.中间代码生成时所依据的是—c。

a.语法规则b.词法规则c.语义规则d.等价变换规则8.后缀式ab+cd+/可用表达式__b_来表示。

a.a+b/c+d b.(a+b)/(c+d) c.a+b/(c+d) d.a+b+c/d9.程序所需的数据空间在程序运行前就可确定,称为____c__管理技术。

a.动态存储b.栈式存储c.静态存储d.堆式存储10.堆式动态分配申请和释放存储空间遵守___d_____原则。

a.先请先放b.先请后放c.后请先放d.任意二(每小题10分,共80分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。

2. 已知文法G[E]:E→ET+|T T→TF* | F F→F^ | a试证:FF^^*是文法的句型,指出该句型的短语、简单短语和句柄. 3.为正规式(a|b) *a(a|b)构造一个确定的有限自动机。

4.设文法G(S):S→(L)|a S|aL→L,S|S(1) 消除左递归和回溯;(2) 计算每个非终结符的FIRST和FOLLOW;(3) 构造预测分析表。

《编译原理》练习题库参考答案

《编译原理》练习题库参考答案

《编译原理》练习测试题库一、填空1.若源程序是用高级语言编写的,目标程序是______,则其翻译程序称为编译程序。

2.词法分析和语法分析本质上都是对源程序的______进行分析。

3.如果源语言(编写源程序的语言)是高级语言,而目标语言是某计算机的汇编语言或机器语言,则这种翻译程序称为_____。

4.对编译程序而言,输入数据是_______,输出结果是________。

5. ______,是构成语言文法的单词,是语法成分的最小单位。

6.由PL/0的EBNF可知,PL/0语言可看成是PASCAL语言的子集,它的编译程序是一个__________。

7.由于PL/0编译程序采用_________,所以语法分析过程BLOCK是整个编译过程的核心。

8.用语法图描述语法规则的优点是______、________。

9.每个非终结符是一个语法成分,在书写语言程序时并不出现,它是由_________和_________、或终结符串定义的。

10.PL/0的目标程序为假想栈式计算机的汇编语言,与具体计算机______。

11.PL/0的编译程序和目标程序的解释执行程序都是用_______书写的,因此PL/0语言可在配备_________的任何机器上实现。

12.PL/0编译程序是用PASCAL语言书写的,整个编译程序(包括主程序)是由______个嵌套及并列的过程或函数组成13.当源程序编译正确时,PL/0编译程序自动调用__________,对目标代码进行解释执行,并按用户程序要求输入数据和输出运行结果。

14.由于对某些非终结符可以递归定义,这就使得_________可用有穷的文法描述。

15. ______的任务是识别由词法分析给出的单词符号序列在结构上是否符合给定的文法规则。

16. PL/0编译程序的语法分析采用了____________。

17.语法分析程序除总控外主要有两大部分的功能,即_________和__________.18.PL/0的词法分析程序GETSYM,是一个独立的过程,其功能是为_________提供单词用的,是______的基础,它把输入的字符串形式的源程序分割成一个个单词符号。

编译模拟试题及答案Word版

编译模拟试题及答案Word版

《编译原理》模拟试题班级学号姓名评分一、填空1.文法G包括四个组成部分:一组终结符号,,一组产生式,以及。

2.文法按产生式的形式分为四种类型,它们是:0型文法,又称短语文法;1型文法,又称上下文有关文法;2型文法,又称文法;3型文法,又称文法。

3.推导称为规范推导,由产生的句型称为规范句型。

4.设G是一个文法,S是它的开始符号,如果 S α,则称α是一个句型。

的句型是一个句子。

5 对于一个文法G而言,如果L(G)中对应,那么该文法就称为是二义的。

6.通常程序设计语言的单词符号分为五种:基本字、、常数、、界限符。

7.在自底向上分析法中,LR分析法把“可归约串”定义为。

8.编译中常用的中间代码形式有逆波兰式、、和四元式等。

9.对中间代码优化按涉及的范围分为局部优化,和。

10.局部优化主要包括合并已知量、和等内容。

二、编译过程通常分为哪几个主要阶段?每个阶段的主要功能?三、设有文法G1 G1:S→SaQ ∣ Q1.证明句型QbRae是规范句型 Q→QbR ∣ R R→cSd ∣ e2.给出句型QbRae 的短语,直接短语和句柄:短语:直接短语:句柄:四、对于文法G2,填写各产生式的选择集合和G2的预测分析表。

G2:① E→TE' SELECT(①)={ }② E'→+TE’ SELECT(②)={ }③ E'→ε SELECT(③)={ }④ T→FT' SELECT(④)={ }⑤ T'→*FT’ SELECT(⑤)={ }⑥ T'→ε SELECT(⑥)={ }⑦ F→(E) SELECT(⑦)={ }⑧ F→ i SELECT(⑧)={ }五、把下面的语句翻译成四元式序列。

(只给出最后结果,设nextstat当前值为100)while A<C do if A<0 then A:=A+1 else A:=A+2六、用基本块代码生成算法生成目标代码。

编译原理模拟试卷

编译原理模拟试卷

编译原理A一、不定项选择题(每题5分,共8题,计40分)1. 下面说法错误的有(CD)。

A、编译前端完成对源程序的分析B、编译后端对源程序进行综合C、编译器等同于解释器D、编译器可以发现源程序的全部语法错误和全部语义错误2. 下面(ACD )是编译程序的组成部分。

A、词法分析程序B、设备管理程序C、语法分析程序D、代码生成程序3. 不属于下面正规式定义的语言集合的元素有( C )。

这里,id是字母开头,后跟字母或数字的,长度不超过10的字符串形式。

( int | float | double ) id (, id )* ;A、int a;B、int a,b,d;C、float xyz abc;D、double m;4. C语言编译中的存储分配策略是( B )。

A、静态存储分配策略B、动态存储分配策略C、最佳分配策略D、时钟分配策略5. Java编译器生成的是( BCD )。

A、JavacB、.class文件C、BytecodeD、字节码6. 文法G(E): E → i | E+E | E*E | (E) 不可以产生的句子是( CD )。

A、(i)B、i*(i+i)+(i*i)C、i++D、(i+())7. 常用的中间代码表示形式有( ABC )。

A、后缀表示B、图形表示C、三地址码D、中缀表示8. 在编译过程中,符号表的主要作用有( CD )。

A、帮助错误处理B、辅助语法错误的检查C、辅助语义的正确性检查D、辅助代码生成E、辅助对目标程序的优化二、判断题(每题2分,共10题,计20分,写对或错)1. 编译的整个过程都要包括符号表管理和出错管理两个部分。

(对)2. 文法E → E + id | id是SLR(1)文法也是LR(1)文法。

(对)3. 对任何一个编译程序来说,产生中间代码是不可缺少的一部分。

( 错 )4. 如果一种程序语言允许数据对象能够自由地分配和释放,就需要采用堆式存储分配方法。

(对)5. 正规文法、正规式、确定有限自动机和非确定有限自动机在接收语言的能力上是互相等价的。

编译原理习题

编译原理习题

编译原理习题作业⼀1.已知⽂法G[A],写出它定义的语⾔描述如:G[A]:A → 0B|1CB → 1|1A|0BBC → 0|0A|1CC2. 给出⽣成下述语⾔的上下⽂⽆关⽂法:(1){ a n b n a m b m| n,m>=0}(2) { 1n0m 1m0n| n,m>=0}3. 给出⽣成下述语⾔的三型⽂法:(1){ a n b m|n,m>=1 }(2){a n b m c k|n,m,k>=0 }4、⽂法G[E]为:E→E+T|TT→T*F|FF→(E)|i试给出句型(E+F)*i的短语,简单(直接)短语,句柄。

第3章练习题⼀、判断题:1、编译程序中的词法分析程序以字符形式的源程序作为输⼊,输出的单词符号常采⽤⼆元组的形式。

2、正规式的运算符“|”读作“或“。

3、若两个正规式所表⽰的正规集相同,则认为⼆者是等价的。

4、⽤l代表字母,d代表数字,Σ={l,d},则正规式r=dd*定义了⽆符号整数单词。

5、⼀个确定的有穷⾃动机DFA M的转换函数f是⼀个从KⅹΣ到K 的⼦集的映像。

6、⼀个⾮确定的有穷⾃动机NFA N 的转换函数f是⼀个从KⅹΣ*到K 的映像。

7、⼀张状态转换图只包含有限个状态,其中有⼀个被认为是初态,最多只有⼀个终态。

8、终态与⾮终态是可区别的。

9、对任意⼀个右线性⽂法G,都存在⼀个NFA M,满⾜L(G)=L(M)。

10、对任意⼀个右线性⽂法G,都存在⼀个DFA M,满⾜L(M)=L(R)。

⼆、构造正规式1(0|1)*101相应的DFA.练习题2⼀、判断题:1、空符号串的集合{ε}={}=ф。

2、设A是符号串的集合,则A0=ε。

3、设G是⼀个⽂法,S是开始符号,如果S => x且x∈V T*,则称x是⽂法G[S]的句型。

4、在形式语⾔中,最右推导的逆过程也称为规范归约。

5、⼀个语⾔的⽂法是唯⼀的。

6、若⼀个语⾔是⽆穷集合,则定义该语⾔的⽂法⼀定是递归的。

《编译原理》题库V

《编译原理》题库V

一、单项选择题1.编译程序是一种(A)软件。

A.系统B.应用C.MISD.ERP2.下面对编译原理的有关概念描述正确的是( D )A.目标语言只能是机器语言B.编译程序处理的对象是源语言C.Lex是语法分析自动生成器D.解释程序属于编译程序3.( C )不是编译程序的组成部分。

A.词法分析程序 B.代码生成程序 C.设备管理程序D.语法分析程序4.下面对编译程序分为“遍”描述正确的是(A)A.分“遍”可以使编译程序结构清晰B.可以提高程序的执行效率C.可以提高机器的执行效率D.可以增加对内容容量的要求5.下面对编译程序分“遍”应考虑的因素描述不正确的是(C)A.源语言的特征和约束 B.代码优化的因素C. 编译程序的功能D.目标代码的选择6.编译程序各阶段的工作都涉及到( D )①表格管理②语法分析③出错处理④代码优化A.①② B. ②③ C. ③④ D. ①③7.设有表达式a*b-c,将其中a*b识别为表达式的编译阶段是(B )A.词法分析B.语法分析C.语义分析D.代码生成8.BNF是一种广采用的( C )的工具。

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

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

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

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

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

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

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

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、将编译程序分成若干个“遍”是为了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→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)5、如果文法G是无二义的,则它的任何句子αa.最左推导和最右推导对应的语法树必定相同b.最左推导和最右推导对应的语法树可能不同c.最左推导和最右推导必定相同d.可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是a.短语b.句柄c.句型d.句子7、文法G:E→E+T|TT→T某P|PP→(E)|I则句型P+T+i的句柄和最左素短语为a.P+T和ib.P和P+Tc.i和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DIGIT
例2-1(2/2)
语义 year(年)、month(月)、day(日)
语义约束条件 0 < month.value < 13 0 < day.value < 32,31,30 0 < year.value < 10000
习题
2-1 试分析一个简短的 C 程序,找出几 个属于语法、词法、语义的语言现象。 2-2 试分析例 2-1 的 date 输出数据的 处理中,应该做哪些词法分析、语法分 析、语义处理。 2-3 理解交叉编译和自展技术
增加包括国际代码的电话号码描述
如:86-010-6739-1742
1-3 给定文法如下:
E →T | E + T | E - T T →F | T * F | T / F F →( F ) | i 画出表达式 i*(i+i)+i 的分析树
1-4 判断上题的文法属于哪个类型的文 法?为什么?
例2-1(1/2)
习题
1-1 参照文法, E→E+E|E*E|(E)|I 写出以下表达式的生成过程(最左派生、最 右派生):
i*(i+i)*i
1-2 扩充文法
<电话号码> → <局代码><本机代码> <电话号码> → <地区前缀><局代码><本机代码 > <地区前缀> → <地区代码> <地区前缀> →(<地区代码>) <地区代码> → DIGIT DIGIT <地区代码> → DIGIT DIGIT DIGIT <局代码> → DIGIT DIGIT DIGIT DIGIT <本机代码> → DIGIT DIGIT DIGIT DIGIT
用递归子程序法设计并实现语法分析程序 ,按照生成顺序输出产生式
练习: P202~204 4.1~4.8
4-5 构造如下给定文法的预测分析表 S→AB A → B a| B → D b|D D → d|
4-6 判断下述文法可否改写为 LL(1)文法
a. S→A|B
A→aA|a
B→bB|b
b. S→i|(E)
习题
P97 练习3.1~3.2;3.3,3.4选做
练习3.5~3.13——有能力者可以完成
3-1 构造下列正规式的状态图
a ( ( a | b )* | a b* a )* b
3-2 给出下述文法所对应的正规式
S→0A|1B
A→1S|1
(01|10)*
B→0S|0
3-3 文法G[<单词>]为:
<单词> → <标识符> | <整数> <标识符> → <标识符> <字母> | <标识符> <数字> | <字母> <整数> → <整数> <数字> | <数字> <字母> → A | B | … | Y | Z <数字> → 1 | 2 | … | 8 | 9 | 0 将该文法改写为正规文法
3-4 上机题
合并例3-3和例3-4的状态图,设计并实现一个词法分 析函数,每次返回一个单词种别和属性;编制主程序 完成测试(输入和输出)。
1~3章自测题
1、设 r=(1|0)*0((0|1|2)2|(0|1|2) 3)(0|1|2|3|4|5|6|7|8|9)8 求RG G 和FA M使得L(M)=L(G)=L(r)
4-9 给出布尔表达式的文法,构造其算符优先关系 表
bexpr → bexpr OR bexpr bexpr → bexpr AND bexpr bexpr → NOT bexpr bexpr →( bexpr ) bexpr → TRUE bexpr → FALSE 练习:P205 4.15~4.17
4-10求给定文法的拓广文法的LR(0)项目 集规范族,及相应的(0)分析表:
S A
ABA|
BaB|b 4-11 说明为什么各种 LR 分析方法的分 析能力不同?
4-12 已知文法 A a A d | a A b | ,判断该文法是否是 SLR(1) 文法,如果 是 SLR(1)文法,则构造分析表;并对输 入串 ab# 给出分析过程。
2、构造算术表达式的文法G,并且 1) 指出各语法变量的意义 2) 求 x+log( |sin(y)| +b4) 最左推导、最右推导 3) 求 x+log( |sin(y)| +b4) 的语法树
3、叙述下列概念的定义和意义 前缀、文法、直接推导、规范归约、短语、句柄、
正规式、正规定义式、种别码与属性值、双缓冲 4、编译程序的总体结构及各模块的功能;编译程序 的实现方法;如何根据FA实现扫描器?
E→E+S|E-S|S
思考题
4-7 能否直接用语法图描述 E→E+E|E-E|E*E |E/E|-E|(E)|id|const,并用递归子程序法实
现语法分析?为什么? 4-8 能否将各种单词的文法直接并入表达式语法
,进行语法分析处理?试分析这样做会有哪些好的 影响和不好的影响。
练习 P204:4.9~4.13
的关系?假设:一个字符占一个字节, 一个整数占两个字节。
DOS 命令 date 的输出格式
例:9-2-1993、09-03-1993、9-03-93
语法
date → month - day - year
词法
month → DIGIT DIGIT | DIGIT day → DIGIT DIGIT | DIGIT year → DIGIT DIGIT | DIGII DIGIT DIGIT
4-13 证明下列文法不是 LR(0) 文法, 是 SLR(1) 文法。
S A
A A b | b B a
BaAc|a|aAb 练习:P206~P207 4.18~4.25
思考题:如何在计算机中存储一个文法 的所有LR(0)项目最能节省空间?如 果某文法有n个产生式,这些产生式的右 部的最大长度为m,问:你所给出的存 储方案需要的存储空间与n和m有什么样
习题:
4-1 改写以下文法,消除左递归 M→MaH | H H→b(M) | (M) | b
4-2 求以下文法中各非终结符的FIRST集和 FOLLOW集 A→baB| B→Abb|a
4-3 构造如下给定文法的递归子程序 S → a|↑|( T ) T → T,S|S
上机题
4-4 给定下列文法: S→id=E; S→if C then S S→while C do S C→E>E C→E<=E
相关文档
最新文档