【编译Chap4】求first集、follow集例题

发布时间:2026/10/19 1:15:00

【编译Chap4】求first集、follow集例题 方法求 FIRST 集的规则反复扫描所有产生式以A → X 1 X 2 ⋯ X n A\to X_1X_2\cdots X_nA→X1​X2​⋯Xn​为例依次处理X i X_iXi​i从1 to n把F I R S T ( X i ) − { ε } \mathrm{FIRST}(X_i)-\{\varepsilon\}FIRST(Xi​)−{ε}加入F I R S T ( A ) \mathrm{FIRST}(A)FIRST(A)如果ε ∉ F I R S T ( X i ) \varepsilon\notin \mathrm{FIRST}(X_i)ε∈/FIRST(Xi​)停止处理该产生式如果ε ∈ F I R S T ( X i ) \varepsilon\in\mathrm{FIRST}(X_i)ε∈FIRST(Xi​)继续处理下一个X i 1 X_{i1}Xi1​如果所有X i X_iXi​都能推出ε \varepsilonε则把ε \varepsilonε加入F I R S T ( A ) \mathrm{FIRST}(A)FIRST(A)。求 FOLLOW 集的规则开始符号把$输入结束符放入开始符号的 FOLLOW 集。反复扫描所有产生式以A → α B β A \to \alpha B \betaA→αBβ为例把F I R S T ( β ) − { ε } \mathrm{FIRST}(\beta) - \{\varepsilon\}FIRST(β)−{ε}加入F O L L O W ( B ) \mathrm{FOLLOW}(B)FOLLOW(B)。可空情况如果β \betaβ能推导出ε \varepsilonε即ε ∈ F I R S T ( β ) \varepsilon \in \mathrm{FIRST}(\beta)ε∈FIRST(β)或者B BB在产生式最右边则把F O L L O W ( A ) \mathrm{FOLLOW}(A)FOLLOW(A)加入F O L L O W ( B ) \mathrm{FOLLOW}(B)FOLLOW(B)。Appendix如果有左递归先消除左递归消除直接左递归的方法最简单的情况A → A α ∣ β A \to A\alpha \mid \betaA→Aα∣β改写为A → β A ′ A ′ → α A ′ ∣ ε \begin{aligned} A \to \beta A \\ A \to \alpha A \mid \varepsilon \end{aligned}AA′​→βA′→αA′∣ε​一般形式A → A α 1 ∣ A α 2 ∣ ⋯ ∣ A α m ∣ β 1 ∣ β 2 ∣ ⋯ ∣ β n A \to A\alpha_1 \mid A\alpha_2 \mid \cdots \mid A\alpha_m \mid \beta_1 \mid \beta_2 \mid \cdots \mid \beta_nA→Aα1​∣Aα2​∣⋯∣Aαm​∣β1​∣β2​∣⋯∣βn​改写为A → β 1 A ′ ∣ β 2 A ′ ∣ ⋯ ∣ β n A ′ A ′ → α 1 A ′ ∣ α 2 A ′ ∣ ⋯ ∣ α m A ′ ∣ ε \begin{aligned} A \to \beta_1 A \mid \beta_2 A \mid \cdots \mid \beta_n A \\ A \to \alpha_1 A \mid \alpha_2 A \mid \cdots \mid \alpha_m A \mid \varepsilon \end{aligned}AA′​→β1​A′∣β2​A′∣⋯∣βn​A′→α1​A′∣α2​A′∣⋯∣αm​A′∣ε​AppendixLL1表的构造遍历所有产生式以A → α为例对每个终结符 a ∈ FIRST(α)把 A → α 加至 M[A, a]中其中 α 为含有首字符 a 的候选式或唯一的候选式若ε ∈ FIRST(A)则对任何 b ∈ FOLLOW(A) 把 A → ε 加至 M[A, b]中六道例题第一题答案第二题答案firstAabcdgBbεCacdDdεEcgfollow不要忘记$求first非常容易错知乎有很好的方法论若X-a…则将终结符加入FIRST(X)中;注意非终结符的情况若X-e ,则将终结符e加入FIRST(X)中(e表示空集)若 X-BC…D,则将FirstB所有元素除了空集加入FirstX然后检测FirstB若FirstB中不存在空集, 即e,则停止若存在则向B的后面查看将FirstC中所有元素除了空集加入FirstX然后再检测FirstC中是否有e…直 到最后若D之前的所有非终结符的First集中都含有e,则检测到D时将FirstD也加入FirstX若FirstD中含有e,则将 e加入FirstX。总之看到epsilon要继续往后找直到没有epsilon或能确定X可置空为止。再一个简单例子下面的不能因为A的first集是epsilonS的第一个符号是A所以S的first集中就是epsilon这是不对的first集中有epsilon代表该符号可置空而在下面这个例题中S推不出空。所以此时应该向后找A的后面是aa的first是本身a到这里就可以停止了。第三题first:S: a,b,εAa,bBa,bfollow:第四题2010期末A卷第二题第五题lws 模拟试卷一 第二题第六题ref:https://blog.csdn.net/Baron_wu/article/details/84994254https://blog.csdn.net/RENSRM/article/details/111595754https://zhuanlan.zhihu.com/p/268555826
延伸阅读

更多相关文章

2026/10/19 1:15:00

Hadoop电信客服分析链路:从混杂日志到交互式业务看板

简介:本资源是一个面向大数据初学者与电信行业数据工程师的Hadoop全栈实战项目,聚焦客服数据采集、存储、分析与可视化闭环。项目基于真实业务场景,整合Zookeeper集群协调、HBase实时存储、Flume日志采集、Kafka流式分发及HDFSMapReduce批处理…

2026/10/19 1:15:00

基于溯源图与图神经网络的APT攻击链检测方法

简介:一份基于溯源图的APT攻击检测方法优化Python实现源码,适合信息安全、计算机科学、数据科学等专业学生用于毕业设计、课程设计或期末大作业。项目代码已经过功能验证,可稳定运行,并提供清晰的目录结构与注释,便于二…

2026/10/19 2:20:04

VS2015 编译 gRPC C++ 实战:版本对齐与依赖管理

简介:这份资源面向在 Windows 平台使用 C 进行微服务与分布式系统开发的工程师,提供基于 Visual Studio 2015 编译的 gRPC 预编译库与示例工程,帮助开发者跳过繁琐的源码编译环节,快速搭建可运行的 gRPC 开发环境。压缩包共 884 个…

2026/10/19 2:20:04

VS2015 下编译 gRPC C++ 全攻略:版本选型、依赖配置与避坑指南

简介:这份资源面向在 Windows 平台使用 C 进行微服务与分布式系统开发的工程师,提供基于 Visual Studio 2015 编译的 gRPC 完整开发环境,解决从源码编译到工程配置的繁琐问题。压缩包共 884 个文件,约 71.97MB,以 430 …

2026/10/19 2:20:04

编译原理实战:从词法分析到代码生成,LR分析器与AST构建全解析

简介:这份《编译原理学习指导》文档面向计算机专业本科生、考研备考者以及希望深入理解编译器工作机制的自学者,系统梳理了编译原理的核心知识脉络与学习路径。内容围绕词法分析、语法分析(LL算法、递归下降算法、LR算法)、语义分…

2026/10/19 2:20:04

VS2017 64位下OSG嵌入Qt窗口:编译配置与交互实现

简介:这是一份面向Qt与OpenSceneGraph(OSG)三维渲染开发者的整合示例工程,基于Github上口碑较好的OSGtree项目移植而来,已在VS2017搭配64位OSG环境下完成调试,可直接运行。工程几乎覆盖了OSG与Qt结合所需的…

2026/10/19 2:20:04

VS2017 64位下OSG与Qt集成实战:避坑指南与核心代码

简介:这是一份面向OSG与Qt联合开发初学者及中级图形程序员的实战参考工程,源自GitHub上广受好评的OSGtree示例,已在VS2017搭配64位OSG环境下完成调试,可直接运行,几乎覆盖了OSG与Qt结合所需的全部典型功能,…

2026/10/19 2:15:04

母婴亲子服务平台分账架构设计:多场景多方分账与合规清结算实践

母婴亲子行业业务形态丰富,覆盖母婴实物团购、线下亲子活动、育儿课程、上门母婴服务。一笔订单往往涉及供应商、团长、讲师、主办方等多方分润,叠加行业高退款率、大量个人服务商结算、营销玩法快速迭代等特点,分账系统的合规性与规则灵活性…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/19 0:04:56

悟空开源无代码平台实战:从实体建模到应用设计避坑指南

简介:基于悟空开源无代码平台的多种应用设计源码,面向希望在不编写代码的情况下快速搭建CRM、HRM、财务系统、ERP、SRM等业务应用的企业与技术人员,通过拖放式界面和内置模板即可完成应用定制与部署。压缩包共697个文件,约10.74MB…

2026/10/19 0:04:56

基于.NET9的多租户权限系统:数据权限与动态API落地实践

简介:这份资源是一套面向 .NET 与 Vue 全栈开发者的中台权限管理系统,后端基于 .Net9,前端采用 Vue3 Element Plus,并配套 uniapp uviewui 移动端方案,实现前后端分离。系统覆盖多租户隔离、数据权限、动态 Api、任务…

2026/10/19 0:04:56

场地预约小程序毕设实战:SSM+微信小程序+MySQL数据库设计到避坑

简介:面向毕业设计场景的场地预约小程序完整项目,基于微信小程序SSMMySql技术栈开发,适合计算机相关专业学生作为选题参考、功能扩展或二次开发起点。系统实现场地类型管理、场地管理、预约管理、取消申请与押金退回等功能,分为管…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑