首页 游戏 软件 排行 专题
java词法分析器
  • java词法分析器绿色版

  • 大小:26KB更新:2014-11-27 17:12
  • 类别:编程工具系统:WinAll, Win7

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);//这个函数实现对关键字进行判断

玩家留言 跟帖评论
查看更多评论
相关应用
猜你喜欢

开发者其他应用

同类下载
其它版本