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
分享到:
相关推荐
rocketMq可视化界面,springboot,打jar包可用
MYSQL工具包+可视化界面 可视化界面是navicat,非常容易上手
MySQL 图形 界面 mysql可视化界面MySQL 图形 界面 mysql可视化界面MySQL 图形 界面 mysql可视化界面MySQL 图形 界面 mysql可视化界面MySQL 图形 界面 mysql可视化界面MySQL 图形 界面 mysql可视化界面MySQL 图形 ...
java语言、简单实现了哈夫曼编码、解码的可视化界面。
大屏展示后台数据可视化UI界面 大屏展示数据可视化UI界面 大气科技可视化数据界面 大数据监控可视化平台 大数据可视化分析UI 大数据可视化界面大屏展示页面 大数据可视化科技风格环境治理 大数据可视化科技风格数据...
rocketmq集群可视化界面项目,直接修改配置中的集群ip地址即可~
旅游可视化大数据UI网页界面 门户类网站微信公众号可视化大数据统计界面 某学校招生可视化大屏数据大屏UI界面 深空蓝科技感登录酷炫界面UI 深蓝大屏展示数据可视化UI界面 深蓝精准营销数据可视化大数据后台UI界面 ...
SourceTreeSetup-3.4.9 Git可视化界面 安装包 SourceTreeSetup-3.4.9 Git可视化界面 安装包 SourceTreeSetup-3.4.9 Git可视化界面 安装包 SourceTreeSetup-3.4.9 Git可视化界面 安装包 SourceTreeSetup-3.4.9 Git...
mysql 可视化界面 如果你不是很了解命令行编写sql的话,这是个不错的选择
1、YOLOv5烟雾检测训练好的模型,可以直接使用,检测 的目标类别名称为smoke,并可以在可视化界面上直接运行,代码已集成好,直接运行就可展示可视化界面,可以通过界面上的 按钮选择图片进行烟雾检测,并且可以调用...
免费的 mysql可视化界面 sqlyong mysql编辑器
Redis的客户端连接工具Java版,redisclient-win32.x86_64.2.0.jar Redis可视化界面管理工具
CODESYS之切换人机界面 在一个完整的项目中,通常需要多个人机界面,如主页,配方,报警等,如何实现页面之间的切换呢?
自动生成Mybatis 实体类、DaoMapper、XML可视化界面工具自动生成Mybatis 实体类、DaoMapper、XML可视化界面工具
IDL使用界面编辑实现界面的简单可视化,包括打开(JPEG、Bmp、tiff等格式)、保存、退出、KL、图像增强(罗伯特、索伯尔变换)、边缘提取、直方图均衡化、对比度增强、波段运算等功能
Visual Editor 的第一个具体实现,作为一个针对 AWT/Swing 的 GUI 构建器;在eclipse上用可视化的插件来行进界面的开发。
大家期待已久的oracle可视化界面啊 toad很好用 不过大家要慢慢学啊
DB2数据由一个库迁移到另一个库,可视化操作界面
需要zookeeper可视化界面ZooInspector的用血可以下载,方便管理zookeeper