网友评分:3分
java词法分析器是由c语言编译而成,是款比好用的编程软件,大家可以试用一下,在原有的基础上增加一些自己的代码,使其更加完善。需要注意的是,这些代码中有一些功能还未完善,大家可以自己研究研究。
先写其正则式,然后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);/这个函数实现对关键字进行判断