编译原理陈火旺版第四章课后题答案

这篇具有很好参考价值的文章主要介绍了编译原理陈火旺版第四章课后题答案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

下面答案仅供参考!

目前修改了第三题的部分问题。

1.考虑下面文法G1:

S→a∣∧∣(T)

T→T,S∣S

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

编译原理陈火旺版第四章课后题答案

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

编译原理陈火旺版第四章课后题答案

2.对下面的文法G:

编译原理陈火旺版第四章课后题答案

P→(E)lalblΛ

(1)计算这个文法的每个非终结符的FIRST和FOLIOW.

编译原理陈火旺版第四章课后题答案

编译原理陈火旺版第四章课后题答案

编译原理陈火旺版第四章课后题答案

(2)证明这个文法是LL(1)的。

 编译原理陈火旺版第四章课后题答案

(3)构造它的预测分析表。

编译原理陈火旺版第四章课后题答案

(4)构造它的递归下降分析程序。

编译原理陈火旺版第四章课后题答案

编译原理陈火旺版第四章课后题答案

 编译原理陈火旺版第四章课后题答案

 编译原理陈火旺版第四章课后题答案

3.下面文法中,哪些是LL(1)的,说明理由。

(1)S→Abc

         A→a∣ε

         B→b∣ε

这里是不是写错了,应该是S→ABc?,下图答案是以S→ABc为准。

编译原理陈火旺版第四章课后题答案

     看了一下网上流传的答案,基本上都是first(S)={a,b,c}和下图结果一样,如果是S->Abc的话,那么first(S)={a,b}。

编译原理陈火旺版第四章课后题答案

下图答案是以S→Abc为准

编译原理陈火旺版第四章课后题答案

 编译原理陈火旺版第四章课后题答案

(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. 对下面文法:

              Expr→-Expr

              Expr→(Expr)∣Var

              ExprTail→-Expr∣ε

              Var→id VarTail

              VarTail→(Expr)∣ε

(1) 构造 LL(1)分析表。

(2) 给出对句子 id - -id((id))的分析过程。

构造文法的预测分析表,通常应当按下列步骤进行: (1) 消除文法的左递归(包括所有直接左递归和间接左递归); (2) 对消除左递归后的文法,提取左公因子; (3) 对经过上述改造后的文法,计算它的每个非终结符的 FIRST 集合和 FOLLOW 集合 ⑷ 根据 FIRST 集合和 FOLLOW 集合构造预测分析表:

第1步对文法G的每个产生式A→α执行第1步和第3步;

第2步对每个终结符a∈FIRST(α),把A→α加至M[A,a]中;

第3步若ε∈FIRST(α),则对任何b∈FOLLOW(A)把A→α加至M[A,b]中;

第4步把所有无定义的M[A,a]标上“出错标志”。

解答:

(1)计算每个非终结符的FIRST集合和FOLLOW集合如下:

              FIRST(Expr)={-,(,id}

              FIRST(ExprTail)={-,ε}

              FIRST(Var)={id}

              FIRST(VarTail)={(,ε}

              FOLLOW(Expr)={),#}

              FOLLOW(ExprTail)={),#}

              FOLLOW(Var)={-,),#}

              FOLLOW(VarTail)={-,∣,#}

构造其预测分析表如下:    

- id ( ) #
Expr Expr→- Expr Expr→Var ExprTail Expr→-( Expr)
ExprTail ExprTail→-Expr ExprTail→ε ExprTail→ε
Var Var→id VarTail
VarTail VarTail→ε VarTail→(Expr) VarTail→ε VarTail→ε

(2)句子id--id((id))的分析过程如下:    

步骤

符号栈

输入串

所用产生式

0

# Expr

id--id((id)) #

1

# ExprTail Var

id--id((id)) #

Expr→Var ExprTail

2

# ExprTail VarTail id

id--id((id)) #

Var→id VarTail

3

# ExprTail VarTail

--id((id)) #

4

# ExprTail

--id((id)) #

VarTail→ε

5

# Expr -

--id((id)) #

ExprTail→-Expr

6

# Expr

-id((id)) #

7

# Expr -

-id((id)) #

Expr→-Expr

8

# Expr

id((id)) #

9

# ExprTail Var

id((id)) #

Expr→Var ExprTail

10

# ExprTail VarTail id

id((id)) #

Var→id VarTail

11

# ExprTail VarTail

((id)) #

12

# ExprTail ) Expr (

((id)) #

VarTail→(Expr)

13

# ExprTail ) Expr

(id)) #

14

# ExprTail ) ) Expr (

(id)) #

15

# ExprTail ) ) Expr

id)) #

16

# ExprTail ) ) ExprTal Var

id)) #

Expr→Var ExprTail

17

# ExprTail ) ) ExprTail VarTail id

id)) #

Var→id VarTail

18

# ExprTail ) ) ExprTail VarTail

)) #

19

# ExprTail ) ) ExprTail

)) #

VarTail→ε

20

# ExprTail ) )

)) #

ExprTail→ε

21

# ExprTail )

) #

22

# ExprTail

#

23

#

#

ExprTail→ε

suc

5. 把下面文法改写为 LL(1)的:

       Declist→Declist;Decl∣Decl

       Decl→IdList:Type

       IdList→IdList,id∣id

       Type→ScalarType∣array(ScalarTypeList) of Type

       ScalarType→id∣Bound..Bound

       Bound→Sign IntLiteral∣id

       Sign→+∣-∣ε

       ScalarTypeList→ScalarTypeList,ScalarType∣ScalarType

       答:本题目主要考査学生理解和运用消除文法的左递归、提取左公共因子等算法的能力, 为判断文法是否是 LL(1)文法,还要计算文法的 FIRST 集合和 FOLLOW 集合。

     消除文法的左递归的基本思想是,将文法规则中的左递归结构变换成等价的右递归结构。

     提取左公因子的算法,是对包含公共左因子的产生式候选,反复提取左因子,就能够 把每个非终结符(包括新引进者)的所有候选首符集变成为两两不相交。

     消除文法的左递归、提取左公共因子后,再计算文法的各非终结符00的首符集 FIRST( X)和随符集 FOLLOW( X),然后根据 LL(1)文法的充分必要条件(即 LL(1)文法 的定义)来判断文法是否是 LL(1)文法。

首先消除左递归,得到文法G(Declist):

                     Declist→Decl Declist’

                     Declist’→;Decl Declist’∣ε

                     Decl→IdList:Type

                     IdList→id IdList’

                     IdList’→,id List’∣ε

                     Type→ScalarType∣array(ScalarTypeList) of Type

                     ScalarType→id∣Bound..Bound

                     Bound→Sign IntLiteral∣id

                     Sign→+∣-∣ε

                     ScalarTypeList→ScalarType ScalarTypeList’

                     ScalarTypeList’→,ScalarType ScalarTypeList’∣ε

  显然,改造后的文法没有左公共因子,计算每个非终结符的FIRST集合和FOLLOW集合如下:

                     FIRST(Declist)={id}

                     FIRST(Declist’)={;,ε}

                     FIRST(Decl)={id}

                     FIRST(IdList)={id}

                     FIRST(IdList’)={;,ε}

                     FIRST(Type)={id,+,-,IntLiteral,array}

                     FIRST(ScalarType)={id,+,-,IntLiteral}

                     FIRST(Bound)={id,+,-,InLiteral}

                     FIRST(Sign)={+,-,ε}

                     FIRST(ScalarTypeList)={id,+,-,IntLiteral }

                     FIRST(ScalarTypeList’)={,,ε}

                     FOLLOW(Declist)={#}

                     FOLLOW(Declist’)={#}

                     FOLLOW(Decl)={id,;}

                     FOLLOW(IdList)={:}

                     FOLLOW(IdList’)={:}

                     FOLLOW(Type)={id,;}

                     FOLLOW(ScalarType)={id,;,),,}

                     FOLLOW(Bound)={id,;,)’,’..}

                     FOLLOW(Sign)={IntLiteral}

                     FOLLOW(ScalarTypeList)={)}

                     FOLLOW(ScalarTypeList’)={)}

显然,改造后的文法是 LL(1)的。文章来源地址https://www.toymoban.com/news/detail-438535.html

到了这里,关于编译原理陈火旺版第四章课后题答案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 第四章 公钥密码 —— 现代密码学(杨波)课后题答案解析

    4. 用推广的Euclid算法求67 mod 119的逆元 解:初始化:(1,0,119), (0,1,67) 1:Q=119/67=1,(0,1,67) , (1,-1,52) 2:Q=67/52=1,(1,-1,52), (-1,2,15) 3:Q=52/15=3,(-1,2,15), (4,-7,7) 4:Q=15/7=2,(4,-7,7), (-9,16,1) 所以67 -1  mod 119=16 10.设通信双方使用RSA加密体制,接收方的公开钥是( e , n )=(5,35),接收到

    2024年02月05日
    浏览(58)
  • 微信小程序开发实战课后习题解答————第四章(作业版)

    一、填空题 1、  组件  是视图层的基本组成单元。 2、 swiper内部只可以放置   swiper-item    组件。 3、 设置text文本内容长按可选的属性是   selectable   。    4、navigator组件通过设置   open-type    属性,来区分不同的跳转功能。 5、通过image的  mode    属性来设定不同的图

    2024年02月06日
    浏览(58)
  • 打印不同的图形-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

    【案例4-1】打印不同的图形 记得 关注,收藏,评论哦,作者将持续更新。。。。 【案例介绍】 案例描述 本案例要求编写一个程序,可以根据用户要求在控制台打印出不同的图形。例如,用户自定义半径的圆形和用户自定义边长的正方形。 运行结果   【案例分析】 ( 1 )

    2024年02月01日
    浏览(61)
  • 软件测试技术 第四章 白盒测试 课后习题参考答案 - 杨胜利

    1.什么是白盒测试? 白盒测试技术是一种常用的软件测试方法,不仅软件测试人员需要掌握,开发人员也需要在开发时用此方法测试自己开发的程序; 白盒测试是一种从开发人员角度出发的测试,主要以程序的源代码为依据,对程序的内部逻辑结构进行测试,故又称“结构测

    2024年02月05日
    浏览(45)
  • 软件项目管理 第四章 软件项目的范围管理 课后习题参考答案——主编:李冰、张桥珍、刘玉娥

    1.选择题 (1)需求分析是回答系统必须( A )的问题。      A.做什么        B.怎么做        C.何时做        D.为谁做 (2)WBS非常重要,下列哪项不是其很重要的原因( D )。     A.帮助组织工作        B.防止遗漏工作        C.为项目估算提供依据    

    2024年02月11日
    浏览(53)
  • ChatGPT技术原理 第四章:Transformer模型

    目录 4.1 什么是Transformer 4.2 Transformer结构详解 4.3 Self-Attention机制 4.4 Multi-Head Attention机制

    2024年02月02日
    浏览(54)
  • ElasticSearch学习笔记-第四章 ES分片原理以及读写流程详解

    在学习ES分片原理以及读写流程之前,需要先学习一些ES的核心概念以及ES集群环境的相关知识 4.1 ES核心概念 4.1.1 索引 索引(Index)相当于MySQL中的数据库,一个索引就是一个拥有几分相似特征的文档的集合。 4.1.2 类型 类型(Type)相当于MySQL中的表,一个类型就是索引的一个逻辑上

    2024年02月06日
    浏览(62)
  • 计算机网络原理 谢希仁(第8版)第四章习题答案

    4-01 网络层向上提供的服务有哪两种?试比较其优缺点。 面向连接的和无连接。 面向连接优点: 通过虚电路发送分组,分组只用填写虚电路编号,分组开销较小; 分组按序达到终点。 面向连接缺点: 一个节点出故障,所有通过该节点的虚电路均不能工作; 可靠通信交给网

    2024年02月03日
    浏览(48)
  • 【计算机组成原理】24王道考研笔记——第四章 指令系统

    指令是指示计算机执行某种操作的命令,是计算机运行的最小功能单位。一台计算机的所有指令的集合构成该 机的指令系统,也称为指令集。 指令格式: 1.1分类 按地址码数目分类: 按指令长度分类: 按操作码长度分类: 按操作类型分类: 1.2 扩展操作码 设地址长度为n,

    2024年02月13日
    浏览(52)
  • 传感器原理与检测技术复习笔记第四章-电感式传感器

    基本原理 由 线圈、铁芯、衔铁 三部分组成,在铁芯和衔铁之间有气隙,传感器的运动部分和衔铁相连。 衔铁移动时,气隙厚度发生变化,引起磁路的磁阻变化,从而导致线圈电感发生变化。 通过测量电感量的变化确定位移的大小和方向。 通常气隙磁阻远大于铁芯和衔铁的

    2024年02月13日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包