编译原理考试习题及答案

合集下载

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

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

第一章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.词法规则7、词法分析器得输入就是。

a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循得就是- 。

a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序就是对。

a.汇编程序得翻译b.高级语言程序得解释执行c.机器语言得执行d.高级语言得翻译10、语法分析应遵循。

a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段得工作都涉及到。

a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段。

a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序与编译程序得区别在于。

2、编译过程通常可分为5个阶段,分别就是、语法分析、代码优化与目标代码生成。

3、编译程序工作过程中,第一段输入就是,最后阶段得输出为程序。

4、编译程序就是指将程序翻译成程序得程序。

单选解答1、将编译程序分成若干个“遍”就是为了使编译程序得结构更加清晰,故选b。

2、构造编译程序应掌握源程序、目标语言及编译方法等三方面得知识,故选d。

3、对编译而言,变量既持有左值又持有右值,故选c。

4、编译程序打交道最多得就就是各种表格,因此选d。

5、目标代码包括汇编指令代码、可重定位指令代码与绝对指令代码3种,因此不就是目标代码得只能选d。

编译原理习题及答案

编译原理习题及答案

( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( 10.× 22.√
) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) 11.
二、填空题: 2.编译过程可分为 ( 词法分析) , (语法分析) , (语义分析与中间代码生成 ) , (优化)和(目标 代码生成 )五个阶段。 3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是( 二义性的 4.从功能上说,程序语言的语句大体可分为( 5.语法分析器的输入是( 单词符号 6.扫描器的任务是从( 源程序中 执行性 )语句和(说明性 ) 。 ) 。 ) ,其输出是( 语法单位 )中识别出一个个( 单词符号 ) 。 )语句两大类。
因此,文法 G[为二义文法。
五.计算题(10 分) 已知文法 A->aAd|aAb| ε
判断该文法是否是 SLR(1) 文法,若是构造相应分析表,并对输入串 ab# 给出分析过程。 解:增加一个非终结符 S/后,产生原文法的增广文法有: S'->A A->aAd|aAb|ε 下 面 构 造 它 的 LR(0) 项 目 集 规 范 族 为 :
对输入串 ab#给出分析过程为:
一、是非题:
1.一个上下文无关文法的开始符,可以是终结符或非终结符。 2.一个句型的直接短语是唯一的。 3.已经证明文法的二义性是可判定的。 4.每个基本块可用一个 DAG 表示。 5.每个过程的活动记录的体积在编译时可静态确定。 6.2 型文法一定是 3 型文法。 7.一个句型一定句子。 8.算符优先分析法每次都是对句柄进行归约。 X 9.采用三元式实现三地址代码时,不利于对中间代码进行优化。 10.编译过程中,语法分析器的任务是分析单词是怎样构成的。 11.一个优先表一定存在相应的优先函数。 13.递归下降分析法是一种自下而上分析法。 14.并不是每个文法都能改写成 LL(1)文法。 15.每个基本块只有一个入口和一个出口。 16.一个 LL(1)文法一定是无二义的。 17.逆波兰法表示的表达试亦称前缀式。 18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。 19.正规文法产生的语言都可以用上下文无关文法来描述。 20.一个优先表一定存在相应的优先函数。 21.3 型文法一定是 2 型文法。 22.如果一个文法存在某个句子对应两棵不同的语法树, 则文法是二义性的。 答案:1.× 12.√ 13.× 2.× 14.√ 3.× 15.√ 4.√ 16.√ 5.√ 17.× 6.× × 18.√ 19.√ 20.× 21.√ 7.× 8.× 9.√ X 12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

编译原理试题及答案

编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。

词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

(√)6.逆波兰表示法表示表达式时无须使用括号. (√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是_____。

A.() 单词的种别编码B.() 单词在符号表中的位置C.( )单词的种别编码和自身值D.( )单词自身值2.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.()M1和M2的有向边条数相等C.()M1和M2所识别的语言集相等D.()M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.( ) xyx B.()(xyx)*C.( ) xnyxn(n≥0) D.( )x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.()最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( )最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案

完整word版编译原理考试试题及答案《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )11.一个优先表一定存在相应的优先函数。

( x )12.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )13.递归下降分析法是一种自下而上分析法。

( )14.并不是每个文法都能改写成LL(1)文法。

( )15.每个基本块只有一个入口和一个出口。

( )16.一个LL(1)文法一定是无二义的。

( )17.逆波兰法表示的表达试亦称前缀式。

( )18.目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。

( )19.正规文法产生的语言都可以用上下文无关文法来描述。

( )20.一个优先表一定存在相应的优先函数。

( )21.3型文法一定是2型文法。

( )22.如果一个文法存在某个句子对应两棵不同的语法树,则文法是二义性的。

( )二、填空题:1.( 最右推导 )称为规范推导。

2.编译过程可分为(词法分析),(语法分析),(语义分析和中间代码生成),(代码优化)和(目标代码生成)五个阶段。

3.如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是()。

4.从功能上说,程序语言的语句大体可分为()语句和()语句两大类。

5.语法分析器的输入是(),其输出是()。

6.扫描器的任务是从()中识别出一个个()。

编译原理考试习题及答案

编译原理考试习题及答案

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

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

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

第一章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)<g(b),则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α。

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

2-3-习题(含解答)

2-3-习题(含解答)

2-3 习题(含解答)目录第1章编译原理概述 (1)第2章PL/O编译程序的实现 (4)第3章文法和语言 (4)第4章词法分析 (13)第5章自顶向下语法分析方法 (28)第6章自底向上优先分析 (39)第7章LR分析 (42)第8章语法制导翻译和中间代码生成 (60)第9章符号表 (67)第10章目标程序运行时的存储组织 (70)第11章代码优化 (73)第12章代码生成 (76)综合练习一 (79)综合练习二 (84)综合练习三 (90)综合练习四 (95)综合练习五 (101)综合练习六 (107)第1章编译原理概述一、选择题1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部分,还应包括 (1) 。

其中, (2) 和代码优化部分不是每个编译程序都必需的。

词法分析器用于识别 (3) ,语法分析器则可以发现源程序中的 (4) 。

(1) A.模拟执行器 B.解释器 C.表格处理和出错处理 D.符号执行器(2) A.语法分析 B.中间代码生成 C.词法分析 D.目标代码生成(3) A.字符串 B.语句 C.单词 D.标识符(4) A.语义错误 B.语法和语义错误 C.错误并校正 D.语法错误2.程序语言的语言处理程序是一种 (1) 。

(2) 是两类程序语言处理程序,他们的主要区别在于 (3) 。

(1) A.系统软件 B.应用软件 C.实时系统 D.分布式系统(2) A.高级语言程序和低级语言程序 B.解释程序和编译程序C.编译程序和操作系统D.系统程序和应用程序(3) A.单用户与多用户的差别 B.对用户程序的查错能力C.机器执行效率D.是否生成目标代码3.汇编程序是将翻译成,编译程序是将翻译成。

A.汇编语言程序B.机器语言程序C.高级语言程序D. A 或者BE. A 或者CF. B或者C4.下面关于解释程序的描述正确的是。

(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A. (1)(2)B. (1)C. (1)(2)(3)D.(2)(3)5.高级语言的语言处理程序分为解释程序和编译程序两种。

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

(√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。

A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

《编译原理》历年试题及答案

《编译原理》历年试题及答案

<编译原理>历年试题及答案一.(每项选择2分,共20分)选择题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.正规式MI和M2等价是指____。

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

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

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

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

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

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) 构造预测分析表。

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

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

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. 管理程序运行时的内存分配答案:A2. 词法分析器的主要任务是什么?A. 将源代码分解成多个语句B. 将源代码分解成多个词素C. 检查源代码的语法正确性D. 将词素转换为相应的语法单位答案:B3. 下列哪个是自顶向下的语法分析方法?A. LL(1)分析法B. LR(1)分析法C. LALR(1)分析法D. GLR分析法答案:A4. 语义分析的主要任务是什么?A. 检查程序的语法正确性B. 检查程序的类型正确性C. 将源代码转换为目标代码D. 进行程序的优化答案:B5. 代码生成阶段的主要任务是什么?A. 将语法树转换为目标代码B. 进行程序的优化C. 检查程序的类型正确性D. 将源代码分解成多个词素答案:A二、简答题1. 简述编译过程的主要阶段。

答案:编译过程主要分为四个阶段:词法分析、语法分析、语义分析和代码生成。

词法分析将源代码分解成词素,语法分析检查源代码的语法结构,语义分析检查源代码的语义正确性,代码生成将源代码转换为目标代码。

2. 什么是中间代码?它在编译过程中起到什么作用?答案:中间代码是一种介于源代码和目标代码之间的代码形式,它通常具有更接近于机器语言的特性,但仍然保持一定的抽象级别。

中间代码在编译过程中起到桥梁的作用,它使得代码优化和目标代码生成更加方便和高效。

三、论述题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.编译程序是对高级语言程序的解释执行。

(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。

(√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作。

(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。

A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。

A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。

A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)

《编译原理》考试试题及答案(汇总)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。

(×)2.一个有限状态自动机中,有且仅有一个唯一的终态。

(×)3.一个算符优先文法可能不存在算符优先函数与之对应。

(√ )4.语法分析时必须先消除文法中的左递归。

(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点. (√)6.逆波兰表示法表示表达式时无须使用括号。

(√ )7.静态数组的存储空间可以在编译时确定。

(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。

(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。

(× )10.一个语义子程序描述了一个文法所对应的翻译工作. (×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分)1.词法分析器的输出结果是_____.A.()单词的种别编码B.()单词在符号表中的位置C.() 单词的种别编码和自身值D.( )单词自身值2.正规式M 1 和M 2 等价是指_____。

A.() M1和M2的状态数相等B.()M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( )M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____.A.( )xyx B.() (xyx)*C.( ) xnyxn(n≥0)D.( )x*yx*4.如果文法G是无二义的,则它的任何句子α_____。

A.( )最左推导和最右推导对应的语法树必定相同B.( )最左推导和最右推导对应的语法树可能不同C.() 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。

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

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

编译原理习题及答案(整理后)第一章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. 编译器的主要功能是什么?A. 代码优化B. 语法分析C. 代码生成D. 所有以上选项答案:D2. 下列哪个阶段属于编译过程的前端?A. 语法分析B. 代码生成C. 运行时库链接D. 目标代码优化答案:A3. 在编译原理中,什么是“产生式系统”?A. 一种编程语言的规范B. 一种用于描述语法的系统C. 一种代码优化技术D. 一种代码生成方法答案:B4. 以下哪个是自顶向下的语法分析方法?A. LR分析B. LALR分析C. LL分析D. CYK算法答案:C5. 在编译器的哪个阶段会进行类型检查?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:C二、填空题1. 编译器在进行________时,会识别源代码中的各种标识符、常量、运算符等,并将其转换成相应的符号。

答案:词法分析2. 在编译原理中,________图是一种用于描述程序执行过程中变量状态的图,它以节点表示变量的值,以有向边表示程序的控制流。

答案:控制流3. 语法分析的主要任务是根据________规则来分析和构建源程序的语法结构。

答案:语法4. 在编译过程中,________是将源程序中的高级表示转换为机器语言或中间代码的过程。

答案:代码生成5. 编译器的________阶段负责将优化后的代码转换为目标机器可执行的指令序列。

答案:目标代码生成三、简答题1. 简述编译器的一般工作流程。

答:编译器的一般工作流程包括以下几个阶段:首先是词法分析,将源代码文本分解成一系列的记号;其次是语法分析,根据语言的语法规则构建抽象语法树;接着是语义分析,检查源代码的语义正确性并进行类型检查;然后是中间代码生成,将抽象语法树转换为中间表示形式;之后是代码优化,对中间代码进行各种优化以提高效率;最后是代码生成,将优化后的中间代码转换为目标机器的机器代码。

2. 描述自顶向下和自底向上语法分析方法的主要区别。

答:自顶向下的语法分析方法从开始符号开始,尝试将输入的记号序列归约为语法中的产生式规则,直到得到完整的抽象语法树。

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

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

第一章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.词法规则7、词法分析器的输入是;a.单词符号串b.源程序c.语法单位d.目标程序8、中间代码生成时所遵循的是- ;a.语法规则b.词法规则c.语义规则d.等价变换规则9、编译程序是对;a.汇编程序的翻译b.高级语言程序的解释执行c.机器语言的执行d.高级语言的翻译10、语法分析应遵循;a.语义规则b.语法规则c.构词规则d.等价变换规则二、多项选择题1、编译程序各阶段的工作都涉及到;a.语法分析b.表格管理c.出错处理d.语义分析e.词法分析2、编译程序工作时,通常有阶段;a.词法分析b.语法分析c.中间代码生成d.语义检查e.目标代码生成三、填空题1、解释程序和编译程序的区别在于;2、编译过程通常可分为5个阶段,分别是、语法分析、代码优化和目标代码生成;3、编译程序工作过程中,第一段输入是,最后阶段的输出为程序;4、编译程序是指将程序翻译成程序的程序;单选解答1、将编译程序分成若干个“遍”是为了使编译程序的结构更加清晰,故选b;2、构造编译程序应掌握源程序、目标语言及编译方法等三方面的知识,故选d;3、对编译而言,变量既持有左值又持有右值,故选c;4、编译程序打交道最多的就是各种表格,因此选d;5、目标代码包括汇编指令代码、可重定位指令代码和绝对指令代码3种,因此不是目标代码的只能选d;6、词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义;因此选a;7、b 8、c 9、d 10、c多选解答1.b、c 2. a、b、c、e填空解答是否生成目标程序2、词法分析中间代码生成3、源程序目标代码生成4、源程序目标语言第二章一、单项选择题1、文法G:S→xSx|y所识别的语言是;a. xyxb. xyxc. x n yx n n≥0d. xyx2、文法G描述的语言LG是指;a. LG={α|S错误!α , α∈V T}b. LG={α|S错误!α, α∈V T}c. LG={α|S错误!α,α∈V T∪V N}d. LG={α|S错误!α, α∈V T∪V N}3、有限状态自动机能识别;a. 上下文无关文法b. 上下文有关文法c.正规文法d. 短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立;a. 若fa>gb,则a>bb.若fa<gb,则a<bc. a~b都不一定成立d. a~b一定成立5、如果文法G是无二义的,则它的任何句子α;a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是;a. 短语b.句柄c. 句型d. 句子7、文法G:E→E+T|TT→TP|PP→E|I则句型P+T+i的句柄和最左素短语为;+T和i b. P和P+T c. i和P+T+i 和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导;a. S⇒SA⇒SAA⇒AAA⇒aAA⇒abA⇒abab. S⇒SA⇒SAA⇒AAA⇒AAa⇒Aba⇒abac. S⇒SA⇒SAA⇒SAa⇒Sba⇒Aba⇒abad. S⇒SA⇒Sa⇒SAa⇒Sba⇒Aba⇒aba9、文法G:S→b|∧TT→T,S|S则FIRSTVTT ;a. {b,∧,}b. {b,∧,}c.{b,∧,,,}d.{b,∧,,,}10、产生正规语言的文法为;a. 0型b. 1型c. 2型d. 3型11、采用自上而下分析,必须;a. 消除左递归b. 消除右递归c. 消除回溯d. 提取公共左因子12、在规范归约中,用来刻画可归约串;a. 直接短语b. 句柄c. 最左素短语d. 素短语13、有文法G:E→ET|TT→T+i|i句子1+28+6按该文法G归约,其值为;a. 23 B. 42 c. 30 d. 1714、规范归约指;a. 最左推导的逆过程b. 最右推导的逆过程c. 规范推导d. 最左归约的逆过程二、多项选择题1、下面哪些说法是错误的;a. 有向图是一个状态转换图b. 状态转换图是一个有向图c.有向图是一个DFA 可以用状态转换图表示2、对无二义性文法来说,一棵语法树往往代表了;a. 多种推导过程b. 多种最左推导过程c.一种最左推导过程d.仅一种推导过程e.一种最左推导过程3、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法;a. 该句子的最左推导与最右推导相同b. 该句子有两个不同的最左推导c. 该句子有两棵不同的最右推导d. 该句子有两棵不同的语法树e.该句子的语法树只有一个4、有一文法G:S→ABA→aAb|εB→cBd|ε它不产生下面集合;a. {a n b m c n d m|n,m≥0}b. {a n b n c m d m|n,m>0}c. {a n b m c m d n|n,m≥0}d. {a n b n c m d m|n,m≥0}e. {a n b n c n d n|n≥0}5、自下而上的语法分析中,应从开始分析;a. 句型b. 句子c. 以单词为单位的程序d. 文法的开始符e. 句柄6、对正规文法描述的语言,以下有能力描述它;型文法型文法 c.上下文无关文法 d.右线性文法 e.左线性文法三、填空题1、文法中的终结符和非终结符的交集是;词法分析器交给语法分析器的文法符号一定是,它一定只出现在产生式的部;2、最左推导是指每次都对句型中的非终结符进行扩展;3、在语法分析中,最常见的两种方法一定是分析法,另一是分析法;4、采用语法分析时,必须消除文法的左递归;5、树代表推导过程, 树代表归约过程;6、自下而上分析法采用 、归约、错误处理、 等四种操作;7、Chomsky 把文法分为 种类型,编译器构造中采用 和 文法,它们分别产生 和 语言,并分别用 和 自动机识别所产生的语言; 四、判断题1、文法 S →aS|bR|ε描述的语言是a|bc R→c S2、在自下而上的语法分析中,语法树与分析树一定相同;3、二义文法不是上下文无关文法;4、语法分析时必须先消除文法中的左递归;5、规范归约和规范推导是互逆的两个过程;6、一个文法所有句型的集合形成该文法所能接受的语言; 五、简答题1、句柄2、素短语3、语法树4、归约5、推导 六、问答题1、给出上下文无关文法的定义;2、文法GS :S →aSPQ|abQ QP→PQ bP→bb bQ →bc cQ→cc1它是Chomsky 哪一型文法2它生成的语言是什么 3、按指定类型,给出语言的文法;L={a i b j |j >i ≥1}的上下文无关文法; 4、有文法G :S →aAcB|BdA →AaB|cB →bScA|b1试求句型aAaBcbbdcc 和aAcbBdcc 的句柄; 2写出句子acabcbbdcc 的最左推导过程; 5、对于文法GS :S →L|aS|a L →L, S|S1画出句型S,a 的语法树;2写出上述句型的所有短语、直接短语、句柄和素短语; 6、考虑文法GT :T →TF|F F →F ↑P|P P →T|i证明TP ↑TF 是该文法的一个句型,并指出直接短语和句柄; 单选解答 1、选c;2、选a;3、选c;4、虽然a 与b 没有优先关系,但构造优先函数后,a 与b 就一定存在优先关系了;所以,由fa>gb 或fa<gb 并不能判定原来的a 与b 之间是否存在优先关系:故选c;5、如果文法G 无二义性,则最左推导是先生长右边的枝叶:对于d,如果有两个不同的是了左推导,则必然有二义性;故选a;6、选c;7、由图2-8-1的语法树和优先关系可以看出应选b;8、规范推导是最左推导,故选d;9、由T→T,…和T→…得FIRSTVTT={,,};由T→S得FIRSTVTS⊂FIRSTVTT,而FIRSTVTS={b,∧,};即FIRSTVTT={b,∧,,,};因此选c;10、d 11、c 12、b 13、b 14、b多选解答1、e、a、c 2、a、c、e 3、b、c、d 4、a、c 5、b、c 6、a、b、c、d、e填空解答1、空集终结符右2、最左3、自上而上自下而上4、自上而上5、语法分析6、移进接受7、4 2 型3型上下文无关语言正规语言下推自动机有限判断解答1、对2、错3、错4、错5、错6、错简答解答1、句柄:一个句型的最左直接短语称为该句型的句柄;2、素短语:至少含有一个终结符的素短语,并且除它自身之外不再含任何更小的素短语;3、语法树:满足下面4个条件的树称之为文法GS的一棵语法树;①每一终结均有一标记,此标记为V N∪V T中的一个符号;②树的根结点以文法GS的开始符S标记;③若一结点至少有一个直接后继,则此结点上的标记为V N中的一个符号;④若一个以A为标记的结点有K个直接后继,且按从左至右的顺序,这些结点的标记分别为X1,X2,…,X K,则A→X1,X2,…,X K,必然是G的一个产生式;4、归约:我们称αγβ直接归约出αAβ,仅当A→γ是一个产生式,且α、β∈V N∪V T;归约过程就是从输入串开始,反复用产生式右部的符号替换成产生式左部符号,直至文法开始符;5、推导:我们称αAβ直接推出αγβ,即αAβ⇒αγβ,仅当A→γ是一个产生式,且α、β∈V N∪V T;如果α1⇒α2⇒…⇒αn,则我们称这个序列是从α1至α2的一个推导;若存在一个从α1αn的推导,则称α1可推导出αn;推导是归约的逆过程;问答1解答一个上下文无关文法G是一个四元式V T,V N,S, P,其中:●V T是一个非空有限集,它的每个元素称为终结符号;●V N是一个非空有限集,它的每个元素称为非终结符号,V T∩V N=Φ;●S是一个非终结符号,称为开始符号;●P是一个产生式集合有限,每个产生式的形式是P→α,其中,P∈V N,α∈V T∪V N;开始符号S至少必须在某个产生式的左部出现一次;2解答1由于产生式左部存在终结符号,且所有产生式左部符号的长度均小于等于产生式右部的符号长度,所以文法GS是Chomsky1型文法,即上下文有关文法;2按产生式出现的顺序规定优先级由高到低否则无法推出句子,我们可以得到:S⇒abQ⇒abcS⇒aSPQ⇒aabQPQ⇒aabP⇒aabb⇒aabbcQ⇒aabbccS⇒aSPQ⇒aaSPQPQ⇒aaabQPQPQ⇒aaabPPQ⇒aaabPQP⇒aaaPPQ⇒aaabbPq⇒aaabbQ⇒aaabbbc⇒aaabbbccQ⇒aaabbbccc……于是得到文法GS生成的语言L={a n b n c n|n≥1}3解答1由L={a i b j|j>i≥1}知,所求该语言对应的上下文无关文法首先应有S→aSb型产生式,以保证b 的个数不少于a的个数;其次,还需有S→Sb或S→bS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法GS为:GS:S→aSb|Sb|b4解答1分别画出对应两句型的语法树,如图2-8-2所示句柄:AaB Bd图2-8-2 语法树2句子acabcbbdcc 的最左推导如下:S ⇒aAcB ⇒aAaBcB ⇒acaBcB ⇒acabcB ⇒acabcbScA ⇒acabcbBdcA ⇒acabcbbdcA ⇒acabcbbdcc 5解答 1句型S,a 的语法树如图2-8-32由图2-8-3可知:①短语:S 、a 、a 、S,a 、S,a ;②直接短语:a 、S ;③句柄:S ;④素短语:素短语可由图2-8-3中相邻终结符之间的优先关系求得,即;因此素短语为a;6解答首先构造TP ↑TF 的语法树如图2-8-4所示;由图2-8-4可知,TP ↑TF 是文法GT 的一个句型; 直接短语有两个,即P 和TF ;句柄为P;第三章一、单项选择题1、词法分析所依据的是;a. 语义规则b. 构词规则c. 语法规则d. 等价变换规则2、词法分析器的输出结果是 ;a. 单词的种别编码b. 单词在符号表中的位置c. 单词的种别编码和自身值d. 单词自身值3、正规式M1和M2等价是指;a. M1和M2的状态数相等b. M1和M2的有向弧条数相等c. M1和M2所识别的语言集相等d. M1和M2状态数和有向弧条数相等4、状态转换图见图3-6-1接受的字集为;a. 以0开头的二进制数组成的集合b. 以0结尾的二进制数组成的集合c. 含奇数个0的二进制数组成的集合d. 含偶数个0的二进制数组成的集合5、词法分析器作为独立的阶段使整个编译程序结构更加简洁、明确,因此, ;a. 词法分析器应作为独立的一遍b. 词法分析器作为子程序较好c. 词法分析器分解为多个过程,由语法分析器选择使用d. 词法分析器并不作为一个独立的阶段二、多项选择题1、在词法分析中,能识别出;a. 基本字b. 四元式c. 运算符d. 逆波兰式e. 常数2、令∑={a,b},则∑上所有以b开头,后跟若干个ab的字的全体对应的正规式为;a. babb. bab+c.babd. ba+be. ba|b三、填空题1、确定有限自动机DFA是的一个特例;2、若二个正规式所表示的相同,则认为二者是等价的;3、一个字集是正规的,当且仅当它可由所;四、判断题1、一个有限状态自动机中,有且仅有一个唯一终态;2、设r和s分别是正规式,则有Lr|s=Lr|Ls;3、自动机M和M′的状态数不同,则二者必不等价;4、确定的自动机以及不确定的自动机都能正确地识别正规集;5、对任意一个右线性文法G,都存在一个NFA M,满足LG=LM;6、对任意一个右线性文法G,都存在一个DFA M,满足LG=LM;7、对任何正规表达式e,都存在一个NFA M,满足LG=Le;8、对任何正规表达式e,都存在一个DFA M,满足LG=Le;五、基本题1、设M={x,y}, {a,b}, f,x,{y}为一非确定的有限自动机,其中f定义如下:fx,a={x,y} fx,b={y}fy,a=φfy,b={x,y}试构造相应的确定有限自动机M′;2、对给定正规式bd|adb|ab+,构造其NFA M;单选解答1、b 2、c 3、c 4、d 5、b多选解答1、a、c、e 2、a、b、d填空解答1、NFA 2、正规集3、DFANFA所识别判断解答 1 、2、3、错4、5、6、7、8、正确基本1解答:对照自动机的定义M=S,Σ,f,S0,Z,由f的定义可知fx,a、fy,b均为多值函数,所以是一非图3-6-7 的NFA M将转换矩阵中的所有子集重新命名而形成表3-6-4所示的状态转换矩阵; 表3-6-4 状态转换矩阵即得到M ′={0,1,2}, {a,b}, f,0, {1,2},其状态转换图如图3-6-5所示;将图3-6-5的DFA M ′最小化;首先,将M ′的状态分成终态组{1,2}与非终态组{0};其次,考察{1,2};由于{1,2}a={1,2}b={2}⊂{1,2},所以不再将其划分了,也即整个划分只有两组{0},{1,2}:令状态1代表{1,2},即把原来到达23-6-6所示化简DFA M ′;2解答:首先用A +=AA NFA M,如图3-6-7所示;第四章1、构造下面文法的LL1分析表;D→ TLT→ int | realL→ id RR→, id R | ε2、下面文法GS是否为LL1文法说明理由;S →A B | P Q x A →x y B →b cP →d P | εQ →a Q | ε3、设有以下文法:GS:S→aAbDe|dA→BSD|eB→SAc| cD| εD→Se| ε1求出该文法的每一个非终结符U的FOLLOW集;2该文法是LL1文法吗3构造CS的LL1分析表;4、将文法GV改造成为LL1的;GV:V→N|NEE→V|V+EN→i5、已知文法:GA:A→aAa|ε1该文法是LL1文法吗为什么2若采用LL1方法进行语法分析,如何得到该文法的LL1分析表3若输入符号串“aaaa”,请给出语法分析过程;1解答:LL1分析表见表4-3-1分析虽然这个文法很简单,我们还是从求开始符号集合和后继符号集合开始;FIRSTD=FIRSTT={int, real} FOLLOWD=FOLLOWL={}FIRSTL={id} FOLLOWT={id}FIRSTR={,, ε} FOLLOWR={}有了上面每个非终结符的FIRST集合,填分析表时要计算一个产生式右部α的FIRSTα就不是件难事了;填表时唯一要小心的时,ε是产生式R→ε右部的一个开始符号,而在FOLLOWR中,所以R→ε填在输入符号的栏目中;2解答:该文法不是LL1文法,见下面分析中的说明;分析只有三个非终结符有两个选择;1、P的两个右部d P 和ε 的开始符号肯定不相交;2、Q的两个右部a Q 和ε 的开始符号肯定不相交;3、对S来说,由于x ∈ FIRSTA B,同时也有x ∈ FIRSTP Q x因为P和Q都可能为空;所以该文法不是LL1文法;3解答:1求文法的每一个非终结符U的FOLLOW集的过程如下:因为:①S是识别符号,且有A→BSD、B→SAc、D→Se,所以FOLLOWS应包含FIRSTD∪FIRSTAc ∪FIRSTe ∪{}={a,d}∪{a,d,c,e}∪{e}∪{}={a,c,d,e}②又因为A→BSD和D→ε,所以FOLLOW中还包含FOLLOW A;因为S→aAbDe和B→SAc,所以FOLLOW A=FIRSTbDe∪FIRSTc={b,c}综合①、②得FOLLOWS={a,d,c,e,}∪{a,b,c,d,e,}因为A→BSD,所以FOLLOWB=FIRSTSD={a,d}因为S→aAbDe | d、A→BSD| e和B→SAc | cD,所以FOLLOWD=FIRSTe∪FOLLOW A∪FOLLOWB={e}∪{b,c}∪{a,d}={a,b,c,d,e}2GS不是LL1文法;因为产生式B→SAc|cD| ε中FIRSTSAc∩FOLLOWB={a,d}≠Ø3构造GS的LL1分析表;按照LL1分析表的构造算法构造方法GS的LL1分析表如表4-3-2所示;表4-3-2 GS的LL1分析表G′V:V→NAA→ε|EE→VBB→ε|+EN→i求出文法G′V中每一个非终结符号的FIRST集:FIRSTV={i} FIRSTA={,ε}FIRSTE={i} FIRSTB={+,ε}FIRSTN={i}求出文法G′V中每一个非终结符号的FOLLOW集:FOLLOWV={}∪FIRSTB\{ε}∪FOLLOWE={,+,}FOLLOW A= FOLLOWV={+,,}FOLLOWE= FIRST\{ε}∪FOLLOWB= FIRST\{ε}∪FOLLOWE={}FOLLOWB= FOLLOWE={ }FOLLOWN= FIRSTA\{ε}∪FOLLOWV={,,+,}可以看到,对文法G′V的产生式A→ε|E,有FIRSTE∩FOLLOW A={}∩{+,,}= Ø对产生式B→ε|+E,有FIRST+E∩FOLLOWB={+}∩{}= Ø而文法的其他产生式都只有一个不为ε的右部,所以文法G′V是LL1文法;5解答:1因为产生式A→aAa|ε有空产生式右部,而FOLLOW A={}∪FIRSTa={a, }造成FIRSTA∩FOLLOWA={A, ε}∩{a, }≠Ø所以该文法不是LL1文法;2若采用LL1方法进行语法分析,必须修改该文法;因该文法产生偶数可以为0个a,所以得到文法G′A:A→aaA|ε此时对产生式A→aaA|ε, 有FOLLOW A={}∪FOLLOW A={},因而FIRSTA∩FOLLOWA={a, ε}∩{}=Ø所以文法G′A是LL1文法,按LL1分析表构造算法构造该文法的LL1分析表如表4-3-3所示;3若采用LL1方法进行语法分析,对符号串“aaaa”的分析过程如表4-3-4所示;第五章1.设有文法GS为:S→a|b|AA→SdA|S(1)完成下列算符优先关系表,见表5-7-1,并判断GS是否为算符优先文法;表5-7-1 算符优先关系表2给出句型SdSdS 的短语、简单短语、句柄、素短语和最左素短语; 3给出输入串adb 的分析过程; 解答:1先求文法GS 的FIRSTVT 集和LASTVT 集:由S →a|b|A 得:FIRSTVTS={a,b, ;由A →Sd …得:FIRSTVTA={d};又由A →S …得:FIRSTVTS ⊂ FIRSTVTA,即FIRSTVTA={d,a,b,};由S →a|b|A 得;LASTVTS={a,b,}}; 由A →…dA 得:LASTVTA={d},又由A →S 得:LASTVTS ⊂ LASTVTA,即LASTVTA={d,a,b,}; 构造优先关系表方法如下:① 对P →…ab …,或P →…aQb …,有a ≖b; ② 对P →…aR …,而b ∈FIRSTVTR,有a ⋖b; ③ 对P →…Rb …,而a ∈FIRSTVTR,有a ⋗b; 由此得到: ① 由S →A 得:≖;② 由S →A …得:⋖FIRSTVTA,即:⋖d,⋖a ,⋖b,⋖;由A →…dA 得:d ⋖FIRSTVTA, 即:d ⋖d,d ⋖a,d ⋖b,d ⋖;③ 由S →A 得,LASTVTA ⋗,即:d ⋗,a ⋗,b ⋗,⋗;由A →Sd …得:LASTVTS ⋗d,即:a ⋗d,b ⋗d,⋗d;此外,由S 得:≖;由⋖FIRSTVTS 得:⋖a,⋖b,⋖;脂由LASTVTS ⋗得:d ⋗,a ⋗,b ⋗,⋗;最后得到算符优先关系表,见表5-7-2;表5-7-2 算符优先关系表由表5-7-2可以看出,任何两个终结符之间至少只满足≖、⋖、⋗三种优先关系之一,故GS 为算符优先文法;2为求出句型SdSdS 的短语、简单短语、句柄,我们先画出该句型对应的语法树,如图5-7-3所示;由图5-7-3得到:短语:S,SdS,SdSdS,SdSdS简单短语即直接短语:S 句柄即最左直接短语:S素短语:SdS,它同时也是该句型的最左素短语;3输入串adb的分析过程见表5-7-4表5-7-4 输入串adb的分析过程第六章一、单项选择题1、若a为终结符,则A→α·aβ为项目a.归约b.移进c.接受d.待约2、若项目集I k含有A→α·,则在状态k时,仅当面临的输入符号a∈FOLLOWA时,才采取“A→α·”动作的一定是;文法0文法1文法1文法3、就文法的描述能力来说,有;a. SLR1⊂LR0b. LR1⊂LR0c. SLR1⊂LR1d.无二义文法⊂LR14、在LR0的ACTION子表中,如果某一行中存在标记“r j”的栏,则;a.该行必定填满r jb.该行未填满r jc.其他行也有r j子表中也有r j5、一个指明了在分析过程中的某时刻所能看到产生式多大一部分;a.活前缀b.前缀c.项目d.项目集二、多项选择题1、一个LR分析器包括;a.一个总控程序b.一个项目集c.一个活前缀d.一张分析表e.一个分析栈2、LR分析器核心部分是一张分析表,该表包括等子表;1分析 b.优先关系3、每一项ACTIONS,a所规定的动作包括;a.移进b.比较c.接受d.归约e.报错4、对LR分析表的构造,有可能存在动作冲突;a.移进b.归约c.移进/归约d.移进/移进e.归约/归约5、就文法的描述能力来说,有;a. SLR1⊂LR1b. LR1⊂SLR1c. LR0⊂LR1d. LR1⊂无二义文法e. SLR1⊂无二义文法6、对LR分析器来说,存在等分析表的构造方法;0 1 0 17、自上而下的语法分析方法有;a.算符优先分析法1分析法1分析法0分析法1分析法三、填空题1、对于一个文法,如果能够构造;使得它的均是唯一确定的,则称该文法为LR文法;2、字的前缀是指该字的;3、活前缀是指的一个前缀,这种前缀不含之后的任何符号;4、在LR分析过程中,只要的已扫描部分保持可归约成一个,则扫描过的部分正确;5、将识别的NFA确定化,使其成为以为状态的DFA,这个DFA就是建立的基础;6、A→α·称为项目;对文法开始符S′→α·为项目;若a为终结符,则称A→α·aβ为项目;若B为非终结符,则称A→α·aβ为项目;7、LR0分析法的名字中“L”表示 ,“R”表示 ,“0”表示 ;四、综合题1、对于文法GS:S→AS|bA→SA|a1列出所有LR0项目2列出构成文法LR0项目集规范族;单项解答:1、A→α·称为归约项目,对文法开始符S′的归约项目,如S′→α·称为接受项目,A→α·aβa为终结符称为移进项目;在此选b.2、当用产生式A→α归约时,LR0无论面临什么输入符号都进行归约;SLR1则仅当面临的输入符号a∈FOLLOWA时进行归约;LR1则当在把α归约为A的规范句型的前缀βAa前提下,当α后跟终结符a时,才进行归约;因此选d;3、由于LR0⊂SLR1⊂LR1⊂无二义文法,故选c;4、选a;5、选c;多选解答:1、一个LR分析器包括一个总控程序和一张分析表,选a、d;2、选c、e;3、选a、c、d、e;4、在LR分析表的构造中有可能存在“移进”/“归约”和“归约”/“归约”冲突;故选c、e;5、选a、b、c、d、e;6、选a、b、c、e;7、选a、c、d、e;填空解答:1、一张分析表每个入口2、任意首部3、规范句型句柄4、输入串活前缀5、活前缀项目集合LR分析算法6、归约接受移进待约7、自左至右分析采用最右推导的逆过程即最左归约向右查看0个字符综合解答:首先将文法G拓广为GS′:S′→SS→AS|bA→SA|a1文法GS′的LR0项目是:1、S′→·S 5、S→AS·9、A→S·A2、S′→S·6、S→·b 10、A→SA·3、S→·AS 7、S→b·11、A→·a4、S→A·S 8、A→·SA 12、A→a·2、列出构成文法LR0项目集规范族;用ε-CLOSURE闭包办法构造文法G′的LR0项目集规范族如下:I0:1、S′→·S I3: 9、A→S·A I6:12、A→a·3、S→·AS 8、A→·SA I7:7、S→b·8、A→·SA 3、S→·AS11、A→·a 6、S→·b6、S→·b 11、A→·aI 1:2、S′→S · I 4:10、A →SA · 9、A →S ·A 4、S →A ·S 8、A →·SA 3、S →·AS 11、A →·a 6、S →·b 3、S →·AS 8、A →·SA 6、S →·b 11、A →·a I 2:4、S →A ·S I 5: 5、S →AS · 3、S →·AS 9、A →S ·A 6、S →·b 8、A →·SA 8、A →·SA 11、A →·a 11、A →·a 3、S →·AS 6、S →·b注意:I 1中的S′→S ·和A →·SA 是由状态I 0中的1和3读入一个S 字符后得到的下一个项目;,而I 4中的A →SA 和A →A ·S 则是由I 3中的9和3读入一个A 字符后得到的下一个项目;I 5中的S →AS ·和A →S ·A 则是由I 4中的4和8读入一个S 字符后得到的下一个项目;状态全体构成了文法G′的LR0规范族;第七章一、单项选择题1、中间代码生成所依据的是 ; a.语法规则 b.词法规则 c.语义规则 d.等价变换规则2、四元式之间的联系是通过 实现的; a.指示器 b.临时变量 c.符号表 d.程序变量3、后缀式ab+cd+/可用表达式 来表示; +b/c+d b.a+b/c+d +b/c+d +b+c/d4、表达式┓A ∨B ∧C ∨D 的逆波兰表示为 ; a. ┓AB ∨∧CD ∨ b. A ┓B ∨CD ∨∧c. AB ∨┓CD ∨∧d. A ┓B ∨∧CD ∨5所对应的表达式为 ; +B+C+D +B+C+D c.A+B+C+D d.A+B+C+D 6、四元式表示法的优点为 ;a.不便于优化处理,但便于表的更动b.不便于优化处理,但节省存储空间c.便于优化处理,也便于表的更动d.便于表的更动,也节省存储空间 7、终结符具有 属性; a.传递 b.继承 c.抽象 d.综合二、多顶选择题1、中间代码主要有 ; a .四元式 b .二元式 c .三元式 d .后缀式 e .间接三元式2、下面中间代码形式中,能正确表示算术表达式a+b+c 的有 ;a .ab+c+b .abc++e .a+b+c3、在下面的 语法制导翻译中,采用拉链-回填技术; a .赋值语句 b .goto 语句 c .条件语句 d .循环语句4、下列 中间代码形式有益于优化处理; a .三元式 b .四元式 c .间接三元式 d .逆波兰表示法e .树形表示法5、在编译程序中安排中间代码生成的目的是 ; a .便于进行存储空间的组织 b .利于目标代码的优化c .利于编译程序的移植d .利于目标代码的移植e .利于提高目标代码的质量 6、下面的中间代码形式中, 能正确表示算术表达式a .ab+cb .abc+c .a+bc7、三地址代码语句具体实现通常有 表示方法 a .逆波兰表示 b .三元式 c .间接三元式 d .树形表示 e .四元式 三、填空题1、中间代码有 等形式,生成中间代码主要是为了使 ;2、语法制导翻译既可以用来产生 代码,也可以用来产生 指令,甚至可用来对输入串进行 ;3、当源程序中的标号出现“先引用后定义”时,中间代码的转移地址须持 时才能确定,因而要进行 ;4、文法符号的属性有两种,一种称为 ,另一种称为 ;5、后缀式abc-/所代表的表达式是 ,表达式a-bc 可用后缀式 表示;6、用一张 辅以 的办法来表示中间代码,这种表示法称为间接三元式; 四、综合题1、给出下列表达式的逆波兰表示后缀式: ① a-b+c② A ∨B ∧C ∨┑D ∧E2、写出算术表达式:A+BC-D+E/C-D ↑N 的①四元式序列;②三元式序列;③间接三元式序列 单选解答 1、选c;2、四元式之间的联系是通过临时变量实现的,故选b;3、选b;4、选b;5、选d;6、四元式表示法的优点与间接三元式相同,故选c;7、选d; 多选解答1、选a 、c 、d 、e;2、b 、d 的中间代码不能正确表示a+b+c,而e 不是中间代码:故选a 、c;3、凡涉及到跳转的语句都需要采用拉链——回填技术,故选 b 、c 、d;4、选b 、c;5、选b 、d;6、选b 、e;7、选b 、c 、e;填空解答1、逆波兰记号、树形表示、三元式、四元式 目标代码的优化容易实现2、中间 目标 解释执行3、标号定义 回填4、继承属性 综合属性5、a/b-c ab-c6、间接码表 三元式表 综合解答1、① abc+;② AB ∨CD ┑E ∧∨∧2、①表达式的四元式序列:②表达式的三元式序列③间接三元式序列1-,C,D,T11-,C,D ⑴1-,C,D2,B,T1,T22,B,1 ⑵2,B,13+,A,T2,T33+,A,2 ⑶3+,A,24-,C,D,T44-,C,D ⑴⑷↑,1,N5↑,T4,N,T55↑,4,N ⑷⑸/,E,4⑹/,E,T5,T6 ⑹/,E,5 ⑸⑹+,3,5⑺+,T3,T6,T7 ⑺+,3,6⑹第八章一、单项选择题1、编译程序使用区别标识符的作用域;a. 说明标识符的过程或函数名b. 说明标识符的过程或函数的静态层次c. 说明标识符的过程或函数的动态层次d. 标识符的行号2、在目标代码生成阶段,符号表用于;a. 目标代码生成b. 语义检查c. 语法检查d. 地址分配3、过程信息表不包含;a. 过程入口地址b. 过程的静态层次c. 过程名d. 过程参数信息4、下列关于标识符和名字叙述中,正确的是;a. 标识符有一定的含义b. 名字是一个没有意义的字符序列c. 名字有确切的属性d. a~c都不正确二、多项选择题1、符号表的每一项均包含;a. 名字栏b. 类型栏c. 信息栏d. 值栏e. a~d均包含2、对编译程序所用到的符号表,涉及的操作有;a. 填写或更新信息栏内容b. 填入新名c.给定名字,访问它的有关信息d. 杂凑技术e.线性表和排序二叉树3、源程序中的错误一般有;a. 词法错误b. 语法错误c. 语义错误d. 编译错误e. 违反环境限制的错误三、填空题1、符号表中名字栏内容有两种填写方式,它们是填写和填写;2、词法分析阶段的错误主要是,可通过的办法纠正错误;3、符号表中名字的有关信息在和过程中陆续填入;4、在目标代码生成阶段,符号表是的依据;四、问答题:1、在编译过程中为什么要建立符号表单选解答:1、b 2、d 3、b 4、c多选解答:1、a 、c 2、a、b、c 3、a、b、c、e填空解答:1、标识符标识符地址及长度2、拼写错误最小距离匹配3、词法分析语法语义分析4、地址分配问答题解答:在编译过程中始终要涉及到对一些语法符号的处理,这就需要用到语法符号的相关属性;为了在需要时能找到这些语法成分及其相关属性,就必须使用一些表格来保存这些语法成分及其属性,这些。

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

2020/4/6
2
CH.3.练习题7(P64.)
7. (1) 1(0|1)*101 构造DFA。 解1: 正规式对应的NFA:
1
X 1 1ε 3 ε 2 1 4 0 5 1 Y
0
2020/4/6
3
(1) 正规式 1(0|1)*101 DFA:
0
3,2
0
1
x
1,3,2
1
1
3,4,2
1
0
0 1
3,5,2
0
01
0
1
0
1
2
2020/4/6
10
CH.3.练习题14(P64.)
(1) 正规式: (10|0)*
(2) NFA:
0
X ε 1εY
1
0
2
DFA: 0
0
1 1
2020/4/6
0
1
0
2
构造一个DFA,它接受 S= {0,1}上所有满足如下条件 的字符串:每个1都有0直 接跟在右边。
DFA:(最简)
(2) 1(1010*|1 (010)*1)*0
1
4
05
0*
1
6
X 1 1ε 2 ε 3 0 Y
1
7 (010)* 8
1
4 0 5 1 6ε
0
9
1
ε
X 1 1ε 2 ε 3 0 Y
1
7
ε
10 ε
010
1
8
2020/4/6
8
4 0 5 1 6ε 9 0
1
ε
X 1 1ε 2 ε 3 0 Y
1
7
ε
10 ε
证明: 因为存在句子 iiiei, 它对应两棵不同的语法树,如 右图: 所以该文法是二义文法。
说明:按定义只要能给出一 个反例即可,iiiei不是唯一 的反例。
2020/4/6
S iS
i S eS ii
S
i S eS i Si
i
16
程序设计语言
Chapter 5.自下而上 语法分析
CH.5.练习题1(P133.)
证明2: ∵可构造出E+T*F的语法树,如右
图所示, ∴E+T*F是G1的一个句型。
语法树
证明3: (也可用归约来证明) E
(概念熟悉后,短语、直接短语和句柄可直接列出
1.令文法G1为:E→E+T|T T→T*F|F F→(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短 语、直接短语和句柄。
证明1: ∵存在从开始符号E出发到E+T*F
的推导: E E+T E+T*F
语法树
∴E+T*F是G1的一个句型。
E
短语: E+T*F是句型相对于非终结符E的短
2020/4/6
1
6
7. 构造下列正规式相应的NFA。(P64.)
(2) 1(1010*|1 (010)*1)*0
1010*
X 1 1ε 2 ε 3 0 Y
1 (010)*1
4 051 6
1
0*
X 1 1ε 2 ε 3 0 Y
1
7 (010)* 8 1
2020/4/6
7
7. 构造下列正规式相应的NFA。(P64.)
最右推导
E T T*F T*(E) T*(E+T) T*(E+F) T*(E+i) T*(T+i) T*(F+i) T*(i+i) F*(i+i) i*(i+i)
14
CH.2.练习题8(P36.)
8. 令文法为
(2) 给出 i+i+i、i+i*i和i-i-i的语法树。
E → T|E+T|E-T
1
0
3,Y,4,2
(1) 正规式 1(0|1)*101 DFA:
0
2 04
0
0 11
10 1 0
13 15
1
CH.3.练习题7(P64.)
7. 构造下列正规式相应的DFA。 (1) 1(0|1)*101 解2: 正规式对应的NFA:
01
1
1 12
0
031 4
0
0 11
DFA: 03
1
0 10
2 14
8. 令文法为
(1) 给出 i+i*i、i*(i+i)的最左推导
E → T|E+T|E-T 和最右推导。
T → F|T*F|T/F
F → (E)|i
解:此处仅以 i*(iF*F i*F i*(E) i*(E+T) i*(T+T) i*(F+T) i*(i+T) i*(i+F ) i*(i+i)
(2) 给出句子0127、34和568的最左和最右推导。 注意:1)步骤,和 + 的区别;2) 不能写为→ 解:0127的最左推导:NNDNDDNDDDDDDD 0DDD01DD012D0127 0127的最右推导:NNDN7ND7N27ND27 N127D1270127
13
CH.2.练习题8(P36.)
语; T*F是句型相对于非终结符T的短语。 E + T
直接短语: T*F是句型相对于规则T→T*F的 直接短语
T*F
句柄: T*F
2020/4/6
18
CH.5.练习题1(P133.)
1.令文法G1为:E→E+T|T T→T*F|F F→(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短 语、直接短语和句柄。
010
1
8
7. (2) 1(1010*|1 (010)*1)*0的NFA。
4 0 5 1 6ε 9 0
1
ε
X 1 1ε 2 ε 3 0 Y
1
7 ε 10
ε 0
1
8
0 12 1 11
CH.3.练习题14(P64.)
(1) 正规式: (10|0)*
(2) NFA:
0
X ε 1εY
1
0
2
确定化:
DFA:
程序设计语言
Chapter 3.词法分析
CH.3.练习题8(P64.)
8. 给出下面的正规表达式。
(1) 以01结尾的二进制数串; 正规式 (0|1)*01
(2) 能被5整除的十进制整数; 允许任意0开头: (0|1|2|3|4|5|6|7|8|9)*(0|5) 不允许0开头(0本身除外):
(0|5)|(1|2|3|…|9)(0|1|2|3|…|9)*(0|5)
0 1
0 0
1
11
程序设计语言
Chapter 2.高级语言及 其语法描述
CH.2.练习题6(P36.)
6.令文法G6为: N → D|ND D → 0|1|2|3|4|5|6|7|8|9
(1) G6的语言L(G6)是什么? 注意:集合的写法不正确 解:L(G6)={0,1,2,3,4,5,6,7,8,9}+ ={09数字构成的所有数字串,可以0开头}
T → F|T*F|T/F F → (E)|i
注意:树枝和符号均不可随意增减!
i-i-i 的语法树 E
E -T
E-T F
T
Fi
F
i
i
i+i+i 的语法树 E
E+T
E +T F
T
Fi
F
i
i
i+i*i 的语法树
E E +T T T* F FF i ii
15
CH.2.练习题9(P36.)
9. 证明下面的文法是二义的: S → iSeS|iS|i
相关文档
最新文档