📄 wordanalyse2.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 + -