`
幽佐0911
  • 浏览: 12132 次
  • 性别: 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
分享到:
评论

相关推荐

    LabVIEW 8.20 操作实例

    3. **数据可视化**:LabVIEW擅长于数据的实时显示和分析,例如波形图、条形图、仪表盘等,便于工程师对实验或系统状态进行实时监控。 4. **VI(Virtual Instrument)**:在LabVIEW中,一个程序被称作VI,由前面板和...

    Vray中文版基础视频教程下载课程素材06-牛刀小试.zip

    Vray是一款广泛应用于建筑可视化、产品设计、室内设计等多个领域的专业渲染引擎,以其高质量的光影效果和高效的计算能力而闻名。 本教程的核心知识点主要包括以下几个方面: 1. **Vray界面介绍**:学习Vray的基本...

    cocos2dx学习笔记之牛刀小试1

    在“cocos2dx学习笔记之牛刀小试1”中,我们将深入探讨cocos2dx 3.2版本的核心概念和基本用法,通过实际的源码例子来增强理解。 1. **Director(导演)**: Cocos2d-x中的`Director`类是整个游戏的控制器,负责...

    Python程序设计教程.pptx

    * 小试牛刀——文件:Python文件输入输出、文件读写操作 * 设计自己的积木块——函数:函数的定义、函数的使用、函数的参数传递 * 使用别人的积木块——模块与包:Python的模块和包机制、模块的导入和使用 知识点2...

    ASWING教程

    小试牛刀:Hello 日程 - **初识ASWING**:本节通过一个简单的“Hello 日程”应用,让开发者初步了解AsWing的基本使用方法,包括项目的搭建、基础组件的使用等。 #### 3. 创建主界面 - **规划主界面**:介绍如何...

    LabVIEW课件,可以学习一下

    此外,可能还会涉及到如何将数据可视化,比如创建自定义的图表和报表,这对于科学研究和工程应用来说至关重要。 总的来说,这套LabVIEW课件提供了一个全面的学习路径,从基础的编程概念到实际的数据处理,都是为...

    《labview 8.20 程序设计从入门到精通》-书本实例

    4. **第7章 Chart图表和Graph波形图**:LabVIEW的强大之处在于其强大的数据可视化能力。Chart用于显示连续变化的数据,而Graph则适合显示时间序列或实时波形数据。掌握这两者可以帮助你创建直观的用户界面,进行数据...

    《LabVIEW程序设计从入门到精通》实列1

    在第2章“牛刀小试”中,读者将首次接触LabVIEW的基本操作,包括创建虚拟仪器(VI)、布局界面、连接数据流以及运行和调试程序。这一章节旨在让新手快速上手,理解LabVIEW的编程环境和工作流程。 第5章“程序结构”...

    LABVIEW8.20.rar_LabView编程_LabView_

    1. **第2章 牛刀小试**:这个章节可能是对LabView基本操作的介绍,包括创建虚拟仪器(VI)、布局界面、连接前端面板控件和程序框图以及基本的数据类型和运算。 2. **第7章 Chart图表和Graph波形图**:这部分内容...

Global site tag (gtag.js) - Google Analytics