java词法分析器是由C语言编译而成,网搜了一下,发现描述java词法分析的还是很少,所以把自己写好的发这边来,让大家参考下。大家可以在我的基础上增加一些自己的代码,使其更加完善。需要注意的是,这些代码中有一些功能还未完善,大家可以自己研究研究。
词法分析器步骤
先写其正则式,然后NFA,然后DFA,然后对其进行优化,最后准备工作做好了,就可以开始写代码了。
主函数
enum Token_Type {
keyword =1, //关键字
Identifier, //标识符
operatorr, //运算符
operatorrd, //单运算符
constant, //常量
escape, //转义符
separator, //界限符
notype, //没有类型
zhushi //注释类型
};
对其单词的类型定义成枚举。
typedef struct Token {
Token_Type type; //其类型
char *lexeme ; //字符串
int value; //属性值
}Token;
//返回单词的结构。
void InitScanner(char *ch){
fp1 = fopen(ch,"r+");
LineNo = 1;
}//初始化分析器。
void CloseScanner(){
fclose(fp1);
}//关闭分析器
void EmptyTokenString(){
memset(TokenBuffer,0,100);
}//清空缓冲区
static void AddCharTokenString(char Char)
{
int TokenLenth=strlen(TokenBuffer);
if(TokenLenth+1==sizeof(TokenBuffer)) return;
TokenBuffer[TokenLenth]=Char;
TokenBuffer[TokenLenth+1]='\0';
} //将一个字符添加到缓冲区
static char GetChar(){
char Char;
Char = fgetc(fp1);
return Char;
}//从文件中读取一个字符
static void BackChar(char Char) {
if(Char!=EOF){
ungetc(Char,fp1);
}
}//将其字符后退一个。
static Token JudgeKeyToken(char *IDstring);//这个函数实现对关键字进行判断





















大小: 80.8M
大小: 450M
JDK 8(Java SE Development Kit)8u291 64位版
Keil C51V9.00 uVision4破解版
Java SE Development Kit(JDK6)6u43 多国语言版
易语言33个皮肤模块绿色版
STC单片机ISP下载编程软件v6.85i 官方最新版
易语言5.90精简版
lingoV14.0 绿色中文版
AutoIt(AU3)v3.3.14.2 汉化版
派森(Python)v2.7.18 官方正式版【x86|x64】
jdk99.0.4 官方最新版
VBScript编辑器(VbsEdit)V5.2.4.0 汉化绿色特别版
Delphi77.0 Build 8.1企业版龙卷风集成Update1
pyscripter x642.5.3 官方最新版
Delphi 7(集成控件)v7.0Build8.1企业版龙卷风集成Update1
visual studio emulator for androidv1.1.622 官方最新版
Python编程和调试工具(ActivePython)v3.6.0.3600 英文版
html5编程工具(LayaAir IDE)2.7.0 官方最新版
《派森》(Python)3.6.5 win32 英文安装版