词法分析

package com.xiangqiao.Analysis;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class AnalysisWord {

	public void Analysis(String str) {

		System.out.println("--------------字母-------------");
		String result="";
		String tmp="";
		for (int i = 0; i < str.length(); i++) {			
			Pattern pattern = Pattern.compile("[A-Za-z]");
			Matcher matcher = pattern.matcher(str.charAt(i) + "");
			if (matcher.matches()) {
				result=result+str.charAt(i);
			}else{
				tmp=result;
				result="";
			}
			if(!tmp.equals("")){
				System.out.println(tmp);
				tmp="";
			}
		}
		 System.out.println("--------------数字-------------");
		 for (int i = 0; i < str.length(); i++) {			
				Pattern pattern = Pattern.compile("[0-9]");
				Matcher matcher = pattern.matcher(str.charAt(i) + "");
				if (matcher.matches()) {				
					result=result+str.charAt(i);
				}else{
					tmp=result;
					result="";
				}
				if(!tmp.equals("")){
					System.out.println(tmp);
					tmp="";
				}
			}
		 System.out.println("--------------运算符-------------");
		 for (int i = 0; i < str.length(); i++) {			
				Pattern pattern = Pattern.compile("[+ - * / = >]");
				Matcher matcher = pattern.matcher(str.charAt(i) + "");
				if (matcher.matches()) {
					result=result+str.charAt(i);
				}else{
					tmp=result;
					result="";
				}
				if(!tmp.equals("")){
					System.out.println(tmp);
					tmp="";
				}
			}
		 System.out.println("--------------界符-------------");
		 for (int i = 0; i < str.length(); i++) {			
				Pattern pattern = Pattern.compile("[( ) { } ;]");
				Matcher matcher = pattern.matcher(str.charAt(i) + "");
				if (matcher.matches()) {
					result=result+str.charAt(i);
				}else{
					tmp=result;
					result="";
				}
				if(!tmp.equals("")){
					System.out.println(tmp);
					tmp="";
				}
			}
	}
}


 


 

package com.xiangqiao.main;

import com.xiangqiao.Analysis.AnalysisWord;
import com.xiangqiao.file.FileUtil;

public class MainClass {

	  public static void main(String[] args) {
		String result=new FileUtil().ReadFile("my.txt");		
		System.out.println(result);
		new AnalysisWord().Analysis(result);
	}
	
}


 

package com.xiangqiao.file;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;

public class FileUtil {

	public String ReadFile(String filePath) {
		String result ="";
		try {
			// 注意路径的写法,java默认的路径是到根目录下
			File f = new File(filePath);
			if (f.isFile() && f.exists()) {
				// 进行编码转换,避免出现乱码
				InputStreamReader read = new InputStreamReader(
						new FileInputStream(f), "utf-8");
				BufferedReader br = new BufferedReader(read);
				String line ="";
				while ((line = br.readLine()) != null) {
					result = result+line;
				}
				read.close();
			} else {
				System.out.println("文件读取失败");
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			return result;
		}
	}
}


 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值