• 大小: 200KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-05-12
  • 语言: Java
  • 标签:

资源简介

使用JAVA实现编译原理的NFA确定化为DFA的文档报告和java源代码

资源截图

代码片段和文件信息

import java.util.*;
import java.io.*;

public class NToDDemo {
public static void main(String[] args) throws IOException{
ArrayList SList=new ArrayList();//初态集
ArrayList charList=new ArrayList();//符号集
ArrayList fList=new ArrayList();//变换规则
ArrayList endList=new ArrayList();//终态集
String c;
Scanner sc=new Scanner(System.in);
//输入初态集
System.out.println(“请输入NFA的初态集并以END结束:“);
do{
c=sc.next();
SList.add(c);
}while(!c.equals(“END“));
SList.remove(“END“);
//输入符号集
System.out.println(“请输入NFA的符号集:“);
charList.add(sc.next());
charList.add(sc.next());
//输入终态集
System.out.println(“请输入NFA的终态集并以END结束:“);
do{
c=sc.next();
endList.add(c);
}while(!c.equals(“END“));
endList.remove(“END“);
//输入变换规则集
System.out.println(“请输入NFA的变换规则并以END结束(格式:如A0B):“);
do{
c=sc.next();
//判断是否终止
if(!c.equals(“END“)){
String lastchnext;
char[] temp=c.toCharArray();
last=String.valueOf(temp[0]);
ch=String.valueOf(temp[1]);
next=String.valueOf(temp[2]);
NToDDemo nt=new NToDDemo();
fList.add(nt.new Nfanode(lastchnext));
}
else break;
}while(true);
//显示
NToDDemo nt1=new NToDDemo();
Nfa N=nt1.new Nfa(SListcharListfListendList);
System.out.println(“-------------------------------------------------“);
System.out.println(“当前的NFA如下:“);
N.display();
N.NfaToDfa();
}

//创建NFA节点类,储存 状态-符号-状态 信息并设置显示格式
class Nfanode{
private String last;//当前状态
private String ch;//转换符号
private String next;//转换后的状态

public Nfanode(String lastInString chInString nextIn) {
last=lastIn;
ch=chIn;
next=nextIn;
}
public String getLast() {
return last;
}
public String getCh() {
return ch;
}
public String getNext() {
return next;
}
@Override
public String toString() {
// TODO 自动生成的方法存根
return (last+“->“+ch+next);//重写toString方法设置该类的显示格式
}

}
//创建Nfa类,储存初态集,符号集,变换规则集终态集,设置转换方法
class Nfa{
private ArrayList SList;//初态集
private ArrayList charList;//符号集
private ArrayList fList;//变换规则
private ArrayList endList;//终态集

public Nfa(ArrayList SListInArrayList charListInArrayList fListInArrayList endListIn){
SList=SListIn;
charList=charListIn;
fList=fListIn;
endList=endListIn;
}
public void display(){
System.out.println(“初态集是:“+SList);
System.out.println(“符号集是:“+charList);
System.out.println(“终态集是:“+endList);
System.out.println(“变换规则是:“);
Iterator it =fList.iterator(); 
        while(it.hasNext()) 
        {  
            Nfanode element=(Nfanode)it.next(); 
            System.out.println(element);  
        }  

}
//核心代码,NFA转化为DFA,子集法
public void NfaToDfa(){
ArrayList i=new ArrayList();
ArrayList i0=new ArrayList();
ArrayList i1=new ArrayList();
i.add(SList);
for(int j=0;j ArrayList item=(ArrayList)i.get(j);
ArrayList item0=new ArrayList();
ArrayL

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     230912  2015-10-24 18:02  NFA确定化DFA\NFA确定化为DFA.wps

     文件       6392  2015-10-24 16:20  NFA确定化DFA\NToDDemo.java

     目录          0  2015-10-24 18:02  NFA确定化DFA

----------- ---------  ---------- -----  ----

               237304                    3


评论

共有 条评论

相关资源