本文章是一篇关于词法分析的程序代码。
本代码还并不完善,只是一雏形还有许多需要改进的地方。
仅供参考:如有问题可发邮件询问 [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;
}
}
词法分析运算符类: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;
}
}