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

📄 wordanalyse2.java

📁 编译原理
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class initframe implements ActionListener
{
	public TextField t1=new TextField("输入语句",50);
    public  Frame fr=new Frame("词法分析器");
    Button b=new Button("开始分析");
public TextField t2=new TextField(50);
public TextField t3=new TextField(50);
public TextField t4=new TextField(50);
public TextField t5=new TextField(50); 
public TextField t6=new TextField(50);
public TextField t7=new TextField(50);
public TextField t8=new TextField(50);
String s1=new String("关键字:");
String s2=new String("界符:");
String s3=new String("标识符:");
String s4=new String("运算符:");
String s5=new String("整数:");
String s6=new String("实数:");
String s7=new String("其它符号:");
String s8=new String("  ");
String s;

    public initframe()
    {b.addActionListener(this);
	fr.setLayout(new FlowLayout());
	fr.add(b);
	fr.add(t1);
	fr.add(t2);
	fr.add(t3);
	fr.add(t4);
	fr.add(t5);
	fr.add(t6);
	fr.add(t7);
	fr.add(t8);
	fr.resize(400,300);
	fr.setBackground(Color.orange);
	fr.setVisible(true);
	
	fr.addWindowListener 
   (new WindowAdapter () 
   { 
    public void windowClosing (WindowEvent e) 

   { 
 
   fr.setVisible(false);
    System.exit(0);
   } 

   });
   }
public boolean iskeyword(String x)
 
 {String xk[]={"if","else","goto","do","while","int","for","float","break","loop","char","return"};
  int j,flagk=0;
  x=x.trim();
  for(j=0;j<12;j++) if(x.equals(xk[j])) {flagk=1;break;}
 	if (flagk==1) return true;
 	else return false;
 	
 }
 
 public boolean isint(String x)
 {
 	int vi=0,flagv=0;
 	char xx[];
 	 xx=x.toCharArray();
     while(xx[vi]!=' ')
	 {if(Character.isDigit(xx[vi])) vi++;
	 else {flagv=1;break;}
     }
	 if (flagv==1) return false;
	 else return true;
 	
 	
 }
 
 public boolean iscalcu(char x)
 {int i,flags=0;
  char    chs[]={'+','-','*','/','>','<','!','=','%'};
  for(i=0;i<9;i++)
	  if(x==chs[i]) {flags=1;break;}
	  if (flags==1) return true;
       else return false;
 }
 
 public boolean isbound(char x)
 {int i,flagb=0;
  char   chb[]={',',';','(',')','{','}','[',']'};
  for(i=0;i<8;i++)
	  if(x==chb[i]) {flagb=1;break;}
	  if (flagb==1) return true;
return false;
 }
 

 public void actionPerformed(ActionEvent a)
{  
    int sw,st=0,i,j;
    char[] strs;
    char[] strd=new char[50];
    String ss=new String();
    String sb=new String();
 if(a.getActionCommand ().equals("开始分析"))
 	{
 	s=t1.getText().trim();
 	sw=s.length();
 	s=s.concat("#");
 	strs=s.toCharArray();
    while(st<sw)
 	{
 	if(Character.isLetter(strs[st])) 
	{i=0;
		 do {
    	strd[i++]=strs[st];st++;
  }
    while((Character.isLetter(strs[st])||Character.isDigit(strs[st]))&&(st<sw));
   strd[i]=' ';
  for(j=0,ss="";j<=i;j++)
  
  {sb=Character.toString(strd[j]);
   ss=ss.concat(sb);    
}

if(iskeyword(ss))
     s1=s1.concat(ss)  ;
    else s3=s3.concat(ss);
   }
   
   else if(Character.isDigit(strs[st]))
	{i=0;
		do strd[i++]=strs[st++];
		while(Character.isDigit(strs[st])||(strs[st]=='.')&&(st<sw));
        strd[i]=' ';
        for(j=0,sb="";j<=i;j++) sb=sb.concat(Character.toString(strd[j]));
	  
	  if(isint(sb))
	    s5=s5.concat(sb) ;
	    else  s6=s6.concat(sb);
	  }
else if(iscalcu(strs[st])) 
	  {i=0;
	     do strd[i++]=strs[st++];
		 while(iscalcu(strs[st])&&(st<sw));
	     strd[i]=' ';
         
         for(j=0;j<=i;j++) s4=s4.concat(Character.toString(strd[j]));
	   
	  }
else if(isbound(strs[st]))
	    {s2=s2.concat(Character.toString(strs[st++]));
         s2=s2.concat(s8); 
        } 
        
         else
       {if(((int)strs[st]!=32)&&((int)strs[st]!=35))
			  
          {s7=s7.concat(Character.toString(strs[st]));
           s7=s7.concat(s8);}	  
	       st++;
	  }
  }//while ends
    
	t2.setText(s1);
 	t3.setText(s2);
 	t4.setText(s3);
 	t5.setText(s4);
 	t6.setText(s5);
 	t7.setText(s6);
 	t8.setText(s7);
 	
	} 
  }
}
public class WordAnalyse2 
	{
	 public static void main(String args[])

	{
		new initframe();
	}
	
	
	}

⌨️ 快捷键说明

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