資源簡介
基于C語言的詞法分析器,里面包含有完整代碼和預定的測試代碼文件,自己寫的,可用。

代碼片段和文件信息
//?cifa1.cpp?:?定義控制臺應用程序的入口點。
#include?“stdafx.h“
FILE?*fp=NULL;//源程序文件?
FILE?*fp1?=?fopen(“詞法分析結果.txt““w“);//把詞法分析結果寫到文件“分析結果.txt“中
char?temp[20];
char?str;
char?*keyWord[6]?=?{“for““if““then““else““while““do“};//關鍵字?1—6
char?*Others[]?=?{“+““-““*““/“?“:“?“:=““<>““<=““>““>=““=“?“;“??“(““)““#“};//運算符,分隔符13-16?17-18?20-28?0
void?ClearTemp()
{
for(int?i=0;i<20;i++)
{
temp[i]=NULL;
}
}
void?NumberProcess(char?str)
{
char?ch;
int?i=1;
temp[0]?=?str;
while(!feof(fp))
{
ch?=?fgetc(fp);
if(isdigit(ch))
{
temp[i++]?=?ch;
}
else
{?
printf(“(%d%s)\n“11temp);
fprintf(fp1“(%d%s)\n“11temp);
break;
}
}
fseek(fp-1SEEK_CUR);
ClearTemp();
}
void?LetterProcess(char?str)
{
char?ch;
int?i=1;
temp[0]?=?str;
while(!feof(fp))
{
ch?=?fgetc(fp);
if(isalpha(ch)||isdigit(ch))
{
temp[i++]?=?ch;
}
else
{
int?j=0;
for(j=0;j<6;j++)
{
if(strcmp(tempkeyWord[j])?==?0)
{
printf(“(%d%s)\n“j+1temp);
//fputs(tempfp1);
fprintf(fp1“(%d%s)\n“j+1temp);
break;
}
}
if(j==6)
{
//printf(“(%s%d)\n“pj+1);
printf(“(%d%s)\n“10temp);
//fputs(tempfp1);
fprintf(fp1“(%d%s)\n“10temp);
}
fseek(fp-1SEEK_CUR);
break;
}
}
ClearTemp();
}
void?OtherProcess(char?str)
{
switch(str)//{“+““-““*““/“?“:“?“:=““<>““<=““>““>=““=“?“;“??“(““)““#“};//運算符,分隔符13-16?17-18?20-28?0
{
case?‘+‘:?
{
printf(“(%d%c)\n“13str);
fprintf(fp1“(%d%c)\n“13str);
break;
}
case?‘-‘:?
{
printf(“(%d%c)\n“14str);
fprintf(fp1“(%d%c)\n“14str);
break;
}
case?‘*‘:
{
printf(“(%d%c)\n“15str);
fprintf(fp1“(%d%c)\n“15str);
break;
}
case?‘/‘:?
{
printf(“(%d%c)\n“16str);
fprintf(fp1“(%d%c)\n“16str);
break;
}
case?‘:‘:
{
char?tp;
tp?=?fgetc(fp);
if(tp?==?‘=‘)
{
printf(“(%d%c%c)\n“18strtp);
fprintf(fp1“(%d%c%c)\n“18strtp);
break;
}
else
{
printf(“(%d%c%c)\n“17strtp);
fprintf(fp1“(%d%c%c)\n“17strtp);
fseek(fp-1SEEK_CUR);
break;
}
????????????}
case?‘<‘:??//“<““<>““<=““>““>=““=“?“;“??“(““)““#“};//運算符,分隔符20-28?0
{
char?tp;
tp?=?fgetc(fp);
if(tp?==?‘>‘)
{
printf(“(%d%c%c)\n“21strtp);
fprintf(fp1“(%d%c%c)\n“21strtp);
break;
}
else?if(tp?==?‘=‘)
{
printf(“(%d%c%c)\n“22strtp);
fprintf(fp1“(%d%c%c)\n“22strtp);
break;
}
else
{
printf(“(%d%c)\n“20str);
fprintf(fp1“(%d%c%c)\n“20strtp);
fseek(fp-1SEEK_CUR);
break;
}
????????????}
case?‘>‘:?//“>““>=““=“?“;“??“(““)““#“};//運算符,分隔符23-28?0
{
char?tp;
tp?=?fgetc(fp);
if(tp?==?‘
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-06-18?11:07??cifa1\
?????目錄???????????0??2013-06-18?10:59??cifa1\Debug\
?????文件???????35328??2013-06-18?10:59??cifa1\Debug\cifa1.exe
?????文件??????333764??2013-06-18?10:59??cifa1\Debug\cifa1.ilk
?????文件??????486400??2013-06-18?10:59??cifa1\Debug\cifa1.pdb
?????目錄???????????0??2013-06-18?09:31??cifa1\backup\
?????文件????????4976??2013-06-18?00:38??cifa1\backup\cifa1.cpp
?????文件??????????92??2013-06-18?09:22??cifa1\backup\cifa1.txt
?????目錄???????????0??2013-06-17?19:57??cifa1\cifa1\
?????目錄???????????0??2013-06-18?10:59??cifa1\cifa1\Debug\
?????文件????????3094??2013-06-18?10:59??cifa1\cifa1\Debug\CL.read.1.tlog
?????文件?????????532??2013-06-18?10:59??cifa1\cifa1\Debug\CL.write.1.tlog
?????文件?????????406??2013-06-18?10:32??cifa1\cifa1\Debug\cifa1.exe.em
?????文件?????????472??2013-06-18?10:32??cifa1\cifa1\Debug\cifa1.exe.em
?????文件?????????381??2013-06-18?10:59??cifa1\cifa1\Debug\cifa1.exe.intermediate.manifest
?????文件??????????43??2013-06-18?10:59??cifa1\cifa1\Debug\cifa1.lastbuildstate
?????文件????????2761??2013-06-18?10:59??cifa1\cifa1\Debug\cifa1.log
?????文件???????16881??2013-06-18?10:59??cifa1\cifa1\Debug\cifa1.obj
?????文件?????1310720??2013-06-18?10:32??cifa1\cifa1\Debug\cifa1.pch
?????文件?????????200??2013-06-18?10:32??cifa1\cifa1\Debug\cifa1_manifest.rc
?????文件????????1298??2013-06-18?10:59??cifa1\cifa1\Debug\cl.command.1.tlog
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
?????文件???????????2??2013-06-18?10:59??cifa1\cifa1\Debug\li
............此處省略52個文件信息
- 上一篇:C語言編寫的乒乓球游戲
- 下一篇:銀行家算法 死鎖避免 可視化 MFC
評論
共有 條評論