最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

编译原理模拟题

来源:动视网 责编:小OO 时间:2025-09-27 08:24:32
文档

编译原理模拟题

现代远程教育《编译原理》课程学习指导书作者:柴玉梅《编译原理》课程指导书第一章编译概述(一)本章学习目标1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;2.熟练掌握编译程序总框;3.了解编译程序的生成方法和编译技术在软件开发中的应用。(二)本章重点、要点编译程序的概念、编译程序各阶段的划分及任务。(三)本章练习题和思考题1.1编译程序由哪几部分构成?简述各部分功能。1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?1.3.编译程序的生成方法有哪些?1.4画出编
推荐度:
导读现代远程教育《编译原理》课程学习指导书作者:柴玉梅《编译原理》课程指导书第一章编译概述(一)本章学习目标1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;2.熟练掌握编译程序总框;3.了解编译程序的生成方法和编译技术在软件开发中的应用。(二)本章重点、要点编译程序的概念、编译程序各阶段的划分及任务。(三)本章练习题和思考题1.1编译程序由哪几部分构成?简述各部分功能。1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?1.3.编译程序的生成方法有哪些?1.4画出编
现代远程教育

《编译原理》

作者:柴玉梅

《编译原理》课程指导书

第一章编译概述

(一)本章学习目标

1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;

2. 熟练掌握编译程序总框;

3.了解编译程序的生成方法和编译技术在软件开发中的应用。

(二)本章重点、要点

编译程序的概念、编译程序各阶段的划分及任务。

(三)本章练习题和思考题

1.1编译程序由哪几部分构成?简述各部分功能。

1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?

1.3.编译程序的生成方法有哪些?

1.4画出编译程序总框。

1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?

第二章 文法和语言的基本知识

(一)本章学习目标

1.正确理解字母表和符号串的基本概念及其运算

2.熟练掌握上下文无关文法的定义;

3.熟练掌握形式语言的形式化定义方法;

4.直接推导、推导、最左(右)推导、短语、直接短语、句型、句柄、句子及语言等重要概念;

5.能为给定语言构造文法;

6.能利用推导与语法分析树判断文法的二义性,并进行修改;

7.了解文法和语言的分类。

(二)本章重点、要点

1.上下文无关文法的定义;

2.直接推导、推导、句型、短语、直接短语、句柄、句子等重要概念;

3.为给定语言构造文法;

4.二义文法的判定。

(三)本章练习题和思考题

2.1写文法G1,G2, 分别产生语言:

(1) L(G1)={ambn|m>0,n.≥0}。

(2)L(G2)={bmabm|m≥0}。

2.2设文法G为:E→(E)|abc  

(1) 写出文法G所定义的语言L(G)。

(2) 判断abc、(((abc))是否为L(G)的句子,说明理由。

(3) 画出句型((E))的语法树,写出其短语、直接短语和句柄。

2.3设有文法G[A]:

   Aa|b|e|A0|A1

(1)试问分别由哪些符号组成?

(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?

(3)写出文法G1[A]产生的语言

第三章  词法分析与有穷自动机

(一)本章学习目标

1.理解词法分析器的功能及单词符号及输出单词的形式;

2.熟练掌握正规式与有穷自动机的定义形式;

3.熟练掌握有NFA到DFA的转换及DFA的确定化;

3.熟练掌握正规式与有穷自动机的等价性及其相互转换方法;

4.熟练掌握正规文法与有穷自动机的定义形式;

5.熟练掌握正规文法与有穷自动机的等价性及其相互转换方法;

6.能依据状态转换图编写词法分析程序。

(二)本章重点、要点

1.词法分析器的功能

2.正规式、正规文法与有穷自动机的定义形式;

3.NFA到DFA的转换及DFA的确定化;

4.正规式、正规文法与有穷自动机的等价性及其相互转换方法;

5.词法分析程序的编写方法

1.

(三)本章练习题和思考题

3.1设正则表达式ba*,

(1) 所定义的正规集(语言)L 是什么?

(2) 构造识别L的NFA。

(3) 构造定义L的正则文法。

3.2设正则表达式bba*aa,

(1) 所定义的正规集(语言)是什么?

(2) 构造识别L的最小DFA。

(3) 为其构造正则文法。

3.3有文法G(S):

SaAc

AbA|aA|a

(1)给出文法G(S)所对应的正规式。

(2)构造G(S)对应的NFA

(3)将 G(S)对应的NFA确定化

(4)将 (3)中的DFA最小化

第四章   语法分析

(一)本章学习目标

1.理解语法分析程序的功能;

2.掌握自上而下语法分析原理;

3.熟练掌握确定的自上而下语法分析的前提条件、LL(1)文法的判定及变换;

4.熟练掌握LL(1)分析方法

5.掌握自下而上语法分析原理;

6.熟练掌握算符优先分析方法;

7.熟练掌握算符优先文法的判定。

8.了解优先函数的构造

(二)本章重点、要点

1.自上而下和自下而上语法分析的基本原理;

2.LL(1)分析表的构造及其分析算法

3.算符优先分析表的构造及其分析算法

(三)本章练习题和思考题

4.1考虑下面文法 G1:

S→a|∧|(T)

T→T,S|S

(1)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。

(2)经过改写的文法是否是LL(1)的?给出它的预测分析表。

4.2下面文法那些是LL(1)文法?

(1)S →Abc   A →a|ε   B→b|ε

(2)S →Ab   A →a|B|ε   B→b|ε

(3)S →ABBA    A →a |ε   B→b|ε

(4) S →aSe|B    B →bBe |C   C→cCe|d

4.3简述算符优先分析过程。

4.4设有表格结构文法G[S]:

(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。

(2)计算文法G[S]的FIRSTVT集和LASTVT集。

(3)构造G[S]的优先关系表,并判断G[S]是否为算符优先文法。

样卷

一.(15分)编译程序由哪几部分构成?简述各部分功能。 

二.(15分)写出产生语言L(G1) 的文法G1:

L(G1)={am bm c n|m,n≥0}。

三.(25分).设语言L是字母表{0,1}上以0开头、以1结尾的所有序列的集合。

 (1)写出其正则表达式。

 (2)构造识别L的NFA。

 (3)构造识别L的DFA。

 (4)给出其最小DFA。  

四.(20分)设有文法G[S]:

S→A   

A→B|AiB

S→C|B+C       

T→A*|(

(1)试画出句型C+Ci(的语法树,并给出该句型的短语、直接短语、句柄和素短语。

(2)判断其是否为算符优先文法。

五.(25分)设有文法G[S]:    

S→a|b|(T)       

T→T,S|S

(1)计算每个非终结符的 FIRSTVT 和 LASTVT。

(2)构造算符优先关系分析表。 

(3)文法G[S] 是算符优先文法吗?如果是,给出优先函数,并给出串 (a,(a,a)) 的算符优先分析过程。

附:各章练习题答案

第一章

1.1编译程序由哪几部分构成?简述各部分功能。

参:

五个部分

词法分析:接收输入源程序串,输出单词序列。

语法分析:接收单词序列,识别出各种语法成分,并做语法检查。

语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。

优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。

目标代码生成:将中间代码转换成等价的目标代码。

1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?

参:

词法分析:接收输入源程序串,输出单词序列。

语法分析:接收单词序列,识别出各种语法成分,并做语法检查。

语义分析与中间代码生成:分析每个语法结构的静态语义,生成某种形式的中间代码。

优化:在不改变程序执行结果的前提下,提高中间代码或目标代码的质量。

目标代码生成:将中间代码转换成等价的目标代码。

1.3编译程序的生成方法有哪些?

参:

(1)手工编写编译程序

(2)自编译

(3)自动生成编译程序

(4)移植

1.4画出编译程序总框。

参见教材第4页图1.5。

1.5描述词法规则、语法规则、语义规则各使用哪些描述工具?

参:

描述词法规则工具:DFA、NFA、正规式、正规文法等。

描述语法规则使用工具:上下文无关文法。

描述语义规则各使用工具:属性文法、操作语义、公理语义、指称语义等。

第二章

2.1写文法G1,G2, 分别产生语言:

(1)L(G1)={ambn|m>0,n.≥0}

参:

G1:SAB

Aa|Aa

B|Bb 

(2) L(G2)={bmabm|m≥0}

参:

G2:Sa|bSb

2.2设文法G为:E→(E)|abc  

(1)写出文法G所定义的语言L(G)。

参:

L(G)={(ma)m|m≥0}

(3)判断abc、(((abc))是否为L(G)的句子,说明理由。

参:

abc是L(G)的句子。

因为存在推导:Eabc

(((abc))不是L(G)的句子

因为不存在任何产生(((abc)串的推导。

(3)画出句型((E))的语法树,写出其短语、直接短语和句柄。

全部短语为:(E) 、((E))。

直接短语为:(E)。

句柄为(E)。

2.3设有文法G[A]:

   Aa|b|e|A0|A1

(1)试问分别由哪些符号组成?

参:

VT={a,b,e,0,1}

VN={A}

(2)下列符号串a,a0,a0e01,0a,e111,e0011是否为该文法的句子?

参:

a,a0, e111,e0011是该文法的句子。

a0e01,0a不是该文法的句子。

(3)写出文法G1[A]产生的语言

参:

L(G1)是以a,b,e开头后跟若干个0或1的串。

2.4写出产生语言L(G1) 的文法G1:

L(G1)={am bm c n|m,n≥0}。

参:G1:  S AB

A  |aAb

B  |Bc

第三章

3.1设正则表达式ba*,

(1) 所定义的正规集(语言)L 是什么?

参:

L={bam|m≥0}。

(2) 构造识别L的NFA。

参:

(3) 构造定义L的正则文法。

参:

A b|bB

B a|aB

3.2设正则表达式bba*aa,

(1)所定义的正规集(语言)是什么?

参:

L={bbam aa |m≥0}。

(2)构造识别L的最小DFA。

参:

(3)为其构造正则文法。

参:

A bB

B bC

C aC|aD

D a

3.3有文法G(S):

SaAc

AbA|aA|a

(1)给出文法G(S)所对应的正规式。

参:

a(a|b)*ac

(2)构造G(S)对应的NFA

参:

(3)将 G(S)对应的NFA确定化

参:

(4)将 (3)中的DFA最小化

参:

第四章

4.1考虑下面文法 G1:

S→a|∧|(T)

T→T,S|S

(3)消去G1的左递归,然后对每个非终结符写出不带回溯的递归子程序。

(4)经过改写的文法是否是LL(1)的?给出它的预测分析表。

参:

(1)消去G1的左递归:S→a|∧|(T)

 T→ST’

T’ →,ST’|ε

递归子程序:

PROCEDURE S;

IF sym=’a’ THEN ADVANCE

ELSE IF sym=’ ∧’ THEN ADVANCE

ELSE IF sym=’ (’ THEN

      BEGIN

        ADVANCE

        T;

        IF sym=’ )’ THEN ADVANCE

        ELSE  ERROR

      END

ELSE  ERROR;

PROCEDURE T;

BEGIN

S;T’

END;

PROCEDURE S;

IF sym=’ ,’ THEN

      BEGIN

        ADVANCE

        S;T’

      END;

(2)是LL(1)文法。

FIRST(S)={ a,∧,( } a,∧,( }  FIRST(T’)={ ,,ε }

FOLLOW(S)={ #, , , ε, )  } ) }  FOLLOW(T’)={ ) }

预测分析表如下:

a, (#
SS→a

S→∧

S→ (T)

TT→ST’

T→ST’

T→ST’

T’T’ →,ST’

T’ →ε

4.2下面文法那些是LL(1)文法?

 (1)S →Abc   A →a|ε   B→b|ε

参:      

      没有左递归且FIRST 候选集不冲突且

 FIRST(A)∩FOLLOW(A)={ a, ε} ∩  { b }=Ф

 FIRST(B)∩FOLLOW(B)={ b, ε} ∩  { c }=Ф

所以该文法为LL(1)文法

(2)S →Ab   A →a|B|ε   B→b|ε

参:

    FIRST(B)={ b, ε} ∩ ε) ={ε} ≠Ф

      所以该文法不是LL(1)文法

(3)S →ABBA    A →a |ε   B→b|ε

参:

   没有左递归且FIRST 候选集不冲突

  FIRST(A)∩FOLLOW(A)={ a, ε} ∩{b,#} =Ф

  FIRST(B)∩FOLLOW(B)={ b, ε}∩{b,a,#} ≠Ф

所以该文法不是LL(1)文法

(4) S →aSe|B    B →bBe |C   C→cCe|d

参:

  没有左递归且FIRST 候选集不冲突

  所以该文法为LL(1)文法

4.3简述算符优先分析过程。

参:

算符优先分析法是一种简单、直观、广为使用的自下而上语法分析方法,它是依据算术表达式的四则运算过程而设计的一种方法,也适用于对一般的高级语言程序的分析。算符优先分析法的基本思想是,首先确定运算符(确切地说是终结符)之间的优先关系和结合性质,然后借助这种关系,比较相邻运算符之间的优先级来确定句型的可归约串,并进行归约。

值得注意的是,算符优先分析过程虽然是自下而上归约过程,但它的可归约串未必是句柄,而是素短语。也就是说,算符优先分析过程不是一种规范归约。

4.4设有表格结构文法G[S]:

(1)给出(a,(a,a))的最左、最右推导,并画出相应的语法树。

参:

最左推导:S (T) (T,S) (S,S) (a,S) (a,(T,S)) (a,(S,S)) (a,(a,S)) (a,(a,a))

最右推导:S (T) (T,S) (T,(T,S) (T,(T,a) (T,(S,a)) (T,(a,a)) (S,(a,a)) (a,(a,a))

语法树:

(2)计算文法G[S]的FIRSTVT集和LASTVT集。

参:

FIRSTVT(S)={a, ^,  }

FIRSTVT(T)= {a, ^,  ,,}

LASTVT(S)= {a, ^, }

LASTVT(T)= {a, ^, ,,}              

(3)构造G[S]的优先关系表,并判断G[S]是否为算符优先文法。

参:

a^,()#
a>>>
^>>>
,<<><>
(<<<<=
)>>>
#<<<=
因为G[S]的优先关系表无多重入口,所以G[S]是算符优先文法。

文档

编译原理模拟题

现代远程教育《编译原理》课程学习指导书作者:柴玉梅《编译原理》课程指导书第一章编译概述(一)本章学习目标1.正确理解什么是编译程序、编译程序工作的基本过程及其各阶段的基本任务;2.熟练掌握编译程序总框;3.了解编译程序的生成方法和编译技术在软件开发中的应用。(二)本章重点、要点编译程序的概念、编译程序各阶段的划分及任务。(三)本章练习题和思考题1.1编译程序由哪几部分构成?简述各部分功能。1.2简述编译程序工作的基本过程,其各阶段的基本任务是什么?1.3.编译程序的生成方法有哪些?1.4画出编
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top