编译原理 | 求FIRST集和FOLLOW集的具体过程

本文介绍了编译原理中构造FIRST集和FOLLOW集的具体步骤。通过实例展示了如何计算非终结符的FIRST集和FOLLOW集,解释了各个规则的应用,并给出了完整的计算过程。

FIRST集的构造:
计算所有文法符号X的FIRST(X),直到每个FIRST集合不再增大为止.
(1) 若X∈VT,那么FIRST(X)={X}.
(2) 若X→ε是产生式,那么把ε加入FIRST(X).
(3) 如果X是非终结符,且X→Y1Y2…Yk是产生式,若对某个i, a属于FIRST(Yi),并且ε属于所有的FIRST(Y1),FIRST(Y2), …,FIRST(Yi-1),即Y1Y2…Yi-1 ε,则把a加入FIRST(X).如果对所有的j=1,2,…,k, 有ε属于FIRST(Yj),那么把ε加入FIRST(X).

FOLLOW集的构造:
对所有的非终结符A计算FOLLOW(A).应用下面规则,直到每个FOLLOW集不再增大为止.
(1) 把#加入FOLLOW(S),其中S是开始符号,#是输入结束标记.
(2) 如果有产生式A→αBβ,那么除ε外,把FIRST(β)中的所有元素加入FOLLOW(B).
(3) 如果有产生式A→αB,或有产生式A→αBβ且 FIRST(β)含ε,那么,把FOLLOW(A)中的一切元素加入 FOLLOW(B).


栗子:

在这里插入图片描述

构造FIRST集:

FIRST(S) = {}
FIRST(M) = {}
FIRST(H) = {}
FIRST(L) = {}
FIRST(K) = {}

把所有在开头的终结符加入到对应的FIRST:

内容概要:本文系统阐述了利用BP神经网络结合Matlab编程实现对水质变化趋势进行科学预测的技术方法。通过构建BP神经网络模型,利用历史水质数据(如pH值、溶解氧、浊度等)进行训练,充分挖掘数据间的非线性关系,实现对未来水质状况的精准预测。该方法在处理复杂、非线性的环境数据方面表现出色,具有较强的泛化能力实用性,适用于环境监测与水资源管理领域。文中配套提供了完整的Matlab代码实现方案,涵盖数据预处理、模型构建、训练优化及预测分析全过程,便于读者复现与应用。; 适合人群:具备一定机器学习理论基础Matlab编程能力的科研人员、环境工程及相关专业的高校学生,以及从事水质监测、水污染预警水资源管理的技术人员。; 使用场景及目标:①用于水质关键参数的时间序列预测,支持水环境长期趋势分析;②为水污染早期预警系统建设、水资源保护政策制定与生态环境治理提供可靠的数据支撑技术手段;③作为教学实践案例,帮助学习者深入理解神经网络在环境科学中的建模流程与应用逻辑。; 阅读建议:建议读者结合文中提供的Matlab代码逐模块运行与调试,重点掌握数据归一化、网络结构设计、训练参数调优及预测结果可视化等关键步骤,同时鼓励将该模型迁移至其他类似时序预测任务中进行拓展验证与性能优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值