ImageVerifierCode 换一换
格式:DOCX , 页数:68 ,大小:273.99KB ,
资源ID:18575370      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18575370.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(正规式NFADFAMFA的转换文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

正规式NFADFAMFA的转换文档格式.docx

1、也可以点击打开按钮,选择一个格式符合规范的NFA文件,同时激活NFA转为DFA的功能;也可以对得到的NFA进行保存3、NFA转为DFA对第一个文本框中的NFA,根据算法,将其转换为DFA,得出开始符号集、终结符号集以及符号集,并激活DFA转为MFA的功能;也可以点击打开按钮,选择一个格式符合规范的DFA文件,同时激活DFA转为MFA的功能;也可以对得到的DFA进行保存4、DFA转为MFA对第二个文本框中的DFA,根据算法,将其转换为MFA,得出开始符号集、终结符号集以及符号集;也可以点击打开按钮,选择一个格式符合规范MFA文件;也可以对得到的MFA进行保存四、主要数据结构介绍1、自定义一个Ja

2、vaBean,这个类里只有三个属性,节点的开始符号,接受符号,终结符号,并有他们的get()、set()方法,将类名定义为Node2、整个程序涉及到的NFA、DFA、MFA都存放在ArrayList中,每次通过迭代器Iterator进行迭代3、在正规式转为NFA时,将创建一个开始符号栈和一个终结符号栈,分别用来存储开始符号和终结符号4、在NFA转换为DFA时,创建一个对象数组Object2,每个数组单元第一列为ArrayList,存放的是节点号,第二列是一个Boolean,标记该状态T是否被访问过5、在DFA转换为MFA时,创建一个对象数组Object,每个数组单元为ArrayList,存放的

3、是每次划分的节点信息五、主要模块算法介绍将输入的正规式使用toCharArray()转换成一个一个字符,然后对字符进行处理,主要是验证左右括号是否匹配正确,以及”|”,”.”,”*”等符号位置是否合法,输入的表达式中是否含有非法字符对经过验证的正规式进行一个字符一个字符的判断,其中”*”的优先级最高,其次是”.”,最后是”|”。在转换过程中,构造两个栈,一个栈是开始符号栈,用来存放创建的开始符号,一个是终结符号栈,用来存放创建的终结符号。通过对”|”,”.”,”*”优先级的的不同,对两个栈进行不同的处理,将产生的结点存入ArrayList中将从第一个文本框中读出的NFA节点信息存入ArrayL

4、ist,由迭代器进行迭代,算法的流程如下图所示:化简DFA的基本思想是指导它的状态分成一些互不相交的子集,每一个子集中的状态都不是等价的,不同子集中的状态可以由某个输入串来区别,最后将不能区别的每个子集用一个状态来做代表,这种方法称为“分割法”。具体过程是:(1)将M的所有状态分成两个子集终态集和非终态集;(2)考察每一个子集,若发现某子集中的状态不等价,将其划分为两个集合;(3)重复第(2)步,继续考察已得到的每一个子集,直到没有任何一个子集需要继续划分为止。这时DFA的状态被分成若干个互不相交的子集。(4)从每个子集中选出一个状态做代表即可得到最简的DFA。六、程序实现环境及使用说明本次实

5、验采用Eclipse进行代码的编写、编译及运行;编写语言为java语言;程序的运行环境为jdk1.8;系统为windows8.1七、实验测试用例设计说明(1)输入”,这是一个错误的输入(2)输入”ab|b”,这是一个正确的输入(1)输入”ab|b”,这是一个不含闭包的例子(2)输入”(a*|b)*”,这是一个含有闭包的例子八、实验结果测试情况九、小组对实验结果的自我评价通过这次实验,我对正规式、NFA、DFA、MFA有了一定的了解,进一步的巩固了这部分的知识。懂得了他们之间转化的原理。在编程过程中,遇到了不少的问题,在同学的帮助下,问题一步一步的得到了解决。同时,实验期间,老师也对程序进行了测

6、试评价,发现了一些错误,比如,在将正规式转为NFA时,连接运算符与或运算符之间的处理出现了一些问题;还有,在最后将DFA转为MFA时,在MFA中出现了没有对相同的两项进行冗余处理。这些问题也在实验后期进行了一一解决。由于编程能力和时间的不足,这个转换器还有待完善,可能还有没有测试出来的错误。对于出错处理也考虑得不够周到。望老师多多指教。十、任课教师对实验结果的评分源码FrameView.javapackage view;import java.awt.BorderLayout;import java.awt.Event;import java.awt.FileDialog;import jav

7、a.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.ScrollPane;import java.awt.datatransfer.Clipboard;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.StringSelection;import java.awt.datatransfer.Transferable;import java.awt.event.ActionEvent;import j

8、ava.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileRea

9、der;import java.io.FileWriter;import java.io.IOException;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.JT

10、extArea;import javax.swing.KeyStroke;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;import javax.swing.event.UndoableEditEvent;import javax.swing.event.UndoableEditListener;import javax.swing.undo.UndoManager;public class FrameView extends JFrame implements ActionLi

11、stener, DocumentListener, UndoableEditListener JFrame f = new JFrame(词法分析器); ScrollPane jspa = new ScrollPane(); ScrollPane jspb = new ScrollPane(); ScrollPane jspc = new ScrollPane(); JPopupMenu pop = new JPopupMenu(); JTextArea ta = new JTextArea(); JTextArea tb = new JTextArea(); JTextArea tc = n

12、ew JTextArea(); JPanel pa = new JPanel(); JPanel pb = new JPanel(); JOptionPane jop = new JOptionPane(); UndoManager um = new UndoManager(); JMenuBar bar = new JMenuBar(); JMenu file = new JMenu(文件 JMenu edit = new JMenu(编辑 JMenu analysis = new JMenu(词法分析 JMenu help = new JMenu(帮助 JMenuItem open = n

13、ew JMenuItem(打开 JMenuItem save = new JMenuItem(保存 JMenuItem saveNew = new JMenuItem(另存为 JMenuItem exit = new JMenuItem(退出 JMenuItem back = new JMenuItem(撤销 JMenuItem cut = new JMenuItem(剪切 JMenuItem copy = new JMenuItem(复制 JMenuItem paste = new JMenuItem(粘贴 JMenuItem del = new JMenuItem(删除 JMenuItem

14、 all = new JMenuItem(全选 JMenuItem lexical = new JMenuItem( JMenuItem nfadfamfa = new JMenuItem(NFA_DFA_MFA JMenuItem sHelp = new JMenuItem(查看帮助 JMenuItem about = new JMenuItem(关于 JMenuItem back1 = new JMenuItem( JMenuItem cut1 = new JMenuItem( JMenuItem copy1 = new JMenuItem( JMenuItem paste1 = new

15、JMenuItem( JMenuItem del1 = new JMenuItem( JMenuItem all1 = new JMenuItem( FileDialog openDia = new FileDialog(f, , FileDialog.LOAD); FileDialog saveDia = new FileDialog(f, , FileDialog.SAVE); AboutFile prompta; File fe; Clipboard clipboard = null; boolean isSave, change, isLine; String select; publ

16、ic FrameView() isSave = false; change = false; isLine = true; setup(); f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent we) if (isSave = false) & (change = true) Prompt dg = new Prompt(f, , true); else System.exit(0); ); ta.setFont(new Font(宋体, 0, 20); ta.setLineWrap(tru

17、e); tb.setEditable(false); tc.setEditable(false); pack(); f.setBounds(300, 100, 750, 550); f.setVisible(true); public void setup() setLayout(new BorderLayout(); f.setJMenuBar(bar); jspa.add(ta); jspb.add(tb); jspc.add(tc); pb.setLayout(new GridLayout(2, 1); pb.add(jspb); pb.add(jspc); pa.setLayout(n

18、ew GridLayout(1, 2); pa.add(jspa); pa.add(pb); f.add(pa); bar.add(file); bar.add(edit); bar.add(analysis); bar.add(help); file.add(open); file.add(save); file.add(saveNew); file.addSeparator(); file.add(exit); edit.add(back); edit.addSeparator(); edit.add(cut); edit.add(copy); edit.add(paste); edit.

19、add(del); edit.add(all); analysis.add(lexical); analysis.add(nfadfamfa); help.add(sHelp); help.add(about); pop.add(back1); pop.addSeparator(); pop.add(cut1); pop.add(copy1); pop.add(paste1); pop.add(del1); pop.add(all1); open.setMnemonic(O open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Ev

20、ent.CTRL_MASK); save.setMnemonic(S save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, saveNew.setMnemonic(A saveNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, Event.SHIFT_MASK); exit.setMnemonic(X exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, back.setMnemonic(Z back.setA

21、ccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, cut.setMnemonic( cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, copy.setMnemonic(C copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, paste.setMnemonic(V paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, del.setMnemonic(L del

22、.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0); all.setMnemonic( all.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, lexical.setMnemonic( lexical.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, nfadfamfa.setMnemonic(N nfadfamfa.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.

23、VK_N, sHelp.setMnemonic(H sHelp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, about.setMnemonic(B about.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, back1.setMnemonic( back1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, cut1.setMnemonic( cut1.setAccelerator(KeyStroke.getKeyStro

24、ke(KeyEvent.VK_X, copy1.setMnemonic( copy1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, paste1.setMnemonic( paste1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, del1.setMnemonic( del1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0); all1.setMnemonic( all1.setAccelerator(K

25、eyStroke.getKeyStroke(KeyEvent.VK_A, open.addActionListener(this); save.addActionListener(this); saveNew.addActionListener(this); exit.addActionListener(this); back.addActionListener(this); cut.addActionListener(this); copy.addActionListener(this); paste.addActionListener(this); del.addActionListene

26、r(this); all.addActionListener(this); lexical.addActionListener(this); nfadfamfa.addActionListener(this); about.addActionListener(this); sHelp.addActionListener(this); back1.addActionListener(this); cut1.addActionListener(this); copy1.addActionListener(this); paste1.addActionListener(this); del1.addActionListener(t

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1