今天老师要我们写一个简单的词法分析程序,实现简单的词法分析。经过我一个下午的努力,下面的简单词法分析就出来了。(本人实力有限,目前只能做到这样了。🥺)
import java.io.FileReader;
/**
* 基于Java词法分析程序
* author:微笑伯爵
* data:2021.10.26
*/
public class Compile {
/**
* 程序要求识别如下:
*
* 识别保留字:begin end if then else while do
* 单词种别码为:1 2 3 4 5 6 7
* <p>
* 数字的种别码为:8
* <p>
* 单词种别码为:9
* <p>
* 特殊字符包括 : , ; { } ( )
* 种别码为: 10 11 12 13 14 15
* <p>
* 运算符包括: + - * / < > <= = >= <>
* 种别码为: 16 17 18 19 20 21 22 23 24 25
*/
private static String[] key = {"begin", "end", "if", "then", "else", "while", "do"};//待识别的关键字数组
private static String[] border = {",", ";", "{", "}", "(", ")"};//待识别的特殊字符数组
private static String[] arithmetic = {"+", "-", "*", "/"};//待识别的算数运算数组
private static String[] relation = {"<", ">", "<=", "=", ">=", "<>"};//待识别的逻辑运算数组
private static String[] constNumber = new String[20];//用于存储用户自己定义的常数
private static String[] label = new String[20];//用于存储用户自己定义的单词
private static int constNum = 0;//动态记录用户定义的整形数个数
private static int labelNum = 0;//动态记录用户定义的单词个数
private static FileReader fileReader = null;//全局字符流
public static void main(String[] args) throws Exception {
String fileName = "D: