亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? heng.java

?? 編譯原理課程設計LL(1)for語句設計
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package by;

import javax.swing.*;
import java.awt.*;
import java.io.*;
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.UIManager.LookAndFeelInfo;
import javax.swing.filechooser.FileFilter;

import java.util.*;

public class heng
{ 
	public static void main(String args[])
    {
    	cfFrame frame=new cfFrame();
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setVisible(true);
    	frame.setResizable(false);
    	
    }
}
class cfFrame extends JFrame 
{
	public cfFrame()
	{
		LookAndFeelInfo[] infos=UIManager.getInstalledLookAndFeels();
		setTitle("for循環");
		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
		cfPanel panel=new cfPanel();
		add(panel);
		
		
	}
	public static final int DEFAULT_WIDTH=500;
	public static final int DEFAULT_HEIGHT=550;
}
class cfPanel extends JPanel
{
	JPanel bei,center,nan;
	JButton chose,save,start,qingkong,wenfafenxi,fanyi,jieguo;
	JFileChooser chooser;
	JScrollPane scrollin,scrollout;

	JTextArea in,out;//輸入輸出文本區
	File file;
	String read,write;//保存輸入輸出
	String tj[],fzhi1[],fzhi2[],fzhi3[];//分別保存源程序中的條件表達式,和賦值語句
	int i=0,j=0,m=0;
	int k=0;
	 int temzhi1=0;//記錄賦值語句一的后綴表達式的長度
	 int temzhi2=0;//記錄賦值語句二的后綴表達式長度
	 int temzhi3=0;////記錄賦值語句三的后綴表達式長度
	//翻譯時記錄賦值語句一要翻譯的個數
	int tongji1=0;//用于記錄跳轉時候的步驟
	int tongji2=0;
	int tongji3=0;
	final int N=100;
	public int lenth1,fuzhi1,fuzhi2,fuzhi3;
	boolean tjTrue=true,fz1True=true,fz2True=true,fz3True=true;
	//String s1[],s2[],s3[],s4[];
	private final String[] operatorOffz={"+","-","*","/","(",")","=","#"};
	private final String[] operatorOftj={"(",")","=","#","<",">"};
	String matrix1[][]={{"D","","","" },
            {"iRi","","",""},
            {"","<",">","="}
};
String matrix2[][]={{"","","","","","","","","i=A"},
            {"","","","","BC","","","","BC"},
            {"+BC","-BA","","","","0","","0",""},
            {"","","","","FD","","","","FD"},
            {"0","0","*FD","/FD","","0","","0",""},
            {"","","","","(A)","","","","i"}

};
String hei1[]={"E","D","R"};
String len1[]={"i","<",">","="};
String hei2[]={"E","A","C","B","D","F"};
String len2[]={"+","-","*","/","(",")","=","#","i",};

public  cfPanel()//界面設置
	{
		bei=new JPanel();
	    center=new JPanel();
		nan=new JPanel();
		chooser=new JFileChooser();
		
	    chose =new JButton("選 源 程 序");
		save=new JButton("保 存 結 果 ");
		qingkong=new JButton("全 部 清 空");
		fanyi=new JButton("察 看 文 法");
		jieguo=new JButton("計 算 結 果");
			
		bei.add(save);
		bei.add(chose);
		bei.add(fanyi);
		
		JLabel input=new JLabel("請輸入:                      ");
		JLabel output=new JLabel("分析結果為:");
		
	    in=new JTextArea(20,20);
		out=new JTextArea(20,20);
		out.setEditable(false);
		in.setEditable(true);
					
		nan.add(input);
	    nan.add(output);
	    
	    scrollin=new JScrollPane(in);
	    scrollout=new JScrollPane(out);
		center.add(scrollin);
		center.add(scrollout);
		
		add(bei,BorderLayout.NORTH);
		add(nan,BorderLayout.SOUTH);
		add(center,BorderLayout.CENTER);
		add(qingkong,BorderLayout.EAST);
		add(jieguo,BorderLayout.EAST);	
		
		
		chose.addActionListener(new 
				ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
		    int result=chooser.showOpenDialog(getParent());
			file=chooser.getSelectedFile();
		    in.setText("");
			BufferedReader readin = null;
			if(file != null)
	        {
	            try
	            {
	                readin = new BufferedReader(new FileReader(file));
	            }
	            catch(FileNotFoundException fe)
	            {
	            	System.out.println("File Not Found");
	                return;
			     }
	            try
	            {
	                while( (read=readin.readLine())!=null)
	                {
	                    in.append(read);
	                    in.append("\n");
	                }
	            }   
	                catch(IOException ioe)
	                {
	            	in.append("讀取文件錯誤");
	                }
	                finally{
	                    try{
	                        if(readin != null)
	                            readin.close();
	                    }catch(IOException ioe2){}
	                }
		}}});
		
		save.addActionListener(new
				ActionListener()
		{
			public void actionPerformed(ActionEvent event)
			{
				int result=chooser.showSaveDialog(getParent());
				file = chooser.getSelectedFile();
				FileOutputStream fileOutStream = null;
				if(file != null)
	              {
	                  try
	                  {
	                     fileOutStream = new FileOutputStream(file);
	                  }catch(FileNotFoundException fe)
	                  {
	                	  System.out.println("File Not Found");
	                      return;
	                  }
	          write=out.getText();
	         try{
	        	
                 fileOutStream.write(write.getBytes());
             }catch(IOException ioe){
           	  in.append("寫入文件錯誤");
             }
             finally{
                 try{
                     if(fileOutStream != null)
                         fileOutStream.close();
                 }catch(IOException ioe2){}
             }
			}
		}});
		fanyi.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent q)
			{
				try
				{
				Runtime.getRuntime().exec("cmd /c start keshe\\help.doc");
			    }
				catch(Exception e)
				{
					
				}
				}
			});
		jieguo.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent q)
			{
				tjTrue=true;
				fz1True=true;
				fz2True=true;
				fenxi();
				
			}
		});
		qingkong.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent q)
			{
				in.setText("");//清空兩個文本框
				out.setText("");
			}
		});
	}

public void fenxi()
    {
	  int pan=0;//pan是用來表示把當前字符放到哪一個部分中,fen是用來匹配括號的
	  int i=0,j=0,m=0,k=0;//分別表示條件,賦值語句一,語句二的長度
	  fzhi1=new String[N] ;//存放第一個賦值語句部分
	  fzhi2=new String[N] ;//存放第二個賦值語句部分
	  fzhi3=new String[N];//存放第三個賦值語句部分
	  tj=new String[N] ;//存放條件表達式 
	  String s=in.getText();//獲得輸入源程序
	  StringTokenizer fenxi=new StringTokenizer(s," \n\t\r;+=/-*\"\')(}{[]<>?:!",true);
	  //用來把輸入串分割為單詞
	  while(fenxi.hasMoreTokens())//將輸入的源程序截取為三個幾個部分
	 {   
		 String str=fenxi.nextToken();
		 if (str.equals(" ")||str.equals("\n"))//如果是空格則分析下一個
			 continue;
		 if(str.equalsIgnoreCase("for"))//將第一個左括號放到第一個賦值表達式
		 {
			 pan=pan+1;
		 }
		 else if(str.equalsIgnoreCase(";"))
		 { 
			 pan=pan+1;
		 }
		 else if(str.equalsIgnoreCase(";"))
		 { 
		     pan=pan+1;
		 }
		 else if(str.equals("{"))//將{后邊的放到第三個賦值語句中
				 {
			 pan=pan+1;
				 }
		 else if(pan==2)
			 
		        { 
			       tj[i]=str;  
		    	    i++; 
		        }
		else if(pan==1)
			    {
			    	     fzhi1[m]=str;		
			    	     m=m+1;   	   
			     }
		else if(pan==3)
		     {           
		           fzhi2[j]=str;       
		        	  j=j+1;
		      }
		else if (pan==4)
		{
			fzhi3[k]=str;
			k++;
		}
	    else 
	    	out.append("輸入有誤"+"\n");
		    	 
	 }//while
	     lenth1=i;//條件表達式的長度
		 fuzhi1=m;//賦值語句1的長度
		 fuzhi2=j;//賦值語句2的長度
		 fuzhi3=k;//賦值語句3的長度
		 for(int a=0;a<i;a++)
			 out.append(tj[a]);
		    out.append("\n");
		 for(int b=0;b<m;b++)
			out.append(fzhi1[b]);
		     out.append("\n");
		 for(int c=0;c<j;c++)
			 out.append(fzhi2[c]);
		 
		 out.append("\n");
		
		 
		
	
    if (fzhi1[0].equals("(")&&fzhi2[j-1].equals(")")&&fzhi3[k-1].equals("}"))//判斷條件for是否符合要求
     {
    	 if(fzhi1[2].equals("=")&&fzhi2[1].equals("=")&&fzhi3[1].equals("="))//判斷復制語句是否符合要求
    	 {
    		 for(int b=0;b<m-1;b++)
			 {
				 fzhi1[b]=fzhi1[b+1];
				 System.out.print(fzhi1[b]);
			 }
			 fzhi1[m-1]="";
			 fzhi2[j-1]="";
			 fzhi3[k-1]="";
			 fuzhi1--;
			 fuzhi2--;
			 fuzhi3--;
				 
			
    		 if(has(tj,operatorOftj,i)&&has(fzhi1,operatorOffz,1)&&has(fzhi2,operatorOffz,j-1)&&has(fzhi3,operatorOffz,k-1))
    		 {  
    			
    			 out.append("整個輸入語句的詞法是正確的"+"\n");
  
    			 vertify(allString (tj),matrix1,hei1,len1,1);
    			 vertify(allString (fzhi1),matrix2,hei2,len2,2);
    			 vertify(allString (fzhi2),matrix2,hei2,len2,3);
    			 vertify(allString (fzhi3),matrix2,hei2,len2,4);
    			 if(tjTrue&&fz1True&&fz2True&&fz3True)
    			 {
    				 out.append("整個輸入語句的語法是正確的"+"\n"+"下面的是輸出的四元式"+"\n");
    				 siyuanshi();
	    	 
    			 }  
    			 else 
    				 out.append("您的句子語法有錯誤,無法翻譯"+"\n");
    		 }//if  
    		 else 
    		 {
    			 if(!has(tj,operatorOftj,i))
    				 System.out.print("輸入的條件表達式的詞法有錯誤"+"\n");
    			 else if (!has(fzhi1,operatorOffz,fuzhi1-1))
    				 System.out.print("輸入的第一個賦值表達式的詞法有錯誤"+"\n");
    			 else if (!has(fzhi2,operatorOffz,fuzhi2-1))
    				 System.out.print("輸入的第二個賦值表達式的詞法有錯誤"+"\n");
    			 else if (!has(fzhi3,operatorOffz,fuzhi3-1))
    				 System.out.print("輸入的第三個賦值表達式的詞法有錯誤"+"\n");
    		 }//else
    	 	}//if(fzhi1[1].equals("=")&&fzhi2[1].equals("="))
    	 else
    		 out.append("賦值表達式不符合要求,應該有=號"+"\n");
    	 }//if (tj[0]=="("&&tj[i-1]==")")
     else 
     {
    	 out.append("輸入的條件表達式的詞法有錯誤,應該有括號"+"\n");
     }
    }

 public boolean has(String  aaa[],String operator[],int num)
 //判斷條件表達式中是否有非法字符。其中的參數分別代表要判斷的字符串,要參照的符號表,和字符的長度
 { int b,d;
   boolean isOperator=true,isfu=true; 
  for( b=0;b<num;b++)
  { 
  	for( d=0;d<operator.length;d++)
	{
		if(aaa[b].equals(operator[d]))
			{
			isOperator=true;
			isfu=true;
		    break;
		    }
		else
		{
	     isfu=false;
		continue;
		}
	}//for
	 if (!bianliangpan(aaa[b])&&!isfu)//如果不是合法變量并且不是字符則出錯 
		  {
			isOperator=false;
			System.out.print("錯了"+aaa[b]);
			break;
		  }
		else if(bianliangpan(aaa[b])&&!isfu)//如果是合法變量
		{
			continue;
		}	
	
  }//for
  if(isOperator==false)
  	{
	  out.append("輸入了非法標志符!");
	  return false;
  	}
  else 
  	return true;
 }

 //判斷是不是合法的變量
  public boolean bianliangpan(String a)
  { int c;
    char zhjian[];
    boolean istrue=false;
    String ss=a; 
    int f=a.toCharArray().length;
    zhjian=new char[f];
    zhjian=ss.toCharArray();//將當前字符串轉化為字符數組來分析

    for( c=0;c<f;c++)
    {
    	if(c==0)
    	{ 
    		if(Character.isDigit(zhjian[0]))
			   {
				   if(f==1)
				   {
				   istrue=true;
				   break;
				   }
				   for(int ii=1;ii<f;ii++)
				   {
					   if(Character.isLetter(zhjian[ii]))
					   {
						   istrue=false;//開頭有數字,后面的有一個是字母則就是非法的變量
						   break;
					   }
					   else istrue=true;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91色在线porny| 极品美女销魂一区二区三区| 欧美日韩国产色站一区二区三区| 亚洲成人久久影院| 久久久久久久电影| 4438x亚洲最大成人网| 粉嫩高潮美女一区二区三区| 午夜影院久久久| 中文字幕av一区 二区| 制服丝袜一区二区三区| 99精品在线观看视频| 久久99精品国产麻豆不卡| 亚洲与欧洲av电影| 国产精品女同一区二区三区| 日韩欧美国产电影| 欧美色图天堂网| 国产99久久久精品| 天天亚洲美女在线视频| 国产精品美女久久久久久久久| 91精品国产综合久久久蜜臀图片| 国产69精品久久久久777| 青青草一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 亚洲男人的天堂网| 亚洲素人一区二区| 中文字幕一区二区三区视频| 国产亚洲婷婷免费| 国产日韩欧美综合一区| 久久精品综合网| 国产无一区二区| 中文一区一区三区高中清不卡| 久久亚洲二区三区| 国产精品水嫩水嫩| 国产精品久久久久7777按摩| 精品免费99久久| 国产欧美日韩精品a在线观看| 久久午夜色播影院免费高清| 久久久久久久av麻豆果冻| 国产精品网站导航| 亚洲国产日韩a在线播放性色| 日韩高清不卡一区| 国产精品99久久久久久有的能看 | 国产亚洲精品福利| 国产精品国产三级国产a| 亚洲欧美一区二区三区孕妇| 一区二区三区不卡视频| 精品一区二区免费看| 色呦呦一区二区三区| 欧美一二三区在线观看| 日韩一区有码在线| 99热这里都是精品| 8v天堂国产在线一区二区| 国产三级三级三级精品8ⅰ区| 久久久久久一二三区| 亚洲一区中文日韩| 国产精品一二三在| 在线视频亚洲一区| 亚洲国产成人午夜在线一区| 亚洲综合久久久久| 国产福利一区二区三区在线视频| 欧美日韩中文字幕精品| 最新热久久免费视频| 国产精品自拍网站| 欧美一区二区三区的| 亚洲一区二区三区精品在线| av日韩在线网站| 中文字幕高清一区| 国产精品18久久久久久vr| 99精品久久久久久| 国产欧美视频在线观看| 裸体一区二区三区| 欧美日本在线一区| 亚洲综合色成人| 欧美午夜精品免费| 一区二区三区在线视频观看| 色综合色综合色综合色综合色综合 | 亚洲手机成人高清视频| 国产精品中文字幕日韩精品| 精品免费日韩av| 激情综合网天天干| 国产亚洲短视频| 国产精品自拍三区| 26uuu欧美| 成人免费视频一区二区| 国产精品久久看| 99国产精品久| 亚洲国产精品嫩草影院| 久久久久久久久久看片| 国产精品一区二区x88av| 欧美国产精品一区二区| 欧美在线视频日韩| 日韩成人av影视| 国产欧美一区二区在线观看| 色综合久久中文字幕综合网| 亚洲综合一区二区| 4hu四虎永久在线影院成人| 国产精品911| 亚洲国产aⅴ天堂久久| 精品国产伦一区二区三区观看方式 | 亚洲黄色免费网站| 精品日韩一区二区| 欧洲国产伦久久久久久久| 日本亚洲天堂网| 综合在线观看色| 精品av综合导航| 欧美日韩国产一级二级| 国产成人av电影在线观看| 亚洲午夜在线观看视频在线| 国产精品看片你懂得| 精品日产卡一卡二卡麻豆| 色婷婷综合久久久中文字幕| 国产酒店精品激情| 午夜电影一区二区三区| 亚洲精品国产无天堂网2021| 国产欧美综合在线观看第十页| 欧美精品视频www在线观看| 99re这里都是精品| 大尺度一区二区| 九九久久精品视频| 亚洲一区二区三区国产| 一区二区三区四区乱视频| 亚洲国产精品高清| 国产欧美一区二区精品久导航| 91精品欧美综合在线观看最新| 在线观看国产91| 91国偷自产一区二区开放时间| 国产成人av电影在线播放| 99久久精品国产毛片| 成人午夜视频在线观看| 丁香激情综合五月| yourporn久久国产精品| 99久久er热在这里只有精品66| thepron国产精品| 99久久精品99国产精品| 欧美最猛黑人xxxxx猛交| 欧美日韩一级二级| 欧美一三区三区四区免费在线看| 欧美日韩午夜影院| 精品国产凹凸成av人网站| 国产亚洲精品bt天堂精选| 欧美激情一区二区三区在线| 国产精品区一区二区三| 一区二区三区在线观看欧美| 日日摸夜夜添夜夜添亚洲女人| 久久成人免费网| 成人avav影音| 欧美一区二区福利视频| 日本一区二区视频在线观看| 亚洲精品国产品国语在线app| 婷婷一区二区三区| 国产成人在线色| 欧美日韩国产色站一区二区三区| 2022国产精品视频| 一区二区三区在线视频观看| 国内精品国产成人国产三级粉色| 99久久综合精品| 精品乱人伦小说| 伊人开心综合网| 国产福利精品导航| 欧美久久久影院| 亚洲欧美另类小说| 国产精品综合网| 欧美性xxxxxx少妇| 国产日韩在线不卡| 久久国产精品72免费观看| 91久久久免费一区二区| 中文字幕国产一区二区| 美女网站在线免费欧美精品| 欧美午夜电影网| 最新国产精品久久精品| 国产精品69毛片高清亚洲| 日韩亚洲欧美一区二区三区| 青青草国产成人99久久| 欧美精品一卡二卡| 亚洲成人资源在线| 欧美性xxxxxxxx| 亚洲午夜视频在线| 欧美绝品在线观看成人午夜影视| 一区二区激情视频| 欧美精品少妇一区二区三区 | 精品亚洲国产成人av制服丝袜 | 本田岬高潮一区二区三区| 欧美一级二级三级乱码| 美女网站在线免费欧美精品| 正在播放亚洲一区| 日韩国产精品91| 精品国产一区久久| 国产综合成人久久大片91| 国产亚洲成aⅴ人片在线观看| 丰满白嫩尤物一区二区| 国产精品国产三级国产普通话蜜臀| 99在线精品免费| 亚洲第一激情av| 亚洲精品在线免费播放| www.在线成人| 五月综合激情网| 国产午夜精品理论片a级大结局| 成人毛片视频在线观看| 亚洲福利视频三区| 欧美v日韩v国产v|