编译原理习题汇总Word文档格式.docx

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

编译原理习题汇总Word文档格式.docx

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

编译原理习题汇总Word文档格式.docx

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

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

句柄:

2.文法:

S→a|^|(T)

T→T,S|S

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

(2)指出(((a,a),^,(a)),a)的标准归约和每一步的句柄,依照那个标准归约,给出“移进-归约”进程,并给出它的语法树自下而上构造进程。

(1)略

(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

^

#

>

<

=

因为:

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

(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分析表如下:

步骤状态栈符号栈输入串

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)拓广文法为:

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,#/;

D→.D(S),#/;

/b/(

D→.,#/;

第6章

1。

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

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

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

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

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

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

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

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