
将正规文法转换为正规式,并生成对应的正规式NFA(包含完整可运行代码)。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
(1)采用规范化的文法规则:该程序的数据结构采用字符串类型的变量来存储数据,首先,程序读取的是3型文法,即正规文法。由于前一个实验已经完成了对文法的检验功能,因此在此不再重复执行该步骤。此外,程序还读取一个标志位(flag),当flag值为0时,表示文法为左线性;当flag值为1时,则表示文法为右线性。随后,程序对读取的文法进行第一次分类,即将正规式左部相同的元素归类在一起,并利用vector容器存储这些对象。接着,程序对所有不依赖于外部元素的元素进行整合操作。最后,根据整合后的表达式对其他的正规文法进行转换处理,从而获得最终的转换结果。 (2)正规式到NFA图的转换:该程序包含多种数据结构,但其核心目标是构建并存储转化后的NFA图的单元格(cell)。每个单元格中包含起点、终点、边的数量以及边集合等信息。首先,程序读取输入的正规文法并对其合法性进行验证。然后,在正规式中插入连接符号“+”,将其转换为后缀表达式。接下来,根据后缀表达式对每一个运算符和操作数进行处理,所使用的数据结构为cell类型的堆栈。处理完毕后,从最终堆栈中取出唯一的目的单元格元素并将其出栈。最后将这个单元格以二维数组的形式呈现给用户。输入文件样例:a($|((a|d)(a|d)*))
全部评论 (0)
还没有任何评论哟~


