首页 > 其他分享 >实验3:文法问题处理器

实验3:文法问题处理器

时间:2022-11-01 14:12:29浏览次数:58  
标签:文法 规则 用户 因子 实验 处理器 公共 消除

一、实验内容

设计一个应用软件,以实现文法的化简及各种问题的处理。

二、实验要求

  1. 必做内容

    1. 系统需要提供一个文法编辑界面,让用户输入文法规则(可保存、打开存有文法规则的文件)

    2. 化简文法:检查文法是否存在有害规则和多余规则并将其去除。系统应该提供窗口以便用户可以查看文法化简后的结果。

    3. 检查该文法是否存在着左公共因子(可能包含直接和间接的情况)。如果存在,则消除该文法的左公共因子。系统应该提供窗口以便用户可以查看消除左公共因子的结果。【从某个非终结符号开始只需要消除做4次推导内就可以发现的左公共因子,如果超过4次推导还存在左公共因子就直接产生出错处理即可】

    4. 检查该文法是否存在着左递归(可能包含直接和间接的情况),如果存在,则消除该文法的左递归。系统应该提供窗口以便用户可以查看消除左递归后的结果。

    5. 求出经过前面步骤处理好的文法各非终结符号的first集合与follow集合,并提供窗口以便用户可以查看这些集合结果。【可以采用表格的形式呈现】

    6. 如果输入的文法规则是线性规则(左线性规则或右线性规则),则将该文法对应的有穷自动机生成出来,系统应该提供界面让用户可以查看转换得到的有穷自动机(可以使用状态表的方法来呈现)。【注意:如果该有穷自动机是NFA,还需要把该NFA转为DFA并呈现,并再进行DFA的最小化并呈现,你可以使用实验二的算法来完成】

    7. 软件的操作界面应该是windows界面

    8. 应该书写完善的软件文档

  2. 选做内容

    1. 对于必做内容中的第(6)个要求,使用画图的算法设计把DFA图,NFA图等直观图示呈现在窗口中。

注意事项

文法规则为了处理上的简单,输入时可以只输入单一个大写字母作为非终结符号,单一个小写字母作为终结符号,用@表示空串。

如,可以这样输入:

E->E+T
T->a

补充说明

4次推导才发现左公共因子的举例:

S->Aa | Ba
A->Cb
B->Dc
C->Ed
D->Fe
E->fe
F->fd

如果超过4次才发现的左公共因子的就产生出错,如果少于等于4次推导的就要把左公共因子进行消除。

标签:文法,规则,用户,因子,实验,处理器,公共,消除
From: https://www.cnblogs.com/nicole-liu/p/16847488.html

相关文章

  • 实验6:开源控制器实践——RYU
    实验6:开源控制器实践——RYU一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环......
  • Java实验报告——教务系统(继承)
    一、实验目的使学生进一步了解Java面向对象中继承、封装、抽象、重载的运用。二、实验内容1、设计教师、学生、课程这三个教务系统中的对象类,包括这些对象的属性和方法。实......
  • Java实验报告-计算器(AWT图形界面)
     一、实验目的掌握图形用户界面的设计与实现。二、实验内容使用图形界面制作一个计算器并实现相应功能。三、实验步骤publicclassfirstappextendsAppletimplementsAc......
  • Java实验报告--计时器(线程)
    一、实验目的了解Java线程的使用方法二、实验内容1、使用多线程制作一计时器,要求实现文本框输入一个时间(分),计时结束后提示。2、系统通过点击按钮可实现启动计时、暂停、结束......
  • 实验7:基于REST API的SDN北向应用实践
    (一)基本要求1:编写Python程序,调用OpenDaylight的北向接口实现以下功能(1)利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight;建立拓扑sudomn--customtopo.py--to......
  • 实验7:基于REST API的SDN北向应用实践
    一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环境下载虚拟机软件OracleVisualBox或V......
  • 实验二:逻辑回归算法实验
    博客班级班级链接作业要求作业链接学号181613146【实验目的】理解逻辑回归算法原理,掌握逻辑回归算法框架;理解逻辑回归的sigmoid函数;理解逻辑回归的损......
  • 实验7:基于REST API的SDN北向应用实践
    ......
  • 实验7:基于REST API的SDN北向应用实践
    实验7:基于RESTAPI的SDN北向应用实践一、实验目的能够编写程序调用OpenDaylightRESTAPI实现特定网络功能;能够编写程序调用RyuRESTAPI实现特定网络功能。二、实验环......
  • 实验一:线性表的存储结构定义及基本操作
    (一)基本实验内容(顺序表):建立顺序表,完成顺序表的基本操作:初始化、插入、删除、逆转、输出、销毁、置空表、求表长、查找元素、判线性表是否为空、实现顺序表元素的逆转......