词法分析器Java

本文章是一篇关于词法分析的程序代码。

本代码还并不完善,只是一雏形还有许多需要改进的地方。

仅供参考:如有问题可发邮件询问 [email protected]

词法分析主程序:Wordanalysis.java

package com.lfsf.lls;

import java.util.Scanner;

public class Wordanalysis {
	@SuppressWarnings("resource")
	public static void main(String args[]) {
		//输入程序段
		System.out.println("请输入程序代码段:");
		Scanner sc = new Scanner(System.in);
		String str1 = sc.nextLine();
		String temp = "";
		String temp1 = "";
		int i;
		int start = 0;
		//遍历输入的程序段对其进行判断
		for (i = 0; i < str1.length(); i++) {
			temp = str1.substring(i, i + 1);
			if (Operator.isOperator(temp)) {
				start = i + 1;
				Keyword.isKeyword(temp1);
			} else {
				temp1 = str1.substring(start, i);
			}
			if (Limitword.isOperator(temp)) {
				start = i + 1;
				Keyword.isKeyword(temp1);
			} else {
				temp1 = str1.substring(start, i + 1);
			}
		}
	}
}


词法分析关键字类:Keyword.java

package com.lfsf.lls;

public class Keyword {
	//关键字数组
	static private String word[] = {"switch","break","if","then","else","while","write","read","do","int","const","char","float","double","for","String","static","public","private","boolean"};
	
	public String[] getWord() {
		return word;
	}
	//判断是否为关键字数组
	static public boolean isKeyword(String paramater){
		for(String value:word){
			if(paramater.equals(value)){
				System.out.println("<" + "\"" + paramater + "\"" + "\t关键字" + ">");
				return true;
			}
		}
		System.out.println("<" + "\"" + paramater + "\"" + "\t非关键字" + ">");
		return false;
	}
	
	
}


扫描二维码关注公众号,回复: 2558776 查看本文章

词法分析运算符类:Operator.java

package com.lfsf.lls;

public class Operator {
	//运算符数组
	static private String word[] = {"+","-","*","/","%","<",">","="};
	
	public String[] getWord() {
		return word;
	}
	//判断是否为运算符方法
	static public boolean isOperator(String paramater){
		for(String value:word){
			if(paramater.equals(value)){
				System.out.println("<" + "\"" + paramater + "\"" + "\t运算符" + ">");
				return true;
			}
		}
		return false;
	}
	
}


词法分析边界符类:Limitword.java

package com.lfsf.lls;

public class Limitword {
	//边界符数组
	static private String word[] = {"(",")","[","]","{","}",";"," "};
	
	public String[] getWord() {
		return word;
	}
	//判断是否为边界符方法
	static public boolean isOperator(String paramater){
		for(String value:word){
			if(paramater.equals(value)){
				//如果是空格则不进行输出
				if(" ".equals(paramater) || "".equals(paramater)) {
					return true;
				}
				System.out.println("<" + "\"" + paramater + "\"" + "\t边界符" + ">");
				return true;
			}
		}
		return false;
	}
}

猜你喜欢

转载自blog.csdn.net/Mr_lilongsha/article/details/78448365