编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)
一.首符号集(First())
技巧:找最左边可能出现的终结符
例:
1.First(E)
E->T
,最左边为T,又因为T->F
,最左边为F,F->(E)|i,则最左边为{(,i }
2.First(T):只需要看符号串最左边的符号,即=First(T)
T->F
,最左边为F,F->(E)|i,则最左边为{(,i }
3.First((E)):也只需要看最左边的
First((E))={ ( }
4.First(i):终结符的first集就是它本身
First(i)={i}
其他以此类推:
二.后跟符号集(Follow()):只针对非终结符
技巧:看”->“的右边,找出非终结符后面所能跟随的所有终结符
1. # Follow (S),S为识别符号,即 ”#“要放在开始符号"S"的 Follow集中
2.若存在规则U->xWy,First(y)-{}(空串)
Follow(W)
3.若存在规则U->xW或U->xWy,其中y能广义推导出(空串),则Follow(U)
Follow(W)
Follow(E)
首先E是开始符号,Follow(E)={#}
在"->"右边找E,看E后面跟的所有终结符号,这里F->(E)| i,E的右边为")",终结符的First集就是它本事(对应第二条规则)
所以Follow(E)={#,)}
Follow(T)
首先找”->“的右边,看T后面跟的所有终结符号
E->T
![]()
->+T
|
T后面跟的是
,
的First集是{+,
},将
去掉,最后得到{+},又因为
可以推导出
空串(对应第三条规则),就要把
E->T
![]()
->+T
|
”->“左边的E和
的follow集写上
Follow(T)={+,#,)}
Follow(E‘)
首先找”->“的右边,看E’后面跟的所有终结符号
E->T
![]()
->+T
|
后面没有符号,
的follow集就是”->“左边E和
的follow集
Follow(
)={#,)}
以此类推:
总结
在"->"右边寻找需要求的非终结符,如果非终结符后面是终结符号,直接放到follow集中,如果非终结符后面是非终结符,就看非终结符的first集内容是什么,如果有
(空串)
1.那么将空串去掉写入follow集中
2.并且将”->“左边的非终结集的follow集也写入该follow集中
3. 选择符号集:Select(A->)
约束:有两条或两条以上产生式才算可选集
E->TE' 不用算可选集
E‘->+TE'|
算可选集
规则:
Select (E'->+TE')
根据规则,不能广义推导出
,那么运用第一条规则
Select (E'->+TE')={+}
Select(E'->)
运用第二条规则,”->“右边的首符号集-空串(这里-
后为空集),再并上E’的follow集
Select(E'->
) ={#,)}
Select(T'->+FT')
”+"号的首符号集就是”+“,所以
Select(T'->+FT')={+}
以此类推:
相关文章:

编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)
一.首符号集(First()) 技巧:找最左边可能出现的终结符 例: 1.First(E) E->T,最左边为T,又因为T->F,最左边为F,F->(E)|i,则最左边为{(,i } 2.First(T):只需要看符号串最左…...
远程仓库地址改变后更换url
请按照以下步骤进行操作: 打开终端或命令提示符,并导航到你的本地仓库目录。运行以下命令,查看当前的远程仓库配置:git remote -v 这将显示当前的远程仓库地址。 如果远程仓库地址显示为192.168.1.178,请使用以下命…...

VR全景如何助力乡村振兴,乡村发展在哪些方面用到VR全景技术
引言: 乡村振兴是当今中国发展的重要战略,也是推动农村经济社会全面发展的关键举措。在这一过程中,虚拟现实(VR)全景技术正逐渐崭露头角,为乡村振兴提供了机遇。 一.VR全景技术的概念和应用 1…...

21.6 Python 构建ARP中间人数据包
ARP中间人攻击(ARP spoofing)是一种利用本地网络的ARP协议漏洞进行欺骗的攻击方式,攻击者会向目标主机发送虚假ARP响应包,使得目标主机的ARP缓存中的IP地址和MAC地址映射关系被篡改,从而使得目标主机将网络流量发送到攻…...

DVWA靶场SQL注入
本次注入的是DVWA靶场的SQL injection 1.判断是字符型注入还是数字型注入,构造SQL语句 1 and 12 由此可以判断出为字符型注入 2.考虑闭合方式,先随便丢一个单引号试试看看报错提示 You have an error in your SQL syntax; check the manual that cor…...

AD教程 (九)导线及NetLabel的添加
AD教程 (九)导线及NetLabel的添加 添加导线 绘制导线 点击放置,选择线,或者直接CtrlW快速绘制注意要与绘图工具中的线区别开来,导线是具有电气属性的,绘图工具中的线没有电气属性,只是辅助线绘制导线过程…...
Rust函数进阶
文章目录 函数函数中的函数lambda表达式函数作为参数 Rust系列:初步⚙所有权⚙结构体和枚举类 函数 先来回顾一下Rust中函数的创建过程,在Rust中,函数用fn声明,如有传入参数或返回值,都需要声明数据类型,…...

springboot前后端时间类型传输
springboot前后端时间类型传输 前言1.java使用时间类型java.util.Date2.java使用localDateTime 前言 springboot前后端分离项目总是需要进行时间数据类型的接受和转换,针对打代码过程中不同的类型转化做个总结 1.java使用时间类型java.util.Date springboot的项目中使用了new …...
Deepin安装英特尔AX200 Wifi驱动
谁支持我的 Linux* 驱动程序? Linux 驱动程序是上游 Linux* 内核的一部分。它们通过常规渠道、分发,或 Linux* 内核档案 提供。我们仅支持作为内核版本中一部分的驱动程序的使用。请参阅下表以了解 iwlwifi 驱动程序支持的设备的列表。 在 英特尔 Wi-Fi…...
第十九节——vue内置组件
Vue提供了一些内置的组件,这些组件可以在Vue应用中直接使用,无需额外安装或配置。以下是一些常见的Vue内置组件 一、<transition> 和 <transition-group> 1、概念 <transition> 组件用于在元素插入或移除时应用过渡效果,…...
路由器基础(二): BGP原理与配置
BGP 是边界网关协议,目前版本为BGP4, 是一种增强的距离矢量路由协议。该协议运行在不同AS 的路由器之间,用于选择AS之间花费最小的协议。BGP协议基于TCP协议,端口为179。使用面向连接的TCP 可以进行身份认证,可靠地交换路由信息。…...

【漏洞复现】Django _2.0.8_任意URL跳转漏洞(CVE-2018-14574)
感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、修复建议 说明内容漏洞编号CVE-2018-14574漏洞名称Django任意URL跳转漏洞漏洞…...

【广州华锐互动】军用飞机VR实战训练系统
随着科技的飞速发展,虚拟现实(VR)技术为军事训练带来了前所未有的机遇。军用飞机VR实战训练系统,正是在这一背景下应运而生的一种创新的训练方法。该系统利用先进的虚拟现实技术,为飞行员提供真实且逼真的模拟飞行环境,使之能够在…...

AI生图王者之战!深度体验实测,谁是真正的艺术家?
10月11日凌晨,设计软件巨头Adobe宣布推出一系列图像生成模型,其中Firefly Image 2作为新一代图像生成器,通过改善皮肤、头发、眼睛、手和身体结构增强了人体渲染质量,提供更好的色彩和改进的动态范围,并为用户提供更大…...

Spring Cloud - 手写 Gateway 源码,实现自定义局部 FilterFactory
目录 一、FilterFactory 分析 1.1、前置知识 1.2、分析源码 1.2.1、整体分析 1.2.2、源码分析 1.3、手写源码 1.3.1、基础框架 1.3.2、实现自定义局部过滤器 1.3.3、加参数的自定义局部过滤器器 一、FilterFactory 分析 1.1、前置知识 前面的学习我们知道,…...

14、Python继承和多态:基础继承、方法重写、多态的基本概念
文章目录 基础继承方法重写多态在编程语言中,特别是在面向对象编程(OOP)中,继承和多态是两个核心概念,它们提供了代码重用和接口设计的强大工具。Python 作为一种支持 OOP 的语言,也具备这些特性。 基础继承 继承是面向对象编程的一个基本概念,它允许我们定义一个类(…...
聊聊logback的StatusManager
序 本文主要研究一下logback的StatusManager StatusManager ch/qos/logback/core/status/StatusManager.java public interface StatusManager {/*** Add a new status message.* * param status*/void add(Status status);/*** Obtain a copy of the status list maintain…...

[PyTorch][chapter 61][强化学习-免模型学习1]
前言: 在现实的学习任务中,环境 其中的转移概率P,奖赏函数R 是未知的,或者状态X也是未知的 称为免模型学习(model-free learning) 目录: 1: 蒙特卡洛强化学习 2:同策略-蒙特卡洛强化学习 3&am…...
网络运维Day04-补充
文章目录 周期性计划任务周期性计划任务使用案例一案例二 周期性计划任务 在固定时间可以完成相同的任务,被称之为周期性计划任务由crond服务提供需要将定时任务,写到一个文件书写格式如下 分 时 日 月 周 任务(绝对路径)分:0-59时ÿ…...

前端埋点方式
前言: 想要了解用户在系统中所做的操作,从而得出用户在本系统中最常用的模块、在系统中停留的时间。对于了解用户的行为、分析用户的需求有很大的帮助,想实现这种需求可以通过前端埋点的方式。 埋点方式: 1.什么是埋点?…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
【WebSocket】SpringBoot项目中使用WebSocket
1. 导入坐标 如果springboot父工程没有加入websocket的起步依赖,添加它的坐标的时候需要带上版本号。 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dep…...
智能职业发展系统:AI驱动的职业规划平台技术解析
智能职业发展系统:AI驱动的职业规划平台技术解析 引言:数字时代的职业革命 在当今瞬息万变的就业市场中,传统的职业规划方法已无法满足个人和企业的需求。据统计,全球每年有超过2亿人面临职业转型困境,而企业也因此遭…...