资源简介

基于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.embed.manifest
     文件         472  2013-06-18 10:32  cifa1\cifa1\Debug\cifa1.exe.embed.manifest.res
     文件         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\link-cvtres.read.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link-cvtres.write.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.1368-cvtres.read.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.1368-cvtres.write.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.1368.read.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.1368.write.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.2344-cvtres.read.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.2344-cvtres.write.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.2344.read.1.tlog
     文件           2  2013-06-18 10:59  cifa1\cifa1\Debug\link.2344.write.1.tlog
............此处省略52个文件信息

评论

共有 条评论