【编译原理】LL1分析表的构造

首先要构造FIRST集合和FOLLOW集合
例题
在这里插入图片描述

首先构造比较简单的FIRST集合

在这里插入图片描述
在这里插入图片描述
上面两个的FIRST集合非常好计算
直接提取候选式最开始的终结符即可
答案

在这里插入图片描述
在这里插入图片描述

接着构造它的FIRST集合
在这里插入图片描述
我们去找F的fist集合
在这里插入图片描述
由于F的fist集合里面没有空字,所以我们不去看 T’ 的 fist集合
而将F的first认为是T的first集合
同理
在这里插入图片描述
T的集合也没有空字,故T的first集合就是E的first集合
在这里插入图片描述

接着构造FOLLOW集合

在这里插入图片描述

我们首先在文法开始符号E加入#
注意FOLLOW集合里面没有空字
即FOLLOW(E) = { # }
接着我们开始一个一个构造
在这里插入图片描述

由它我们知道
1、E’ 的fist集合一定是T的FOLLOW,因为E’跟在T的后面

2、E的follow也是E’的FOLLOW(如果T的候选式没有空字,那么E的follow不是T的follow)
3、由于在这里插入图片描述
first(E’)含空字,故E的follow也是T的follow

接着我们来考虑在这里插入图片描述
1、E’的FIRST是T的FOLLOW
2、看E’的first有没有空字,有的话E‘的follow也是T的follow
依次类推
在这里插入图片描述

构造完之后开始构造分析表

竖列是文法出现的所有的非终结符

横行是文法出现的所有的终结符加结束标志#

然后根据上面的表格填写,首先填写First部分
在这里插入图片描述
如果产生式的右端直接以终结符开头例如
在这里插入图片描述
在这里插入图片描述
那么只在这个终结符所对应的非终结符那一个格子把产生式填写上
在这里插入图片描述
像这个式子两边都要填写,就是F对应的那一行以及( 和 i对应的两个列都要把这个式子写上
接着写follow集合
哪个式子可以产生空字,就把产生空字那一部分式子写在对应的格子上

本题只有在这里插入图片描述
在这里插入图片描述
这两个式子可以产生空字,那么就把他写在对应的格子上

最后答案
在这里插入图片描述

  • 20
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值