- 軟件大?。?span>26KB
- 軟件語(yǔ)言:中文
- 軟件類(lèi)型:國(guó)產(chǎn)軟件
- 軟件類(lèi)別:免費(fèi)軟件 / 編程工具
- 更新時(shí)間:2014-11-28 21:22
- 運(yùn)行環(huán)境:WinAll, WinXP, Win7
- 軟件等級(jí):
- 軟件廠商:
- 官方網(wǎng)站:http://m.dineoutnj.com
12.37M/中文/5.0
46.03M/中文/10.0
192KB/中文/0.0
2.05M/中文/10.0
2.02M/中文/3.3
java詞法分析器是由c語(yǔ)言編譯而成,是款比好用的編程軟件,大家可以試用一下,在原有的基礎(chǔ)上增加一些自己的代碼,使其更加完善。需要注意的是,這些代碼中有一些功能還未完善,大家可以自己研究研究。
先寫(xiě)其正則式,然后NFA,然后DFA,然后對(duì)其進(jìn)行優(yōu)化,最后準(zhǔn)備工作做好了,就可以開(kāi)始寫(xiě)代碼了。
主函數(shù)
enum Token_Type {
keyword =1, //關(guān)鍵字
Identifier, //標(biāo)識(shí)符
operatorr, //運(yùn)算符
operatorrd, //單運(yùn)算符
constant, //常量
escape, //轉(zhuǎn)義符
separator, //界限符
notype, //沒(méi)有類(lèi)型
zhushi //注釋類(lèi)型
};
對(duì)其單詞的類(lèi)型定義成枚舉。
typedef struct Token {
Token_Type type; //其類(lèi)型
char *lexeme ; //字符串
int value; //屬性值
}Token;
//返回單詞的結(jié)構(gòu)。
void InitScanner(char *ch){
fp1 = fopen(ch,"r+");
LineNo = 1;
}//初始化分析器。
void CloseScanner(){
fclose(fp1);
}//關(guān)閉分析器
void EmptyTokenString(){
memset(TokenBuffer,0,100);
}//清空緩沖區(qū)
static void AddCharTokenString(char Char)
{
int TokenLenth=strlen(TokenBuffer);
if(TokenLenth+1==sizeof(TokenBuffer)) return;
TokenBuffer[TokenLenth]=Char;
TokenBuffer[TokenLenth+1]='\0';
} //將一個(gè)字符添加到緩沖區(qū)
static char Getchar(){
char Char;
Char = fgetc(fp1);
return Char;
}//從文件中讀取一個(gè)字符
static void BackChar(char Char) {
if(Char!=EOF){
ungetc(Char,fp1);
}
}//將其字符后退一個(gè)。
static Token JudgeKeyToken(char *IDstring);//這個(gè)函數(shù)實(shí)現(xiàn)對(duì)關(guān)鍵字進(jìn)行判斷
請(qǐng)描述您所遇到的錯(cuò)誤,我們將盡快予以修正,謝謝!
*必填項(xiàng),請(qǐng)輸入內(nèi)容