计算First集合

本文详细介绍了在编译原理中,First集合的概念、计算方法及其在语法分析中的作用。First集合是文法分析的重要组成部分,对于终结符,其First集合就是自身,对于非终结符,First集合表示可能出现在该非终结符开始的句子的第一个终结符。文章还讨论了First集合的计算算法,包括有空产生式和无空产生式的情况,并提供了相关证明和例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:文章内容可能随时修改。

=======================================================

        在语法分析过程中,文法符号的First集合是一个很重要的概念。因为是语法分析,所以我们所说的文法,一般都是指正则文法。

        First集合是一个只可能包含终结符和空字符ε的集合,可以针对文法符号——空字符、终结符和非终结符,以及文法符号串——其中可以同时包含终结符和非终结符,来计算First集合。通常用First(X)来表示文法符号X的First集合,用First(α)来表示文法符号串α的First集合。


一、First集合的定义和计算

        终结符号的First集合很好计算,就是只包含它本身的集合,例如:假设a是某个文法中的一个终结符,那么First(a)={a}。空字符ε的First集合也是这样,即First(ε)={ε}。

        非终结符号First集合的计算相比就没有这么简单了。书上的算法如下图所示。



        其中部分过程是这样的,算是上面第2个for循环的循环体吧。假设X是某个文法中的一个非终结符,并且,对于X存在产生式“X→X1X2⋯Xn”。

        1. 初始状态:First(X)=∅,i=1;

   &nb

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值