FIRST 集合(首符号集)学习笔记 文章目录FIRST 集合首符号集学习笔记一、这个知识点到底在干嘛二、前置概念必须先搞清楚三、FIRST 集合的核心操作四、特殊情况空串 ε五、实战演示六、避坑指南七、与其他集合的关系预览八、做题流程总结FIRST 集合首符号集学习笔记一、这个知识点到底在干嘛FIRST 集合解决的是一个非常朴素的问题从某个符号出发推导出来的句子第一个字可能是谁把所有可能的第一个字收集起来就是 FIRST 集合。二、前置概念必须先搞清楚概念大白话例子终结符最终成品不能再变的符号a,[,],,非终结符半成品/占位符还需要继续替换S,L产生式规则造句规则箭头左边能变成右边S → a推导按照规则一步步替换的过程S → [L] → [S] → [a]三、FIRST 集合的核心操作一句话口诀盯着箭头右边最左边的符号看。具体分两种情况情况 1箭头右边第一个是终结符直接把这个终结符抓进 FIRST 集合游戏结束。例S → a第一个是终结符a所以a ∈ FIRST(S)。情况 2箭头右边第一个是非终结符需要去查那个非终结符的 FIRST 是什么递归查找。例A → Bc第一个是B非终结符那就去看FIRST(B)里有什么把它们都加进FIRST(A)。四、特殊情况空串 ε如果某个非终结符能推导出空串即可以隐身消失那么当前符号不算继续往后看下一个符号。如果后面的也能消失就再往后看直到碰到一个不能消失的终结符为止。类比排队时前面的人突然消失了你就得看再后面那个人是谁。五、实战演示文法 G[S]S → [L] | a L → L, S | S求 FIRST(S)看 S 的产生式S → a箭头右边第一个是终结符a→a ∈ FIRST(S)S → [L]箭头右边第一个是终结符[→[ ∈ FIRST(S)结果FIRST(S) { a, [ }常见错误把]也算进去]在[L]中排在最后面是车尾FIRST 只管排头兵车尾不归它管]属于 FOLLOW 集合的管辖范围六、避坑指南FIRST 只管第一个字符不管中间和末尾的字符。看到产生式箭头右边眼睛只盯最左边那个符号。终结符直接收录非终结符才需要递归查找。后面的符号除非前面的都能变空ε否则一律不看。左递归如L → L, S不影响 FIRST因为递归展开后最左边的符号还是由基础情况决定的。七、与其他集合的关系预览集合管什么口诀FIRST推导出的句子的第一个终结符看排头兵FOLLOW某个非终结符后面紧跟的终结符看屁股后面SELECT决定用哪条产生式的依据FIRST FOLLOW 的组合八、做题流程总结求 FIRST(X) 1. 找出 X 的所有产生式 2. 对每条产生式看箭头右边第一个符号 - 是终结符 → 直接加入 FIRST(X) - 是非终结符 → 递归求它的 FIRST加入 FIRST(X) - 能推导出 ε → 继续看第二个符号重复上述步骤 3. 所有产生式都看完收集完毕本质就是FIRST 集合 从某个符号出发所有可能推导出的句子中站在最前面的终结符的集合。记住排头兵三个字这章的题就是送分题。

相关新闻

最新新闻

【好靶场】PHP反序列化绕过

【好靶场】PHP反序列化绕过

【好靶场】PHP反序列化绕过【好靶场】PHP反序列化绕过:__wakeup 绕过与命令执行前置知识一、题目源码二、正常 Payload 为什么会失败三、绕过思路四、验证命令执行1. 本地 PHP 7.3.4 检测结果2. 授权靶场页面回显五、字符串长度一定要写对六、查找 Flag七、漏洞原理…

2026/8/25 15:34:46
谈谈Flutter中的Key(二)——常用的Key

谈谈Flutter中的Key(二)——常用的Key

前言在上一篇文章中,我们探讨了 Flutter 中 Key 的基本概念、作用以及为什么需要 Key。本文将继续深入,重点介绍 Flutter 开发中几种常用且重要的 Key 类型,包括它们的适用场景、使用方式以及背后的原理。1.Key的继承体系Key (抽象类) ├──…

2026/8/25 15:34:46
Go实战:实时推送系统设计

Go实战:实时推送系统设计

TL;DR 核心要点速览 Go适合后端API、微服务、云原生、CLI工具 高并发秒杀用Redis原子操作+限流 分布式锁用Redis SETNX或etcd租约 分布式事务用Saga模式或事件溯源 Go微服务通信用gRPC或消息队列 本篇是Go项目实战模块,含完整可运行项目 摘要:本文详细介绍实时推送系统设计,涵…

2026/8/25 15:34:46
Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战

Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战

Python HTTPX 超时不是一个数字:连接池、重试与可观测性排障实战 摘要:HTTP 请求“超时”并不只代表服务器慢。HTTPX 将超时拆为连接、读取、写入和连接池等待四类。本文用本地慢响应服务器稳定复现 ReadTimeout 与 PoolTimeout,再给出连接池…

2026/8/25 15:34:46
MSSQL 手册

MSSQL 手册

1、角色和权限1.1、固定数据库角色权限对照表角色名称核心权限典型应用场景重要备注db_accessadmin可以添加或删除数据库用户的访问权限(即管理数据库用户)。负责管理数据库用户账号的管理员。不能授予服务器级别权限,仅限当前数据库的用户管…

2026/8/25 15:34:46
基于springboot的云南中草药知识普及管理系统网站源码+文档

基于springboot的云南中草药知识普及管理系统网站源码+文档

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/25 15:29:46