⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 re2enfa.java

📁 Regular Expression to Epsilon-NFA
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    		col++;
    		if(col == 5){
    			 col=0;
    			 row++;
    		}	 
    		i++;
    	}
    	
    	
    	//////////////////////////////////////////
		
   	}
   	public int[][] getArray(){
   		return DFA;
   	}
   	public String functionRE(String RE){
   		return 	"<text font-size=\"18\" style=\"fill:#150517;\" x=\""+(initx)+"\" y=\""+(inity+200)+"\">"+RE+"</text>\"\n";		

   	}
   	public String drawCircle(int[][] a){
   		circle ="";
   	

   	//	circle = 	"<circle cx=\""+(initx)+"\" cy=\""+inity+"\" r=\"20\" stroke=\"black\" stroke-width=\"1\" fill=\"pink\"/>\n"
	//			 		+ 	"<text font-size=\"18\" style=\"fill:#150517;\" x=\""+(initx-9)+"\" y=\""+(inity+6)+"\">"+"S"+(0)+"</text>\"\n";		
   			
   		for(int i=0;i<a.length;i++){
   			if( a[i][0] != 0){
   				 circle += 	"<circle cx=\""+(initx+(a[i][0]-1)*100)+"\" cy=\""+inity+"\" r=\"20\" stroke=\"black\" stroke-width=\"1\" fill=\"pink\"/>\n"
				 		+ 	"<text font-size=\"18\" style=\"fill:#150517;\" x=\""+(initx+(a[i][0]-1)*100-9)+"\" y=\""+(inity+6)+"\">"+"S"+(a[i][0]-1)+"</text>\"\n";		
   			
   				for(int j=0 ; j<a.length ;j++){
   					if(a[j][1] ==1){
   					//	System.out.println("final :"+a[j][0]+" :"+j);
   					 	circle += 	"<circle cx=\""+(initx+(a[j][0]-1)*100)+"\" cy=\""+inity+"\" r=\"20\" stroke=\"black\" stroke-width=\"1\" fill=\"pink\"/>\n"
								+	"<circle cx=\""+(initx+(a[j][0]-1)*100)+"\" cy=\""+inity+"\" r=\"16\" stroke=\"black\" stroke-width=\"1\" fill=\"white\"/>\n"
				 				+ 	"<text font-size=\"18\" style=\"fill:#150517;\" x=\""+(initx+(a[j][0]-1)*100-9)+"\" y=\""+(inity+6)+"\">"+"S"+(a[j][0]-1)+"</text>\"\n";		

   					}
   				}
   			}
   		
   		}
   			
   		
   		return circle;
   	}
   	public String drawTransport(int[][] a){
   		transport ="";
   		int cross=0;
   		int n =0;
   		transport ="<line  x1=\""+(5)+"\" y1=\""+(inity)
   							+"\" x2=\""+(30)+"\" y2=\""+(inity)
   							+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n";
   		for(int i=0; i<a.length ; i++){
		
			
   			/////case  input 0 ///
   			if(a[i][2] != 0){
   			
   				if(a[i][0]<a[i][2] ){ 				
   					cross =a[i][2] -a[i][0];
   					if(cross == 1){
   						if(a[i][2] == a[i][3] ){
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100+cx(cross))+"\" y1=\""+(inity-cy(cross))
   								+"\" x2=\""+(initx+(a[i][2]-1)*100-cx(cross))+"\" y2=\""+(inity-cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-5)+"\">"
   								+"0/1"+"</text>\"\n";
   							
   						}else{
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100+cx(cross))+"\" y1=\""+(inity-cy(cross))
   								+"\" x2=\""+(initx+(a[i][2]-1)*100-cx(cross))+"\" y2=\""+(inity-cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-5)+"\">"
   								+0+"</text>\"\n";	
   						}
	
   					}else{
   						if(a[i][2] == a[i][3] ){
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100+cx(cross))+" "+(inity-cy(cross))
   								+" C"+(initx+(a[i][0]-1)*100+cross*40)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][0]-1)*100+cross*60)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][2]-1)*100-cx(cross))+" "+(inity-cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-cross*16-16)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100+cx(cross))+" "+(inity-cy(cross))
   								+" C"+(initx+(a[i][0]-1)*100+cross*40)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][0]-1)*100+cross*60)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][2]-1)*100-cx(cross))+" "+(inity-cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-cross*16-16)+"\">"
   								+0+"</text>\"\n";
   						}
	
   					}
   				}
   				if(a[i][0]>a[i][2] ){ 				
   					cross =a[i][0]-a[i][2];
   					if(cross == 1){
   						if(a[i][2] == a[i][3] ){
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100-cx(cross))+"\" y1=\""+(inity+cy(cross))
   								+"\" x2=\""+(initx+(a[i][2]-1)*100+cx(cross))+"\" y2=\""+(inity+cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][2]-1)*100+cross*48)+"\" y=\""+(inity+10)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100-cx(cross))+"\" y1=\""+(inity+cy(cross))
   								+"\" x2=\""+(initx+(a[i][2]-1)*100+cx(cross))+"\" y2=\""+(inity+cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][2]-1)*100+cross*48)+"\" y=\""+(inity+10)+"\">"
   								+0+"</text>\"\n";	
   						}
	
   					}else{
   						if(a[i][2] == a[i][3] ){
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(cross))+" "+(inity+cy(cross))
   								+" C"+(initx+(a[i][2]-1)*100+cross*60)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][2]-1)*100+cross*40)+" "+(inity+cross*20+20)+" "
	   							+(initx+(a[i][2]-1)*100+cx(cross))+" "+(inity+cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][2]-1)*100+cross*48)+"\" y=\""+(inity+cross*16+21)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(cross))+" "+(inity+cy(cross))
   								+" C"+(initx+(a[i][2]-1)*100+cross*60)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][2]-1)*100+cross*40)+" "+(inity+cross*20+20)+" "
	   							+(initx+(a[i][2]-1)*100+cx(cross))+" "+(inity+cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][2]-1)*100+cross*48)+"\" y=\""+(inity+cross*16+21)+"\">"
   								+0+"</text>\"\n";
   						}
   					}
   				}
   			}
   			
   			if(a[i][3] != 0){
   			/////case input 1 ////
   				if(a[i][0]<a[i][3] ){ 				
	   				cross =a[i][3] -a[i][0];
   					if(cross == 1){
   						if(a[i][2] == a[i][3] ){
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100+cx(cross))+"\" y1=\""+(inity-cy(cross))
   								+"\" x2=\""+(initx+(a[i][3]-1)*100-cx(cross))+"\" y2=\""+(inity-cy(cross))
	   							+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
	   							+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-5)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100+cx(cross))+"\" y1=\""+(inity-cy(cross))
   								+"\" x2=\""+(initx+(a[i][3]-1)*100-cx(cross))+"\" y2=\""+(inity-cy(cross))
	   							+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
	   							+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-5)+"\">"
   								+1+"</text>\"\n";
   						}
	
   					}else{
   						if(a[i][2] == a[i][3] ){
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100+cx(cross))+" "+(inity-cy(cross))
	   							+" C"+(initx+(a[i][0]-1)*100+cross*40)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][0]-1)*100+cross*60)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][3]-1)*100-cx(cross))+" "+(inity-cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-cross*16-16)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100+cx(cross))+" "+(inity-cy(cross))
	   							+" C"+(initx+(a[i][0]-1)*100+cross*40)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][0]-1)*100+cross*60)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][3]-1)*100-cx(cross))+" "+(inity-cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-cross*16-16)+"\">"
   								+1+"</text>\"\n";
   						}
   					}
   				}
	   			if(a[i][0]>a[i][3] ){ 				
   					cross =a[i][0]-a[i][3];
   					if(cross == 1){
   						if(a[i][2] == a[i][3] ){
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100-cx(cross))+"\" y1=\""+(inity+cy(cross))
   								+"\" x2=\""+(initx+(a[i][3]-1)*100+cx(cross))+"\" y2=\""+(inity+cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][3]-1)*100+cross*48)+"\" y=\""+(inity+10)+"\">"
	   							+"0/1"+"</text>\"\n";
   						}else{
   							
   							transport +="<line  x1=\""+(initx+(a[i][0]-1)*100-cx(cross))+"\" y1=\""+(inity+cy(cross))
   								+"\" x2=\""+(initx+(a[i][3]-1)*100+cx(cross))+"\" y2=\""+(inity+cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][3]-1)*100+cross*48)+"\" y=\""+(inity+10)+"\">"
	   							+1+"</text>\"\n";
   						}
   					}else{
   						if(a[i][2] == a[i][3] ){
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(cross))+" "+(inity+cy(cross))
   								+" C"+(initx+(a[i][3]-1)*100+cross*60)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][3]-1)*100+cross*40)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][3]-1)*100+cx(cross))+" "+(inity+cy(cross))
	   							+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][3]-1)*100+cross*48)+"\" y=\""+(inity+cross*16+21)+"\">"
   								+"0/1"+"</text>\"\n";
   						}else{
   							transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(cross))+" "+(inity+cy(cross))
   								+" C"+(initx+(a[i][3]-1)*100+cross*60)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][3]-1)*100+cross*40)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][3]-1)*100+cx(cross))+" "+(inity+cy(cross))
	   							+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][3]-1)*100+cross*48)+"\" y=\""+(inity+cross*16+21)+"\">"
   								+1+"</text>\"\n";
   						}
   					}
   				}
   			}
   			
   			if(a[i][4] != 0){
   			
   			 /// case input = epsilon ///
   				if(a[i][0]<a[i][4] ){ 				
   					cross =a[i][4] -a[i][0];
   					if(cross == 1){
   						transport +="<line  x1=\""+(initx+(a[i][0]-1)*100+cx(cross))+"\" y1=\""+(inity-cy(cross))
   								+"\" x2=\""+(initx+(a[i][4]-1)*100-cx(cross))+"\" y2=\""+(inity-cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"12\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-5)+"\">"
   								+"e"+"</text>\"\n";
	
   					}else{
   						transport +="<path d=\"M"+(initx+(a[i][0]-1)*100+cx(cross))+" "+(inity-cy(cross))
   								+" C"+(initx+(a[i][0]-1)*100+cross*40)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][0]-1)*100+cross*60)+" "+(inity-cross*20-20)+" "
   								+(initx+(a[i][4]-1)*100-cx(cross))+" "+(inity-cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"12\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100+cross*48)+"\" y=\""+(inity-cross*16-16)+"\">"
   								+"e"+"</text>\"\n";
	
   					}
   				}
   				if(a[i][0]>a[i][4] ){ 				
   					cross =a[i][0]-a[i][4];
   					if(cross == 1){
   						transport +="<line  x1=\""+(initx+(a[i][0]-1)*100-cx(cross))+"\" y1=\""+(inity+cy(cross))
   								+"\" x2=\""+(initx+(a[i][4]-1)*100+cx(cross))+"\" y2=\""+(inity+cy(cross))
   								+"\" style=\"stroke-width:1; stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"12\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][4]-1)*100+cross*48)+"\" y=\""+(inity+10)+"\">"
   								+"e"+"</text>\"\n";
	
   					}else{
   						transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(cross))+" "+(inity+cy(cross))
   								+" C"+(initx+(a[i][4]-1)*100+cross*60)+" "+(inity+cross*20+20)+" "
   								+(initx+(a[i][4]-1)*100+cross*40)+" "+(inity+cross*20+20)+" "
	   							+(initx+(a[i][4]-1)*100+cx(cross))+" "+(inity+cy(cross))
   								+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n"
   								+"<text font-size=\"12\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][4]-1)*100+cross*48)+"\" y=\""+(inity+cross*16+21)+"\">"
   								+"e"+"</text>\"\n";
   					}
   				}
   			}
   			// case state same case
   			if(a[i][0]==a[i][2] || a[i][0]==a[i][3]){
   				transport +="<path d=\"M"+(initx+(a[i][0]-1)*100-cx(7))+" "+(inity-20)
   							+" C"+(initx+(a[i][0]-1)*100-20)+" "+(inity-40)+" "
   							+(initx+(a[i][0]-1)*100+20)+" "+(inity-40)+" "
   							+(initx+(a[i][0]-1)*100+cx(7))+" "+(inity-20)
   							+"\" style=\"fill:none;stroke-width:1;stroke:black;marker-end:url(#transport)\"/>\n";
   				if(a[i][0] == a[i][2] && a[i][0]== a[i][3]){
   					transport +="<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100-4)+"\" y=\""+(inity-37)+"\">"
   								+"0/1"+"</text>\"\n";
   				}else if(a[i][0] == a[i][2]){
   					transport +="<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100-2)+"\" y=\""+(inity-37)+"\">"
   								+"0"+"</text>\"\n";
   				}else{
   						transport +="<text font-size=\"10\" style=\"fill:darkred;\" x=\""
   								+(initx+(a[i][0]-1)*100-2)+"\" y=\""+(inity-37)+"\">"
   								+"1"+"</text>\"\n";
   				}  			
   			}	
   		}	
   		return transport;	
   	}
   	public double cx(int p){
   		if(p>7){
   			p = 7%p;
   		}
   		px= 20*Math.cos(Math.PI*p/16);
   
   		return px;
   	}
   	public double cy(int p){
   		if(p >7){
   			p = 7%p;
   		}
   		py =20*Math.sin(Math.PI*p/16);
   		return py;
   	}
   	public void write(String filePath, String text) {
        File file = new File(filePath);
        FileWriter fileWriter = null;
        try {
            fileWriter = new FileWriter(file);
            fileWriter.write(text);

            fileWriter.flush();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        finally {
            if (fileWriter != null) {
                try {
                    fileWriter.close();
                }
                catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -