码农知识堂 - 1000bd
Python
PHP
JS/TS
JAVA
C/C++
C#
GO
Kotlin
Swift
day05_编译原理学习
第四章 语法分析
和
的计算和定义
定义:
被定义为
从推导得到的
串首符号
的集合(其中
是任意的文法符号)。
算法:求解
的方法:不断应用以下规则,直到没有新的终结符号或空集被加入到任何
集合中为止。
1)如果X是一个终结符号,那么
;
2) 如果X是一个非终结符,且
是一个产生式,
在
中且
在所有的
中,也就是说,
经零步或者多步推导可以得出
。如果对于所有的i= 1,2,...,k,
在
中,那么就将
加入到
.
3)如果
是一个产生式,那么将
加入到
中
例子:
具体解题思路:求解文法中所有的产生式左部的FIRST集合,只需要看每个左部的所有产生式右部的首字符A。
1. 如果A是
终结符
,那么将其加入到左部对应的
集合中。
2. 如果A是
非终结符
,那么继续求解
,并将
加入到左部对应的
集合中去。
3. 如果
,那么也将
加入其中。
注意:如果产生式的右部由“|”连接,对于"|"左右两边的句型运用上述相同的规则。
计算
的
集合
定义:
可能在某些句型中
紧跟在A右边
的终结符号的集合。
求解所有非终结符A的
集合时,不断应用以下规则,直到不再有新的终结符可以加入到任意的
集合中为止。
1) 将
(是输入右端的结束标记)放入到
集合中,其中S为文法的开始符号
2)如果存在一个产生式
,那么
中除了
之外的所有符号都在
中。
3)如果存在一个产生式
,或存在产生式
且
包含, 那么
中的所有符号都在
中.
具体解题思路:求解所有非终结符的
集合:
1. 先将结束标记
加入到开始符号
的
集中,即
= {
,...}。
2. 再将所有非终结符中
能推导出
的非终结符
列举到一个集合中。
3. 紧接着对于非终结符B,观察文法中所有产生式的右部是否存在B,如果存在,则判断B在产生式中的句型:
如果是
,直接将
加入到
中
如果是
,
则需要继续判断
是否是终结符
。
是
终结符
,那么就将其加入到
中
是
非终结符
,那么就将
加入到
中,接着
判断该非终结符是否在第二步中的非终结符集合中
:
不在则进行下一轮判断。
如果在,就将
加入到
中。
根据
和
集构造表达式文法的可选集
(day04)定义回顾:
由于各个具有相同的左部的产生式的
集不存在交集,故图片中表达式的文法是
文法。
根据表达式文法的可选集构造预测分析表
附:FIRST和FOLLOW集合的计算从定义来看较为晦涩,可以根据要点中“具体解题思路”再反复刷题和观看视频进行理解!
相关阅读:
性能优化 之 温度与电量
【Pytorch】Visualization of Feature Maps(1)
springboot水环境检测系统的设计与实现毕业设计源码041446
Postman工具之接口测试必学的几个关键点,你知道吗?
共享平台如何提高财务的分账记账效率?
凌特杯,第二届,数字音频传输。simulink matlab
【图像处理】德里奇( Deriche)边缘检测器
Redis Cluster 数据分片
聊天、会议、多媒体一体化:多平台支持的即时通讯系统 | 开源日报 No.44
Hadoop -hdfs的读写请求
原文地址:https://blog.csdn.net/m0_74985290/article/details/141905497
最新文章
攻防演习之三天拿下官网站群
数据安全治理学习——前期安全规划和安全管理体系建设
企业安全 | 企业内一次钓鱼演练准备过程
内网渗透测试 | Kerberos协议及其部分攻击手法
0day的产生 | 不懂代码的"代码审计"
安装scrcpy-client模块av模块异常,环境问题解决方案
leetcode hot100【LeetCode 279. 完全平方数】java实现
OpenWrt下安装Mosquitto
AnatoMask论文汇总
【AI日记】24.11.01 LangChain、openai api和github copilot
热门文章
十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
奉劝各位学弟学妹们,该打造你的技术影响力了!
五年了,我在 CSDN 的两个一百万。
Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
面试官都震惊,你这网络基础可以啊!
你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
心情不好的时候,用 Python 画棵樱花树送给自己吧
通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
13 万字 C 语言从入门到精通保姆级教程2021 年版
10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系
2656653265@qq.com
京ICP备2022015340号-1
正则表达式工具
cron表达式工具
密码生成工具
京公网安备 11010502049817号