编译原理习题汇总.docx

上传人:b****8 文档编号:9979313 上传时间:2023-02-07 格式:DOCX 页数:17 大小:132.41KB
下载 相关 举报
编译原理习题汇总.docx_第1页
第1页 / 共17页
编译原理习题汇总.docx_第2页
第2页 / 共17页
编译原理习题汇总.docx_第3页
第3页 / 共17页
编译原理习题汇总.docx_第4页
第4页 / 共17页
编译原理习题汇总.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

编译原理习题汇总.docx

《编译原理习题汇总.docx》由会员分享,可在线阅读,更多相关《编译原理习题汇总.docx(17页珍藏版)》请在冰豆网上搜索。

编译原理习题汇总.docx

编译原理习题汇总

第1、2章

一填空

1.若源程序是用高级语言编写的,目标程序是__________语言的程序,则相应的翻译程序称为编译程序。

2.(华中科大)翻译程序是这样一种程序,它能够将_____________转换成与其等价的________________。

3.对编译程序而言,输入数据是____________,输出结果是_________________。

4.(华东计算所)汇编程序是将_________翻译成_________;编译程序是将____翻译成_________

a汇编语言程序

b机器语言程序

c高级语言程序

da或b

ea或c

fb或c

5.(国防科大)编译过程中,语法分析器的任务是_______

(1)分析单词是怎样构成的

(2)分析单词串是如何构成语句和说明的的

(3)分析语句和说明是如何构成程序的

(4)分析程序的结构

A

(2)(3)B

(2)(3)(4)C

(1)

(2)(3)D

(1)

(2)(3)(4)

6.(国防科大)文法G产生的__________的全体是该文法描述的语言。

7.(中国科大)乔姆斯基定义的4种形式语言文法分别为__________文法(又称__________文法)、__________文法(又称__________文法)、__________文法(又称__________文法)、__________文法(又称__________文法)。

8.上下文无关文法比正规文法具有更强的描述能力。

判断正误?

9.程序语言由——和———定义。

10.文法G所产生的句子的全体是(),记为()。

11.一个上下文无关文法包含的4个组成部分是()。

第4章

1.基本思想:

从识别符号出发,不断建立直接推导,试图构造一个推导序列,最终由它推导出与输入符号串相同的符号串。

从语法树的角度讲,自上而下分析过程是以开始符号为根节点,试图向下构造一颗语法树,使其末端节点符号串正好与输入符号串相同。

2.LL

(1)文法

P73

(1)文法不含左递归;

(2)文法中每一个非终结符A的各个产生式的候选首符集两两不相交

  即:

若Aα1|α2|…|αn

则first(αi)∩first(αj)=Φ(i≠j)

(3)对文法中每个非终结符A,若它存在某个候选首符集包含ℇ,则first(A)∩follow(A)=Φ

重点:

左递归的消除

计算FIRST和FOLLOW集合

3.LL

(1)预测分析表的构造

1.自上而下分析会遇到的主要问题有——左递归——和——回溯——。

2.语法分析常用的方法是__自上而下__和__自下而上__

第5章自下而上分析

1.基本思想:

从待输入的符号串开始,利用文法的规则步步向上规约,试图规约到文法的开始符号。

从语法树的角度看,自下而上分析的过程是以输入符号串作为末端节点符号串,向着根节点的方向往上构造语法树,使识别符号正好是该语法树的根节点。

如果最终根节点是识别符号,则输入符号串被识别出是相应语言的一个句子;否则不是。

2.自下而上分析过程:

边输入单词符号,边归约。

核心问题:

识别可归约串

“算符优先分析”中:

“最左素短语”——“可归约串”

“规范归约分析”中:

“句柄”——“可归约串”

3。

算符优先分析

不是一种规范归约法,是一种自下而上的语法分析法,关键在于规定算符(即终结符)之间的优先顺序和结合性质,借助这种优先关系寻找“可归约串”进行归约。

特点:

有利于表达式分析,宜于手工实现。

4.算符优先文法:

如果一个算符文法G中的任何终结符对(a,b)至多只满足下述三关系之一:

a≖b,a⋖b,a⋗b

则称G是一个算符优先文法。

5.FIRSTVT和LASTVT集合

构造集合FIRSTVT(P):

按定义,我们用以下两条规则构造集合FIRSTVT(P):

(1)若有产生式Pa…或PQa…,则a∈FIRSTVT(P);

(2)若a∈FIRSTVT(Q),且有产生式PQ…,则a∈FIRSTVT(P)。

构造集合LASTVT(P):

按定义,我们用以下两条规则构造集合LASTVT(P):

(1)若有产生式P…a或P…aQ,则a∈LASTVT(P);

(2)若a∈LASTVT(Q),且有产生式P…Q,则a∈LASTVT(P)。

算符优先分析举例:

i+i*i↑iP90

算符优先分析法每次都是对——最左素短语——进行规约

LR(K)文法————

A都是无二义性的B都是二义性的C一部分是二义性的

第5章附加

1.文法:

E→E+T|T

T→T*F|F

F→(E)|i

证明E+T*F是它的一个句型,并指出该句型所有短语、直接短语和句柄。

解:

E+T*F是它的一个句型,因为存在下面语法树:

短语:

T*F,E+T*F

直接短语:

T*F

句柄:

T*F

2.文法:

S→a|^|(T)

T→T,S|S

(1)给出(a,(a,a))和(((a,a),^,(a)),a)的最左和最右推导;

(2)指出(((a,a),^,(a)),a)的规范归约以及每一步的句柄,根据这个规范归约,给出“移进-归约”过程,并给出它的语法树自下而上构造过程。

解:

(1)略

10)((T,(S)),a)

11)((T,(T)),a)

12)((T,S),a)

13)((T),a)

14)(S,a)

15)(T,a)

16)(T,S)

17)(T)

18)S

1)(((a,a),^,(a)),a)

2)(((S,a),^,(a)),a)

3)(((T,a),^,(a)),a)

4)(((T,S),^,(a)),a)

5)(((T),^,(a)),a)

6)((S,^,(a)),a)

7)((T,^,(a)),a)

8)((T,S,(a)),a)

9)((T,(a)),a)

(2)①规范句型及每一步的句柄(用下划线标示):

②“移进-规约”过程:

步骤分析栈输入串动作

(1)#(((a,a),^,(a)),a)#预备

(2)#(((a,a),^,(a)),a)#移进

(3)#(((a,a),^,(a)),a)#移进

(4)#(((a,a),^,(a)),a)#移进

(5)#(((a,a),^,(a)),a)#移进

(6)#(((S,a),^,(a)),a)#归约

(7)#(((T,a),^,(a)),a)#归约

(8)#(((T,a),^,(a)),a)#移进

(9)#(((T,a),^,(a)),a)#移进

(10)#(((T,S),^,(a)),a)#归约

(11)#(((T),^,(a)),a)#归约

(12)#(((T),^,(a)),a)#移进

(13)#((S,^,(a)),a)#归约

(14)#((T,^,(a)),a)#归约

(15)#((T,^,(a)),a)#移进

(16)#((T,^,(a)),a)#移进

(17)#((T,S,(a)),a)#归约

(18)#((T,(a)),a)#归约

(19)#((T,(a)),a)#移进

(20)#((T,(a)),a)#移进

(21)#((T,(a)),a)#移进

(22)#((T,(S)),a)#归约

(23)#((T,(T)),a)#归约

(24)#((T,(T)),a)#移进

(25)#((T,S),a)#归约

(26)#((T),a)#归约

(27)#((T),a)#移进

(28)#(S,a)#归约

(29)#(T,a)#归约

(30)#(T,a)#移进

(31)#(T,a)#移进

(32)#(T,S)#归约

(33)#(T)#归约

(34)#(T)#移进

(35)#S#归约

(36)#S#接受

③语法树的自下而上的构造过程:

3.

(1)计算练习2文法G2的FIRSTVT和LASTVT;

(2)计算G2的优先关系,G2是一个算符优先文法吗?

(3)给出输入串(a,(a,a))的算符优先分析过程。

解:

(1)

FIRSTVT

LASTVT

S

{a,^,(}

{a,^,)}

T

{,,a,^,(}

{,,a,^,)}

(2)优先关系表如下:

a

^

#

a

>

>

>

^

>

>

>

<

<

<

=

<

>

>

>

<

<

<

>

>

#

<

<

<

=

因为:

1)该文法不含ε产生式;

2)该文法是算符文法;

3)由优先关系表可以看出,任何终结符之间的优先关系至多满足一种优先关系;

所以该文法是算符优先文法。

(3)

步骤分析栈输入串动作原因

0#(a,(a,a))#预备

1#(a,(a,a))#移进#<(

2#(a,(a,a))#移进(

3#(S,(a,a))#归约a>,

4#(S,(a,a))#移进(>,

5#(S,(a,a))#移进,<(

6#(S,(a,a))#移进(

7#(S,(S,a))#归约a>,

8#(S,(S,a))#移进(<,

9#(S,(S,a))#移进,

10#(S,(S,S))#归约,>)

11#(S,(T))#归约,>)

12#(S,(T))#移进(=)

13#(S,S)#归约)>)

14#(T)#归约,>)

15#(T)#移进(=)

16#S#归约)>#

17#S#分析成功

5.考虑文法:

S→AS|b

A→SA|a

(1)列出这个文法所有的LR(0)项目;

(2)构造这个文法的LR(0)项目集规范族以及识别活前缀的DFA;

(3)这个文法是SLR的吗?

若是,构造分析表;

(4)这个文法是LALR或LR

(1)的吗?

解:

拓广文法如下:

S’→S

S→AS|b

A→SA|a

(1)所有LR(0)项目如下:

1)S’→.S2)S’→S.3)S→.AS4)S→A.S5)S→AS.6)S→.b

7)S→b.8)A→.SA9)A→S.A10)A→SA.11)A→.a12)A→a.

(2)该文法的LR(0)项目集规范族如下:

DFA略。

(3)FIRST(S)={b,a}FIRST(A)={a,b}

FOLLOW(S)={#,a,b}FOLLOW(A)={a,b}

在LR(0)项目集规范族中,同时存在“移进-归约”和“归约-归约”项目的项目集有I1,I5和I7;其中I1中“归约”项目是“接受”项目,面临#时接受,移进项目要求面临a和b时移进,不存在冲突;I5中归约项目面临FOLLOW(A)中元素a,b时归约,“移进”项目面临a,b时移进,存在冲突;同理,I7也存在冲突。

所以该文法不是SLR的。

(或者:

构造出SLR分析表,指出存在多重入口)

(4)构造LR

(1)项目集规范族:

因为:

I5,I8,I9中存在“移进-归约”冲突,所以该文法不是LR

(1)的,更不是LALR的。

(!

此题另解:

该文法是二义文法,故不是任何LR文法。

本章补充作业:

1.文法G[S],构造LR

(1)分析表:

S→aAd|bAc|aec|bed

A→e

解:

(1)拓广文法如下:

0)S’→S

1)S→aAd

2)S→bAc

3)S→aec

4)S→bed

5)A→e

(2)LR

(1)项目集规范族构造如下:

 

(3)LR

(1)分析表如下:

2.文法G[S]:

S→AB

A→aBa|ε

B→bAb|ε

(1)该文法是SLR的吗?

(2)若是,请构造它的分析表;

(3)给出输入串baab#的分析过程。

解:

对文法拓广:

(0)S’→S

(1)S→AB

(2)A→aBa

(3)A→ε

(4)B→bAb

(5)B→ε

(1)构造LR(0)项目集规范族如下:

 

因为:

FOLLOW(S)={#}FOLLOW(A)={b,#}FOLLOW(B)={a,#}

I0面临FOLLOW(A)中元素时归约,面临a时移进,不存在冲突;同理,I2,I3,I5中的冲突也可以用SLR方法解决,所以该文法是SLR的。

(2)SLR分析表如下:

 

(3)

步骤状态栈符号栈输入串

00#baab#

102#Abaab#

2025#Abaab#

30253#Abaab#

402536#AbaBab#

5025368#AbaBab#

60257#AbAb#

702579#AbAb#

8024#AB#

901#S#

3.若有文法G[S]:

S→S;M|M

M→MbD|D

D→D(S)|ε

(1)证明G[S]是SLR文法,并构造它的分析表;

(2)给出G[S]的LR

(1)项目集规范族中的I0。

解:

(1)拓广文法为:

0)S’→S

1)S→S;M

2)S→M

3)M→MbD

4)M→D

5)D→D(S)

6)D→ε

LR(0)项目集规范族如下:

 

FOLLOW(S)={#,;,)}

FOLLOW(M)={#,;,),b}

FOLLOW(D)={#,;,),b,c}

SLR分析表如下:

分析表入口唯一,所以是SLR的。

(2)LR

(1)项目集规范族中的I0:

S’→.S,#

S→.S;M,#/;

S→.M,#/;

M→.MbD,#/;/b

M→.D,#/;/b

D→.D(S),#/;/b/(

D→.,#/;/b/(

第6章

1。

对于某个上下文无关文法,当把每个文法符号联系于一组属性,且让该文法的产生式规则附加以属性计算时,称该文法为属性文法。

2.文法符号的属性有两种,一种称为综合属性,另一种成为继承属性

3.一个文法符号的继承属性是通过语法树中它的父结点和/或兄弟结点的相应文法符号的属性值来计算的,而综合属性是通过语法树中它的子结点的属性值来计算的

4.语法制导的编译程序能同时进行语法分析和语义分析

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1