可视化界面(小试牛刀)

import java.util.*;
import java.util.EventListener;
import java.awt.event.*;
import java.awt.*;
import java.io.*;
import java.lang.*;
import java.awt.datatransfer.*;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class WindowTextReader extends JFrame implements ActionListener
{
JPanel jp=new JPanel();
JButton jb=new JButton("分析");
JButton jb1=new JButton("退出");
JButton jb2=new JButton("拿取文件");
JTextArea tx=new JTextArea();
String key[]={"abstract","default","if","private","this","boolean","do",
"implements","protected","throw","break","double","import","public",
"throws","byte","else","instanceof","return","transient","case",
"extends","int","short","try","catch","final","interface","static",
"void","char","finally","long","strictfp","volatile","class","float",
"native","super","while","const","for","new","switch","continue",
"goto","package","synchronized"
};
char operate[]={'+','-','*','/','@','%','<','>','[',']','{','}',',',':','"','.','&','|'};//未完成
public WindowTextReader()
{
setSize(600,600);
setLocation(400,400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
layoutPanel();
add(jp);
}
private void layoutPanel()
{
JScrollPane jsp=new JScrollPane(tx);
jp.setLayout(null);
jb.setLocation(20,260);
jb.setSize(100,20);
jb1.setLocation(20,340);
jb1.setSize(100,20);
jb2.setLocation(20,180);
jb2.setSize(100,20);
jsp.setBounds(150,30,430,500);
jp.add(jb);
jp.add(jb1);
jp.add(jb2);
jp.add(jsp);
jb2.addActionListener(this);
jb1.addActionListener(this);
jb.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==jb2)
{
JFileChooser chooser = new JFileChooser();
int returnVal = chooser.showOpenDialog(this);
if(returnVal == JFileChooser.APPROVE_OPTION) {
File file=chooser.getSelectedFile();
try{
FileInputStream fis=new FileInputStream(file);
byte b[]=new byte[1000];
int length=0;
while((length=fis.read(b,0,1000))!=-1)
{
tx.append(new String(b,0,length));
}

}catch(IOException ee){
System.out.println("文件没有打开,检查故障.....");

}

System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}

}
else if(e.getSource()==jb1)
{
System.exit(0);
}
else
{
String string=tx.getText();
StringTokenizer fenxi=new StringTokenizer(string,"\t\n");
int number=fenxi.countTokens();
while(fenxi.hasMoreTokens())
{
String str=fenxi.nextToken();
System.out.println(str);
StringTokenizer fenxi1=new StringTokenizer(str," .;");
while(fenxi1.hasMoreTokens())
{
String str1=fenxi1.nextToken();
for(int i=0;i<key.length;i++)
if(str1.equals(key[i]))
System.out.println(str1+"是关键字");

// System.out.println(str1+"是变量名或类名");
for(int j=0;j<operate.length;j++)
if(str1.indexOf(operate[j])!=-1)
System.out.println(operate[j]+"是一个界符或者操作符");

StringTokenizer fenxi2=new StringTokenizer(str1," .{};");
while(fenxi2.hasMoreTokens())
{
String str2=fenxi2.nextToken();
/*for(int i=0;i<key.length;i++)
if(str2.equals(key[i]))
System.out.println(str1+"是关键字");*/

if(str2.indexOf("(")!=-1&&str2.indexOf(")")!=-1)
{
String ss;
int tt=str2.indexOf("(");
ss=str2.substring(0,tt);
System.out.println(ss+"是方法名");
}


}

}


}
}
}

public static void main(String args[])
{
WindowTextReader fr=new WindowTextReader();
fr.setVisible(true);
}

}



我(一个初学者)的粗糙之做 请各位大师高手们指点 模拟词法分析器的程序 其中只分析了关键字 界符和方法名称 还差一些东西比如 变量名 注释语句没有分析出来 希望有更好见解的多多提示 谢谢!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值