编译原理(龙书第二版):语法分析相关习题及总结

本文详细解析了编译原理中的语法分析问题,包括消除左递归、构造LL(1)分析表、SLR分析等,并通过具体文法实例进行演示。同时,总结了LL(1)、LR(1)、SLR(1)、LALR(1)文法的判断方法。
摘要由CSDN通过智能技术生成

一. 考虑以下文法:

SaTUVbV
TUUU
UεbV
VεcV

写出每个非终结符号的FIRST集和FOLLOW集

FIRST(S)={a, b}  FIRST(T)={є, b}  FIRST(U)={є, b}  FIRST(V)={є, c}

FOLLOW(S)={ $}  FOLLOW(T)={ b, c, $}  FOLLOW(U)={ b, c, $}  FOLLOW(V)={ b, c , $}

FIRST集的求解方法非常简单,因为显而易见,一眼就能看出来。这里就不赘述了。

FOLLOW集的求解就需要细心一点,一不小心就容易漏掉。

求解一个非终结符号的FOLLOW(S),那么就看它出现在产生式右边的地方。

1) 求FOLLOW(S)

因为S是开始符号,$是结束标记,先把$放到FOLLOW(S)中。S没有出现在产生式右边,所以没有了。

2) 求FOLLOW(T)

因为T出现在 saTUV 中,所以FIRST(U)中除了 ε 之外的所有符号都在FOLLOW(T)中,也就是把b添加进去。

又因为FIRST(U)中含有 ε ,所以FOLLOW(S)中的所有符号都在FOLLOW(T)中,也就是把$添加进去。

这里很容易忘掉一种情况,那就是U可能为 ε 的情况。这种情况下,FIRST(V)中除了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值