编译原理实验 求first集和follow集1
需积分: 0 178 浏览量
更新于2022-08-08
收藏 21KB DOCX 举报
编译原理实验求first集和follow集
本资源摘要信息将为您详细介绍编译原理实验中求first集和follow集的知识点。
实验目标
本实验的目标是编程实现first集和follow集的计算,以便更好地理解和掌握编译原理中的基本概念。
输入格式
输入格式为每行输入一个产生式,左部右部中间的→用空格代替。非终结符等价于大写字母/^表示空不包含有|的产生式(即含有|的产生式已分成多个产生式)#表示输入右端的结束标记输入到文件结束,或用0 0结尾。
First 集
First集是指给定非终结符或终结符的可能的开头符号集合。计算First集需要遵循以下规则:
1. 若X∈VT,则FIRST(X)={X}。即终结符的First集就是它本身。
2. 若X∈VN,且有产生式X→a…,a∈VT,则a∈FIRST(X)。即非终结符X能推导出以终结符a开头的串,那么这个终结符a属于X的First集。
3. X→ε,则ε∈FIRST(X)。即非终结符X能推导出空符号串ε,那么空符号串ε也属于X的First集。
4. X→Y…是一个产生式且Y∈VN,则把FIRST(Y)中的所有非空符号串ε元素都加入到FIRST(X)中。
5. 若X∈VN;Y1,Y2,…,Yi∈VN,且有产生式X→Y1 Y2 … Yn;当Y1 Y2 … Yn-1都能推导出ε时,则FIRST(Y1)、FIRST(Y2)、…、FIRST(Yn-1)的所有非空元素和FIRST(Yn)包含在FIRST(X)中。
Follow 集
Follow集是指给定非终结符的可能的后续符号集合。计算Follow集需要遵循以下规则:
1. 设S为文法中开始符号,把{#}加入FOLLOW(S)中。
2. 若A→αBβ是一个产生式,则把FIRST(β)的非空元素加入FOLLOW(B)中。如果β能够推导出ε则把FOLLOW(A)也加入FOLLOW(B)中。
可能用到的数据结构
在计算First集和Follow集时,可能用到的数据结构包括:
* map:用于存储First集和Follow集的元素
* set:用于存储非终结符和终结符的集合
* vector:用于存储产生式的右部符号
* multimap:用于存储非终结符和其对应的First集和Follow集
可能用到的子功能模块
在计算First集和Follow集时,可能用到的子功能模块包括:
* 判断大小写:判断终结符与非终结符
* 判断非终结符能否推导出空
* 不考虑左递归的情况(如有左递归出现,可简单的报错处理)
* 求follow集时,右侧最后的非终结符(直接或间接)的follow需要加入该条产生式左侧非终结符的follow集中
![avatar](https://profile-avatar.csdnimg.cn/b3c5cd513d6345da8d79a4a54dd0f879_weixin_35806027.jpg!1)
行走的瓶子Yolo
- 粉丝: 37
- 资源: 342
最新资源
- 风光储超级电容混合储能系统三相LC并网仿真研究:构成、优化与并网策略探讨,风光储超级电容混合储能系统三相LC并网仿真研究:混合储能系统优化与并网逆变技术探讨,风光储超级电容混合储能HESS三相LC并网
- Matlab Simulink环境下的DAB SRC闭环仿真模型:单PWM移相控制实现输出电压调节,Matlab Simulink环境下的DAB SRC闭环仿真模型:单PWM移相控制实现输出电压调节
- 基于LabVIEW 2018的六通道测振仪源代码:IEPE振动信号的采集、分析与导出系统,基于LabVIEW 2018的多通道高精度测振仪源代码:支持IEPE振动加速度传感器信号采集与分析,具备6路自
- 三机九节点风电渗透率仿真模型探究电力系统仿真与设计返回性能体验之旅,三机九节点风电渗透率仿真模型探索与研究:基于Matlab Simulink的动态性能探究,三机九节点电力系统Simulink仿真模
- 基于双孔隙介质理论的comsol顺层钻孔瓦斯抽采与瓦斯吸附解吸数值模拟模型研究,双孔隙介质模型中顺层钻孔瓦斯抽采的数值模拟-考虑瓦斯吸附解吸作用影响的研究,comsol顺层钻孔瓦斯抽采,考虑瓦斯吸附
- 一个用 c 语言编写的迷宫求解程序源码
- Video-2024-11-19晚上-三阶段总结课.wmv
- Matlab仿真研究:多个光纤束按特定排列方式的拉锥合束及空间复用功能,Matlab模拟:多个光纤的精确拉锥排列及空间复用合束技术,Matlab光纤束拉锥模拟 多个光纤按照特定排列方式进行拉锥,实现合
- Matlab Simulink下的光伏、燃料电池与蓄电池单相并网控制策略:MPPT控制光伏,DC-DC变换与过充过放保护机制研究,光伏+燃料电池结合蓄电池单相并网仿真:MPPT控制及智能充电管理,ma
- qt开发,五子棋游戏,实现人机对战和本地游戏
- 无人机系统用于立体货架盘点的技术解析与应用要点
- 33烦烦烦纷纷而无法分为氛围
- Matlab求解非线性传输方程:获取光谱图及时域光场分布与电离模式下的解析,Matlab求解非线性传输方程:获取光谱图及时域光场分布的电离模式求解方法,Matlab 非线性传输方程求解 获取光谱图
- 基于matlab2018b的PMSM永磁同步电机参数辨识仿真:高效算法实践,基于matlab2018b的PMSM永磁同步电机参数辨识仿真:定子电阻、DQ电感与转子磁链高精度辨识,PMSM永磁同步电机参
- 原研控SSD2505方案全套资源公开:原理图、PCB设计图和源代码集成共享,原研控SSD2505方案全套资源包:原理图、PCB设计图和源代码全解析,原研控SSD2505方案,提供原理图+PCB+源代码
- Matlab模拟计算光纤传输特性:V参数分析、模式数量与分布图绘制、模式能量占比及有效折射率与色散系数计算,Matlab模拟计算光纤传输特性:V参数分析、模式数量与分布图绘制、模式能量占比及有效折射率