`
幽佐0911
  • 浏览: 12013 次
  • 性别: Icon_minigender_1
  • 来自: 长春
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

可视化界面(小试牛刀)

阅读更多
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);
	}
	
}



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

相关推荐

Global site tag (gtag.js) - Google Analytics