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

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

?? byylscanner.java

?? 此為編譯原理的詞法分析部分
?? JAVA
字號(hào):
/**
 *This program is for compiled language!
 *  yanxiangtong         2006.10.29
 *本程序最終解釋權(quán)屬于040410206 閆相通。
 **/
//package byylscanner;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
//保留字類
class  KeyWord
{
  public StringBuffer word;
  public KeyWord()
  {
  	word=new StringBuffer();
  }
}
//符號(hào)表中的NAME類
class WordName
{
	public int start;
	public int length;
}
//符號(hào)表類
class Symbol
{   
	public WordName name;
	public StringBuffer type;
	public StringBuffer kind;
	public StringBuffer val;
	public int addressOfMemory;
	public int addr;
	 public Symbol()
	 {  name=new WordName();
	    type=new StringBuffer();
	    kind=new StringBuffer();
	    val=new StringBuffer();
	 }
	
}

 public  class ByylScanner implements ActionListener{
	private Frame frame;
	
	private MenuBar menubar;
	private Menu menuFile;
	private Menu menuBuild;
    private Menu menuSave;
        
	private MenuItem menuFileOpen;
	private MenuItem menuFileClose;
	private MenuItem menuFileExit;
	
	private MenuItem menuBuildMorphemeAnalysis;
	private MenuItem menuBuildParsing; 
	
	private MenuItem menuSaveSource;
	private MenuItem menuSaveSymbol;
	private MenuItem menuSaveToken;
	
	private TextArea inputTextArea;
	private TextArea symbolTableTextArea;
	private TextArea resultTextArea;
	private TextArea tokenTextArea;
	
	private File beforeFile=new File("yanxiangtongprince.java");
	private File currentFile=new File("yanxiangtongprince.java");
	private FileDialog  fileChooser ;
	private FileDialog  fileSaver ; 
	private FileInputStream fis;  //輸入流
	private FileOutputStream fos; //輸出流  
	private Token currentToken;   //當(dāng)前token串
	private Symbol currentSymbol;   //當(dāng)前符號(hào)表
	private String saveText;   //存放當(dāng)前分析的程序的所有字符
	private StringBuffer alphabet;  //字母表
	private int len;  //讀入文件的長(zhǎng)度
	private   byte []buffer;  //讀入的文件內(nèi)容存在byte串中
	
	private Symbol []symbolList;  //符號(hào)表的每一行存放在數(shù)組里面
	private  int charId=-1;
	private char ch;  //讀入的字符
	
    private int varCount=0;//字符串個(gè)數(shù)統(tǒng)計(jì)
	private int errorCount=0;  //錯(cuò)誤計(jì)數(shù)器
	private int labelCount=1;  // 序號(hào)
	private int addrCount=1;  //入口地址
	private int rowCount=1;  //行計(jì)數(shù)器
	private int columnCount=1; //列計(jì)數(shù)器
	private  int beginCode=0;  //用于程序是否正常結(jié)束
	private  int endCode=0;
	private static final int MAX=500;  //設(shè)定符號(hào)表的最大長(zhǎng)度
	private  int currentId=0;
	private static final int LENGTH=33;  //保留字的個(gè)數(shù)
	private KeyWord []keyWord;
	
	public ByylScanner(){
		frame =new Frame("simple語(yǔ)言編譯器");
		frame.setSize(800,700); 
    	        
		frame.setBackground(Color.GRAY);
		frame.setLocation(0,0);
		menubar=new MenuBar();
		menuFile=new Menu("文件");
		menuFileOpen=new MenuItem("打開");
		menuFileClose=new MenuItem("關(guān)閉");
		menuFileExit= new MenuItem("退出");
		
               //添加監(jiān)聽(tīng)事件
		menuFileOpen.addActionListener(this); 
	    menuFileClose.addActionListener(this);
		menuFileExit.addActionListener(this);

		menuFile.add(menuFileOpen);
    	menuFile.add(menuFileClose);
		menuFile.add(menuFileExit);
		
		menuBuild=new Menu("編譯");
		menuBuildMorphemeAnalysis=new MenuItem("此法分析");
		menuBuildParsing=new MenuItem("語(yǔ)法分析");
		
		menuBuildMorphemeAnalysis.addActionListener(this);
		menuBuildParsing.addActionListener(this);
		
		menuBuild.add(menuBuildMorphemeAnalysis);
		menuBuild.add(menuBuildParsing);
		
		menuSave=new Menu("保存");
		menuSaveSymbol=new MenuItem("保存符號(hào)表");
		menuSaveSource=new MenuItem("保存源文件");
		menuSaveToken=new MenuItem("保存Token");
		
		menuSave.add(menuSaveSource);
		menuSave.add(menuSaveSymbol);
		menuSave.add(menuSaveToken);
		
		menuSaveSource.addActionListener(this);
		menuSaveSymbol.addActionListener(this);
		menuSaveToken.addActionListener(this);
		menubar.add(menuFile);
		menubar.add(menuBuild);
		menubar.add(menuSave);
		frame.setMenuBar(menubar);
		
		inputTextArea=new TextArea();
		symbolTableTextArea=new TextArea();
		resultTextArea=new TextArea();
		tokenTextArea=new TextArea();
		
		frame.setLayout(new GridLayout(2,2));
		frame.add(inputTextArea);
	
		frame.add(symbolTableTextArea);
		frame.add(resultTextArea);
    	frame.add(tokenTextArea);
		frame.setVisible(true);
		
		frame.addWindowListener( new WindowAdapter()
		{
			public void windowClosing(WindowEvent e )
			{
				System.exit(0);
			}
		}
			);		
	}
	
	public void actionPerformed(ActionEvent e )
	{   
	      
	  if(e.getSource()==menuFileOpen)
		{ //menuFileOpen begin 
		   try{
		   	    fileChooser= new FileDialog(frame);
		   	    fileChooser.setMode(0);
		   	    fileChooser.setVisible(true);
		   	    currentFile=new File(fileChooser.getFile());
		   	    System.out.println(currentFile.toString());
		   	    fis=new FileInputStream(currentFile);
	            len=fis.available();
	            buffer=new byte[len];
	            fis.read(buffer);
	            inputTextArea.setText(new String(buffer));
		     }catch(IOException Ioe) {};
		   	    
	            
		   
				
			
		}//menuFileOpen end
	  else if(e.getSource()==menuSaveSource)
		{  
		   try{ 
		
		        if(currentFile.equals(beforeFile))
		        {
		     	  fileSaver= new FileDialog(frame);
		     	  fileSaver.setMode(1);
		   	      fileSaver.setVisible(true);
		   	      currentFile=new File(fileSaver.getFile());
		        }
			     //輸出文件名
			      System.out.println(currentFile.toString());
		   	      fos=new FileOutputStream(currentFile);
		   	 	  saveText=new String(inputTextArea.getText());
		   	 	  fos.write(saveText.getBytes());
			 }catch(IOException Ioe) {};	
		 }  	     
	 else if(e.getSource()==menuSaveSymbol)           
		   	 
	    {  
		  try{ 
		        fileSaver= new FileDialog(frame);
		     	fileSaver.setMode(1);
		   	    fileSaver.setVisible(true);
		   	    currentFile=new File(fileSaver.getFile());
		        System.out.println(currentFile.toString());
		   	    fos=new FileOutputStream(currentFile);
		   	 	saveText=new String(symbolTableTextArea.getText());
		   	 	fos.write(saveText.getBytes());
			
		   	 }catch(IOException Ioe) {};
		 
		   
	 	
		 }
    else if(e.getSource()==menuSaveToken)
		{  
		   try{ 
		        fileSaver= new FileDialog(frame);
		     	fileSaver.setMode(1);
		   	    fileSaver.setVisible(true);
		   	    currentFile=new File(fileSaver.getFile());
		        System.out.println(currentFile.toString());
		   	 	fos=new FileOutputStream(currentFile);
		   	 	saveText=new String(tokenTextArea.getText());
		   	 	fos.write(saveText.getBytes());
		   	 }catch(IOException Ioe) {};
		}
	 else if(e.getSource()==menuFileClose)
		{    
		 try{ 
		
		    if(!currentFile.exists())
		     {
		     	fileSaver= new FileDialog(frame);
		     	fileSaver.setMode(1);
		   	    fileSaver.setVisible(true);
		   	     currentFile=new File(fileSaver.getFile());
		     }
			 
		   	if(currentFile.exists())
			 {
			 	System.out.println(currentFile.toString());
		   	    fos=new FileOutputStream(currentFile);
		        saveText=new String(inputTextArea.getText());
		   	    fos.write(saveText.getBytes());
			 }
	         currentFile=beforeFile;
		   	 inputTextArea.setText("");
	       	 symbolTableTextArea.setText("");
		     resultTextArea.setText("");
		     tokenTextArea.setText("");
		   
		   } catch(IOException oe) {};
	            
	    }
	    else if(e.getSource()==menuFileExit)
		{
		System.exit(0);	
		}
    	else if(e.getSource()==menuBuildMorphemeAnalysis)
		{
		    beginScanner();	
		}
	    else if(e.getSource()==menuBuildParsing)
		{
		inputTextArea.setText("我是王子語(yǔ)法分析");	
		}
   }
    
    public void scannerInit()
    {   
       int i=0;
       try{
    
          currentSymbol=new Symbol();
          currentToken =new Token(); 
          alphabet=new StringBuffer();
          symbolList=new Symbol[MAX]; //創(chuàng)建數(shù)組
          for(i=0;i<MAX;i++)
          symbolList[i]=new Symbol();  //創(chuàng)建對(duì)象
    	  keyWord=new KeyWord[LENGTH+1];  //創(chuàng)建數(shù)組
    	  for(i=0;i<LENGTH;i++)
    	  keyWord[i]=new KeyWord();//創(chuàng)建對(duì)象
          
       
          keyWord[1].word.append("and");
          keyWord[2].word.append("array");
          keyWord[3].word.append("begin");
          keyWord[4].word.append("bool");
          keyWord[5].word.append("call");
          keyWord[6].word.append("case");
          keyWord[7].word.append("char");
          keyWord[8].word.append("constant");
          keyWord[9].word.append("do");
 		  keyWord[10].word.append("else");
  		  keyWord[11].word.append("end");
  		  keyWord[12].word.append("flase");
  		  keyWord[13].word.append("for");
  		  keyWord[14].word.append("if");
 		  keyWord[15].word.append("input");
 		  keyWord[16].word.append("integer");
 		  keyWord[17].word.append("not");
 		  keyWord[18].word.append("of");
  		  keyWord[19].word.append("or");
  		  keyWord[20].word.append("output");
  		  keyWord[21].word.append("procedure");
  		  keyWord[22].word.append("program");
  		  keyWord[23].word.append("read");
  		  keyWord[24].word.append("real");
  		  keyWord[25].word.append("repeat");
  		  keyWord[26].word.append("set");
  		  keyWord[27].word.append("then");
  		  keyWord[28].word.append("to");
  		  keyWord[29].word.append("true");
  		  keyWord[30].word.append("until");
  		  keyWord[31].word.append("var");
  		  keyWord[32].word.append("while");
  	  	  keyWord[33].word.append("write");
    
  
 }catch(Exception oe){}
    }
   public void beginScanner()
   {    
        
       
        scannerInit(); //初始化
        //文件操作
       try{ 
		   
		    if(!currentFile.exists())
		     {  
		     	fileSaver= new FileDialog(frame);
		     	fileSaver.setMode(1);
		   	    fileSaver.setVisible(true);
		   	    currentFile=new File(fileSaver.getFile());
		     }
			 
			    
			 	System.out.println(currentFile.toString()); //打印文件名字
		   	 
		   	 	fos=new FileOutputStream(currentFile);
		   	 	saveText=new String(inputTextArea.getText());
		   	 	buffer=saveText.getBytes();
	            fos.write(buffer);
	         
		   }catch(IOException Ioe) {};
			 
		   	 
		   	 //開始掃描
		   	 ch=getNextChar();
		   	 while(ch!=1000)
		   	 { 
		   	   if((ch>47)&&(ch<58))  //是數(shù)字
		   	       isNumber();
                            else  //是保留字或標(biāo)志符
                               {if(((ch>64)&&(ch<90))||((ch>96)&&(ch<123))||ch=='_')
                                       isAlpha();
                               else  
                                 {if(ch=='/') isAnotation();//是否為注釋
                                   else 
                                       if(ch=='\'') isChar(); //字符常數(shù)
                                      else  isOther(); //其他情況
                                  }
                                }
		   	 }
                    
                    
                                
           // if(!(saveText.endsWith(firstEndWith)||saveText.endsWith(secondEndWith)))
            //     error(4);                    
		   if(!(beginCode==endCode)) //檢驗(yàn)程序是否正常結(jié)束
		   error(4);
		  
   	  
   }
   /**
    *獲得下一個(gè)字符
    **/
   public char getNextChar()
   {   try{
           charId++;
           columnCount++;
           if(saveText.charAt(charId)==13) 
            {rowCount++;  //行計(jì)數(shù)器加一并把列計(jì)數(shù)器置零
             columnCount=0;
            }
        if(charId<saveText.length())
   	    return saveText.charAt(charId); 
   	    }catch(Exception oo){}
   	    return 1000;  //1000為程序結(jié)束標(biāo)志
       
   }
   
    /**
     *處理保留字和字符串
     **/
   public void isAlpha()
   {  int keyFlag=0,i,alpaFlag;
   	  while(((ch>64)&&(ch<90))||((ch>96)&&(ch<123))||ch=='_')
   	  {
   	  	currentToken.name.append(ch);
   	  	ch=getNextChar();
   	  } //讀完所有的字母并讀入下一個(gè)非字母的、字符
   	  for(i=0;i<LENGTH;i++)  //檢測(cè)是否為保留字
   	  { 
   	  	if(keyWord[i].word.toString().equals(currentToken.name.toString()))
   	  	   {keyFlag=1;break;}
   	  	   
   	  }
   	  
   	  if(keyFlag==1)  //是保留字
   	    {currentToken.code=i;
   	    currentToken.address=-1;
   	    }
   	    else  //是標(biāo)志符
   	    {  currentToken.code=34;
   	       alpaFlag=wordExist(); //確定入口地址需要檢測(cè)是否在販

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情久久五月天| 在线观看国产精品网站| 久久爱另类一区二区小说| 亚洲国产成人va在线观看天堂| 国产精品久久久久影院色老大| 国产午夜久久久久| 国产欧美日韩在线看| 国产午夜精品久久| 欧美高清在线视频| 国产精品美女久久久久久久网站| 国产精品久久久久毛片软件| 国产精品成人午夜| 伊人婷婷欧美激情| 亚洲成人自拍一区| 麻豆视频一区二区| 国产精品一区二区黑丝| 成人激情av网| 色综合久久66| 欧美日韩精品欧美日韩精品| 777亚洲妇女| 久久影视一区二区| 中文成人av在线| 尤物在线观看一区| 亚洲成人一区二区在线观看| 免费高清在线一区| 国产一区二区三区最好精华液| 国产盗摄精品一区二区三区在线| 成人免费不卡视频| 欧美伊人久久久久久久久影院| 91精品国产美女浴室洗澡无遮挡| 欧美va亚洲va香蕉在线| 国产欧美日韩另类一区| 亚洲精品久久久蜜桃| 午夜电影网亚洲视频| 极品少妇一区二区| 99精品国产视频| 91精品国产综合久久久久久久久久 | 欧美电影免费观看高清完整版在线| 精品成a人在线观看| 亚洲色图一区二区三区| 日韩在线一二三区| 国产精品一线二线三线| 日本高清不卡aⅴ免费网站| 欧美一区二区免费视频| 国产农村妇女毛片精品久久麻豆 | 美女尤物国产一区| 成人激情图片网| 欧美日韩视频第一区| 日韩精品自拍偷拍| 中文字幕中文字幕一区| 日韩精品免费专区| 暴力调教一区二区三区| 日韩欧美国产精品一区| 亚洲色图制服丝袜| 久久国产精品99久久人人澡| 91网址在线看| 久久在线观看免费| 性做久久久久久免费观看| 国产成人精品亚洲日本在线桃色| 欧美午夜电影在线播放| 国产欧美日本一区视频| 三级影片在线观看欧美日韩一区二区| 国产成人综合亚洲网站| 3d成人动漫网站| 一区二区欧美国产| 成人美女视频在线观看| 日韩亚洲欧美中文三级| 亚洲精品高清视频在线观看| 国产主播一区二区三区| 欧美三级在线看| 国产精品久久久久国产精品日日| 久久精品国产在热久久| 欧美性一区二区| 日韩久久一区二区| 大桥未久av一区二区三区中文| 日韩一区二区视频在线观看| 亚洲国产精品嫩草影院| 成人黄色国产精品网站大全在线免费观看| 51精品国自产在线| 亚洲综合色自拍一区| 成人精品鲁一区一区二区| 精品国产成人系列| 日本欧美一区二区在线观看| 欧美日韩国产高清一区二区 | 亚洲不卡一区二区三区| 在线免费一区三区| 国产精品家庭影院| 国产999精品久久久久久绿帽| 精品国产自在久精品国产| 日本美女一区二区三区| 欧美手机在线视频| 夜夜爽夜夜爽精品视频| av电影在线观看一区| 欧美国产精品久久| 国产a区久久久| 国产亚洲精品aa午夜观看| 精品一区二区三区视频 | 日韩伦理电影网| 暴力调教一区二区三区| 国产精品色噜噜| 成人av免费观看| 中文av一区二区| 成人av午夜电影| 成人欧美一区二区三区视频网页| 成人美女视频在线看| 亚洲欧洲日韩一区二区三区| av在线这里只有精品| 亚洲色欲色欲www在线观看| 不卡一区在线观看| 亚洲欧洲av一区二区三区久久| 成人激情电影免费在线观看| 亚洲色图视频网| 91国模大尺度私拍在线视频 | 99国产精品久久久久| 亚洲欧洲日韩在线| 在线看国产日韩| 日韩精品一区第一页| 日韩视频在线一区二区| 韩国精品免费视频| 国产日产欧美一区二区视频| 9色porny自拍视频一区二区| 亚洲女与黑人做爰| 欧美猛男男办公室激情| 久久国产精品色婷婷| 国产午夜精品一区二区三区嫩草| 国产suv精品一区二区6| 樱桃国产成人精品视频| 91精选在线观看| 国产白丝网站精品污在线入口| 国产精品国产三级国产aⅴ入口| 色一情一伦一子一伦一区| 午夜视频在线观看一区| 久久女同互慰一区二区三区| 成人av网站在线观看| 亚洲高清免费视频| 久久综合给合久久狠狠狠97色69| 北岛玲一区二区三区四区| 亚洲国产视频直播| 久久男人中文字幕资源站| 91在线国产观看| 日韩激情一区二区| 国产蜜臀av在线一区二区三区| 一本高清dvd不卡在线观看| 日韩一区精品字幕| 中文字幕欧美日韩一区| 欧美三级电影网站| 国产精品一二三区在线| 亚洲另类在线一区| 日韩欧美国产一区二区三区| 99精品久久99久久久久| 看片网站欧美日韩| 亚洲免费视频中文字幕| 精品少妇一区二区三区视频免付费| 成人免费va视频| 麻豆一区二区三| 一卡二卡三卡日韩欧美| 精品少妇一区二区三区免费观看 | 久久久久久一级片| 91精彩视频在线观看| 激情久久五月天| 亚洲成a人片综合在线| 国产精品嫩草99a| 欧美一区二区女人| 91精品1区2区| 不卡区在线中文字幕| 免费久久99精品国产| 日韩毛片精品高清免费| 久久久亚洲精华液精华液精华液 | 久久精品夜色噜噜亚洲a∨| 欧美色网站导航| 国产91色综合久久免费分享| 日本强好片久久久久久aaa| 亚洲麻豆国产自偷在线| 欧美激情中文字幕| 日韩一区二区不卡| 欧美日韩在线三级| 91在线一区二区| 国产电影一区二区三区| 蜜桃视频在线一区| 天天综合日日夜夜精品| 亚洲色欲色欲www| 国产精品色噜噜| 久久久久一区二区三区四区| 欧美一区二区三区性视频| 在线观看日韩一区| 91视频观看免费| 成人丝袜视频网| 国产一区欧美二区| 美女一区二区在线观看| 日本午夜一本久久久综合| 亚洲成人激情av| 亚洲精品视频在线观看网站| 国产精品免费aⅴ片在线观看| 精品成人一区二区三区| 欧美一区二区黄色| 欧美一区二区视频免费观看| 91精品欧美一区二区三区综合在| 欧美色大人视频| 欧美日韩高清在线播放| 欧美在线免费视屏|