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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? analyze.java

?? cmm詞法分析器
?? JAVA
字號:
/*
 *author@weiβ    mail:feather1190@yahoo.com.cn
 */ 
package complier;

import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import javax.swing.filechooser.*;
import java.awt.*;
import java.awt.event.*;


class Analyze extends JFrame implements ActionListener
{  
 //設(shè)置主界面
   MenuBar mbar ;                                                           
   Menu fileMenu,helpMenu;
   MenuItem newItem,openItem,saveItem,exitItem,helpfileItem,aboutItem,analyItem;
   JTextArea progarmArea, resultArea;
   JFileChooser fc ;
   JToolBar toolbar;
   public Analyze(String s)
   { 
     super("詞法分析器" );
    
     
     this.setSize(800,600);
     this.getContentPane().setLayout(new BorderLayout());
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     Container c = getContentPane();
     c.setBackground(Color.CYAN);
     Container toolc = getContentPane();
     
     this.addWindowListener(new WindowAdapter(){
             public void WindowClosing(WindowEvent e){System.exit(0);}
        });
    
     
     mbar = new MenuBar();                                           
     this.setMenuBar(mbar);
    //定義fileMenu菜單
     fileMenu = new Menu("文件");
     fileMenu.addActionListener(this);
     mbar.add(fileMenu);

     newItem = new MenuItem("新建");
     newItem.addActionListener(this);
     fileMenu.add(newItem);

     openItem = new MenuItem("打開");
     openItem.addActionListener(this);
     fileMenu.add(openItem); 
    
     saveItem = new MenuItem("保存");
     saveItem.addActionListener(this);
     fileMenu.add(saveItem);

     fileMenu.addSeparator();

     analyItem = new MenuItem("分析");
     analyItem.addActionListener(this);
     fileMenu.add(analyItem);

     exitItem = new MenuItem("退出");
     exitItem.addActionListener(this);
     fileMenu.add(exitItem);
     
     //定義helpMenu菜單
     helpMenu = new Menu("幫助");
     helpMenu.addActionListener(this);
     mbar.add(helpMenu);
     
     helpfileItem = new MenuItem("幫助主題");
     helpfileItem.addActionListener(this);
     helpMenu.add(helpfileItem); 

     helpMenu.addSeparator();
     aboutItem = new MenuItem("關(guān)于");
     aboutItem.addActionListener(this);
     helpMenu.add(aboutItem); 
    
     
     //定義文本域
     //輸入域
     progarmArea = new JTextArea("program",10,46);
     progarmArea.setBackground(Color.white);
     progarmArea.setLineWrap(true);
     progarmArea.setVisible(true);
    //輸出域
     resultArea = new JTextArea(10,46);
     resultArea.setBackground(Color.white);
     resultArea.setEditable(false);
     resultArea.setVisible(true);
     JScrollPane p1 = new JScrollPane( progarmArea );//滾動塊
     p1.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
     p1.setVisible(true);
     JScrollPane p2 = new JScrollPane(resultArea );
     p2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED );
     p2.setVisible(true);
     c.add(p2,"East");
     c.add(p1,"West");
     
     this.pack();
     this.show();

 
     
     //文件選擇
     fc = new JFileChooser();
     fc.setSelectedFile(new File(""));
     fc.setCurrentDirectory(new File(""));
     
     //定義工具欄
     toolbar= new JToolBar();
     toolbar.setOrientation(toolbar.HORIZONTAL);
      toolc.add(toolbar,"North");
   
     //button(新建)
     JButton newButton = new JButton("新建");
     newButton.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
              progarmArea.setText(" ");
     }
     }); 
     
     
     //button(打開)
     JButton openButton = new JButton("打開");
     openButton.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
                     int returnval=fc.showOpenDialog(Analyze.this);
            try{
                     if(returnval==JFileChooser.APPROVE_OPTION)
              {
                 String inLine;
                 File openfile = fc.getSelectedFile();
                 FileReader openfr=new FileReader(openfile);
                 BufferedReader openbr = new BufferedReader(openfr);
                  while((inLine=openbr.readLine())!=null)
                    {
                     progarmArea.append("\n"+inLine);
                    }
                     openbr.close();
                }
             }
             
             catch(IOException exp){}
             }
             });
    //button(分析)
     JButton runButton = new JButton("分析");
     runButton.addActionListener(new ActionListener(){
             public void actionPerformed(ActionEvent e){
         resultArea.setText("分析結(jié)果\n"); 
         String s1 = progarmArea.getText();
         String s2 = analyzefile(s1);
         resultArea.setText(s2);
             }
     });
         toolbar.add(newButton);
         toolbar.add(openButton);
         toolbar.add(runButton);
         this.add(toolbar,"North");
     } 
  
   
   
   
    public void actionPerformed(ActionEvent e) {
	   if(e.getSource() == newItem){
		   progarmArea.setBackground(Color.white);
		   progarmArea.setText(" ");
     } 
	   		else if(e.getSource() == openItem){
	   				try{
	   						int  returnval=fc.showOpenDialog(Analyze.this);
	   						if(returnval==JFileChooser.APPROVE_OPTION){
	   							progarmArea.setBackground(Color.white);
	   							String inLine;
	   							File openfile = fc.getSelectedFile();
	   							FileReader openfr=new FileReader(openfile);
	   							BufferedReader openbr = new BufferedReader(openfr);
	   							while((inLine=openbr.readLine())!=null){
                    	   	progarmArea.append("\n"+inLine);
                          }
                    openbr.close();
                   }
               }
            catch(IOException exp){}
          }
	   		else if(e.getSource() == saveItem)
                {
                  
	   			int  returnval=fc.showSaveDialog(Analyze.this);
	   				if(returnval==JFileChooser.APPROVE_OPTION){ 
	   					String inLine;
	   					File savefile = fc.getSelectedFile();
                   
                    }
                 
                }
	   
	   		else if(e.getSource() == exitItem)
	   				System.exit(0);
	   			else if(e.getSource() == analyItem){
                     resultArea.setText("分析結(jié)果\n"); 
                     String s1 = progarmArea.getText();
                     String s2 = analyzefile(s1);
                     resultArea.setText(s2);
                        }
                            else if( e.getSource() == helpfileItem)
                                 resultArea.setText("這是一個(gè)詞法編譯器,可以分析簡單的cmm語言程序");
                                 else if(e.getSource() == aboutItem)
                                    JOptionPane.showMessageDialog(null,"weiβ 制作,mail:feather1190@yahoo.com.cn","關(guān)于", JOptionPane.INFORMATION_MESSAGE);
}
    public static  String  analyzefile(String sfile){
 								String oneword=" ";
 								char nextchar;
 								int i,numchars;
 								String lastresult=" ";
 								
 								numchars=sfile.length();
               
 							for(i =1;i<numchars;i++){
 								nextchar = sfile.charAt(i-1);
                             
 								
 								
 								//讀入的是空格
                                if(Character.isSpace(nextchar));
                    			
                                //讀入的是字母
                    				 else if(Character.isLetter(nextchar)){       
                    				oneword = oneword +nextchar;
                    				i++;
                    				nextchar = sfile.charAt(i-1);
                           
                    						while(Character.isDigit(nextchar)||Character.isLetter(nextchar)){ 
                    							oneword = oneword +nextchar;
                    							i++;
                    							nextchar = sfile.charAt(i-1);  
                    							}
                    						i--;
                    						oneword = oneword.trim();//返回字符串的副本,忽略前導(dǎo)空白和尾部空白.
                    					
                    						if(iskeyword(oneword))
                    								lastresult=lastresult+"   ("+oneword+",1)       關(guān)鍵字\n";
                    							else
                    									lastresult=lastresult+"     ("+oneword+",2)       標(biāo)識符\n";
                    							oneword=" ";
                           }
                                		//讀入的是數(shù)字
                    					else  if(Character.isDigit(nextchar)){
                    							oneword = oneword +nextchar;
                    							i++;
                    							nextchar = sfile.charAt(i-1);
                    							while(Character.isDigit(nextchar)){ 
                    								oneword = oneword +nextchar;
                    								i++;
                    								nextchar = sfile.charAt(i-1);  
                    							}
                    							i--;
                    							oneword=oneword.trim();
                    							lastresult=lastresult+"   ("+oneword+",3)         數(shù)字\n";
                                          oneword=" ";
                             }
                                
                    					
                                //讀入的是符號
                    						else{ 
                    							int	signaltype;
                    							signaltype = signal(sfile.charAt(i-1),sfile.charAt(i));
                    							switch(signaltype){
                    								case 1://"++,--"單目運(yùn)算符
                    									lastresult=lastresult+"   ("+nextchar+sfile.charAt(i)+",4)      單目運(yùn)算符\n";
                    									i++;
                    									break;
                    								case 2://"+,_,*,/"雙目運(yùn)算符
                    									lastresult=lastresult+"   ("+nextchar+",5)     雙目運(yùn)算符\n";
                    									break;
                    								case 3://"(,),{,},;,,"分隔符
                    									lastresult=lastresult+"   ("+nextchar+",6)      分隔符\n";
                    									break;
                    								case 4://“//”,“/*”,和“*/”
                    									lastresult=lastresult+"   ("+nextchar+sfile.charAt(i)+",7)      注釋符\n";
                    									i++;
                    									break;
                    								case 5://"<>,==,<=,>=,!="判斷符
                    									lastresult=lastresult+"   ("+nextchar+sfile.charAt(i)+",8)       判斷符\n";
                    									i++;
                    									break;
                    								case 6://"<,>"判斷符
                    									lastresult=lastresult+"   ("+nextchar+",8)       判斷符\n";
                    									i++;
                    									break;
                    								case 0://錯(cuò)誤字符
                    									lastresult=lastresult+"   ("+nextchar+",9)    錯(cuò)誤字符\n";
                    									break;
                    							}//end of switch
                    						}
                                
 							}
                    			
 							return lastresult;
                    			
 				} 
         
 		
 		
 		//在比較兩個(gè)字符是否相等時(shí),用equals函數(shù),等號只判斷指向相同地址的
 			public static boolean iskeyword(String s1){
 				if(s1.equals("int") )
 					      return true;
 				else if(s1.equals("if"))
 					      return true;
                else if(s1.equals("while") )
                          return true;
                else if(s1.equals("read"))
                          return true;
                else if(s1.equals("return"))
                          return true;
                else if(s1.equals("write"))
                          return true;
                else if (s1.equals("else"))
                         return true;
                else if (s1.equals("real"))
                    return true;
                else return false;
           }

 			public static int signal( char c1,char c2 ){
 				switch(c1){
 					case '+': 
                      if(c2=='+')  
                              return 1; //單目運(yùn)算符
                      else 
                    	  return 2 ;//雙目運(yùn)算符
              
 					case '-':        
                      if(c2=='-')  
                             return 1; 
                      else   
                    	  return 2 ;
 					case '*': if(c2=='/') return 3; //分隔符
                        else 
                        	return 2;
 					case '/': if(c2=='/'||c2=='*') return 4;//注釋符
                        else 
                        	return 2;
 					case '=': if(c2=='=') return 5;//判斷符1
                        else 
                        	return 2;
 					case '!':if(c2=='=')return 5; 
 					
 					case ';': return 3;
 					case '(': return 3;
 					case ')': return 3;
 					case '{': return 3;
 					case '}': return 3;
 					case '[': return 3;
 					case ']': return 3;
 					case ',': return 3;
 				
 					case '<': if((c2=='=')||(c2=='>')) return 5;//判斷符1
 						else 
 							 return 6;//判斷符2
 		            case '>': if(c2=='=') return 5;//判斷符1
 				     		return 6;//判斷符2
 				    	
 				}
 				return 0;

 			}

}













?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频亚洲一区| 91麻豆精品国产自产在线观看一区| 亚洲一区二区四区蜜桃| 欧美精品一区二区在线观看| 色猫猫国产区一区二在线视频| 激情av综合网| 亚洲一区成人在线| 国产精品久久二区二区| 怡红院av一区二区三区| 精品国产乱码久久久久久影片| 色综合久久88色综合天天6 | 国产精品系列在线| 欧美一级xxx| 欧美日韩在线不卡| voyeur盗摄精品| 国产在线一区二区| 日本伊人精品一区二区三区观看方式| 1区2区3区精品视频| 欧美精品一区二区三区在线 | 欧美精品v日韩精品v韩国精品v| eeuss鲁片一区二区三区在线看| 另类综合日韩欧美亚洲| 午夜精品久久久久久久蜜桃app| 中文字幕一区二区三区四区| 国产欧美一区二区三区在线老狼| 日韩网站在线看片你懂的| 欧美绝品在线观看成人午夜影视| 91高清视频在线| 99re6这里只有精品视频在线观看| 福利一区二区在线| 国产91丝袜在线观看| 国产成人免费9x9x人网站视频| 国产综合色产在线精品| 国产一区二区三区在线看麻豆| 美日韩一区二区| 久久er99热精品一区二区| 免费成人在线播放| 捆绑紧缚一区二区三区视频| 日本中文在线一区| 狂野欧美性猛交blacked| 久久99在线观看| 国产一区二区三区蝌蚪| 国产乱码精品一区二区三区av| 国产一区二区不卡| 成人福利在线看| 99久久久国产精品免费蜜臀| 99国产精品久久久久久久久久| 色综合久久中文综合久久97| 色国产综合视频| 欧美色老头old∨ideo| 欧美高清一级片在线| 欧美一级国产精品| 精品福利二区三区| 中文字幕欧美日韩一区| 亚洲久本草在线中文字幕| 亚洲激情男女视频| 日韩综合小视频| 精品一区二区在线免费观看| 国产69精品一区二区亚洲孕妇 | 91精品国产一区二区人妖| 欧美日韩成人在线一区| 欧美成人vps| 国产精品欧美久久久久一区二区 | 91免费观看视频| 99在线热播精品免费| 欧美最猛黑人xxxxx猛交| 91精品在线观看入口| 久久蜜桃av一区二区天堂| 国产精品入口麻豆原神| 亚洲自拍欧美精品| 久99久精品视频免费观看| 丰满放荡岳乱妇91ww| 91国产丝袜在线播放| 欧美一级免费大片| 国产精品素人一区二区| 婷婷中文字幕综合| 国产精品一区二区三区网站| 在线观看国产一区二区| 精品sm在线观看| 亚洲精品国产a久久久久久| 日韩激情在线观看| 成人av电影免费观看| 555夜色666亚洲国产免| 国产精品无码永久免费888| 亚洲18女电影在线观看| 国产精品亚洲一区二区三区妖精| 色婷婷亚洲综合| 26uuuu精品一区二区| 亚洲一区二区av电影| 国产成人啪午夜精品网站男同| 在线观看免费成人| 国产精品视频一二三| 日本欧美肥老太交大片| 99精品视频在线播放观看| 日韩欧美专区在线| 亚洲黄色性网站| 国产成人av一区二区三区在线 | 日韩免费高清av| 亚洲免费av在线| 风间由美一区二区三区在线观看| 欧美精品久久99| 亚洲人123区| 国产不卡视频一区二区三区| 日韩一区二区三区av| 洋洋av久久久久久久一区| 国产福利一区在线| 日韩午夜av电影| 性做久久久久久久免费看| 91小视频在线免费看| 国产亚洲欧洲997久久综合| 欧美美女一区二区三区| 国产精品久久久久久户外露出| 久久精品国产亚洲高清剧情介绍 | 国产精品久久久久桃色tv| 精品一区二区三区影院在线午夜| 欧美色图片你懂的| 亚洲特黄一级片| 成人少妇影院yyyy| 久久精品视频一区二区| 久久激情五月婷婷| 日韩三级伦理片妻子的秘密按摩| 亚洲国产视频直播| 欧美午夜精品久久久| 亚洲色图视频网站| 成人av电影在线| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日本电影亚洲天堂一区| 中文字幕高清一区| 高清久久久久久| 中日韩av电影| 99国产精品久久久久| 亚洲视频一区二区在线| 91免费在线视频观看| 最新国产の精品合集bt伙计| 99国产精品久久久| 亚洲精品免费在线观看| 色香色香欲天天天影视综合网| 国产精品国产三级国产三级人妇 | 亚洲精品视频免费看| 色婷婷av一区| 亚洲国产精品天堂| 欧美片网站yy| 日本欧美肥老太交大片| 欧美电影免费观看高清完整版在线| 老司机精品视频在线| 久久综合一区二区| 国产盗摄视频一区二区三区| 日本一区二区综合亚洲| av电影在线不卡| 一区二区三区在线观看网站| 欧洲亚洲国产日韩| 视频一区在线视频| 精品国产乱码久久久久久图片 | 蜜臀久久久久久久| 久久精品一区蜜桃臀影院| 成人一区二区三区在线观看| 亚洲欧美色图小说| 欧美一区在线视频| 国产精品一区二区在线播放| 国产精品福利一区二区| 一本一道久久a久久精品 | yourporn久久国产精品| 怡红院av一区二区三区| 日韩一区和二区| 不卡av免费在线观看| 亚洲va国产va欧美va观看| 日韩欧美在线123| 国产精品自产自拍| 亚洲免费视频中文字幕| 正在播放亚洲一区| 国产精品99久久久久久久vr| 综合欧美一区二区三区| 欧美一区二区三区四区五区| 国产精品一区久久久久| 亚洲与欧洲av电影| 精品国产免费人成电影在线观看四季 | 国产精品污污网站在线观看| 欧美午夜片在线看| 国产真实乱对白精彩久久| 亚洲欧美电影院| 欧美刺激脚交jootjob| 91在线观看污| 日本伊人色综合网| 亚洲人成精品久久久久久| 日韩欧美中文字幕公布| 91免费视频观看| 狠狠色狠狠色合久久伊人| 99久久国产免费看| 日韩激情av在线| 国产精品久久久久7777按摩| 欧美理论电影在线| 丁香婷婷综合网| 男男视频亚洲欧美| 成人免费在线视频观看| 久久影院电视剧免费观看| 欧美日韩久久久| 色综合一个色综合亚洲| 国产精品亚洲综合一区在线观看| 五月天激情综合| 亚洲精品水蜜桃|