资源简介

可以实现的功能:识别关键字,普通标识符,文件形式输入输出,过滤空格、注释等功能

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include 
#include  
using namespace std;

char *Key[11]={“if““do““else““int““for““while““return““break““continue“};//定义关键字(保留字)
char Word[20]ch;//存储识别出的单词流
int syn;

int IsAlpha(char c) //判断是否为字母
{                
if(((c<=‘z‘)&&(c>=‘a‘))||((c<=‘Z‘)&&(c>=‘A‘))) 
return 1;//如果是字母,返回1
else 
return 0;//如果不是字母,返回0
}
 
int IsNum(char c)//判断是否为数字
{                
if(c>=‘0‘&&c<=‘9‘)
return 1;//如果是数字,返回1
else
return 0;//如果不是数字,返回0
}

int IsKey(char *Word)//识别关键字函数
{          
int mi;
for(i=0;i<9;i++)
{
if((m=strcmp(WordKey[i]))==0)
return 1;//如果是关键字,返回1
}
return 0;
}

void scanner(FILE *fpFILE *hp)//扫描函数,*fp是个指针
{     
//int k=0;
char Word[20]={‘\0‘};
char ch;
int ic;
ch=fgetc(fp);//获取字符,指针fp并自动指向下一个字符

if(IsAlpha(ch)) //判断该字符是否是字母,调用IsAlpha函数,ch传递参数
{
Word[0]=ch;//Word数组存储字符串的输出流
ch=fgetc(fp);
i=1;
while(IsNum(ch)||IsAlpha(ch))//判断该字符是否是字母或数字
{   

Word[i]=ch;
i++;//指针后移
ch=fgetc(fp);//ch是指针指向的内容
}
Word[i]=‘\0‘;//‘\0‘ 代表字符结束(空格)
fseek(fp-11);//回退一个字符

c=IsKey(Word);//判断是否是关键字,传递的是一个指针,根据返回的值进行下面的判断
if(c==0)//不是关键字
{
syn=1;//普通标识符
printf(“(%d%s)\n“synWord);
fprintf(hp“(%d%s)\n“synWord);
}
else
{
syn=3;//关键字
printf(“(%d%s)\n“synWord);
fprintf(hp“(%d%s)\n“synWord);
}
}
else//开始判断的字符不是字母
if(IsNum(ch))//判断是否是数字
{
Word[0]=ch;
ch=fgetc(fp);
i=1;
while(IsNum(ch)||ch==‘.‘||ch==‘e‘||ch==‘-‘)
{ Word[i]=ch;
i++;
ch=fgetc(fp);
}
Word[i]=‘\0‘;//\0是字符串结束标志
fseek(fp-11);//回退
syn=2;//无符号实数
printf(“(%d%s)\n“synWord);
            fprintf(hp“(%d%s)\n“synWord);
}
else//开始判断的字符不是字母也不是数字
{
Word[0]=ch;
switch(ch)
{
case‘(‘:
case‘)‘:
case‘{‘:
case‘}‘:
case‘‘:
case‘;‘:
    syn=5;//界符
printf(“(%d%s)\n“synWord);
fprintf(hp“(%d%s)\n“synWord);
break;
case‘+‘:
syn=4; //判断结果为“+“
printf(“(%d%s)\n“synWord);
fprintf(hp“(%d%s)\n“synWord);
 break;
case‘-‘:
syn=4; //判断结果为“-“
printf(“(%d%s)\n“synWord);
fprintf(hp“(%d%s)\n“synWord);
break;
case‘*‘:
    syn=4;//判断结果是*
printf(“(%d%s)\n“synWord);
    fprintf(hp“(%d%s)\n“synWord);
break;

case‘/‘:
ch=fgetc(fp);
Word[1]=ch;
if(ch==‘/‘)
{
    i=1;
while(ch!=‘\n‘)
{
Word[i]=ch;
        i++;
        ch=fgetc(fp);
}
{}
}
else
{
if(ch==‘*‘)
{
 i=1;
 Word[i]=ch;
         i++;
         ch=fgetc(fp);
 while(ch!=‘#‘)
 {
 
 if(ch==‘*‘)
  {
  Word[i]=ch;
  ch=fgetc(fp);
                                  if(ch==‘/‘)
  {
  printf(“此行为注释!\n“);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        247  2011-04-18 23:27  词法分析器\out.txt

     文件       6065  2011-04-18 21:58  词法分析器\wangmx.cpp

     文件       3401  2011-04-12 19:49  词法分析器\wangmx.dsp

     文件        520  2011-04-12 19:50  词法分析器\wangmx.dsw

     文件      50176  2011-04-18 23:27  词法分析器\wangmx.ncb

     文件      48640  2011-04-18 23:27  词法分析器\wangmx.opt

     文件        246  2011-04-18 23:26  词法分析器\wangmx.plg

    ..A..H.       162  2011-04-09 15:56  词法分析器\~$一__识别无符号数的词法分析器设计实现.doc

    ..A..H.       162  2011-04-09 14:40  词法分析器\~$原理词法分析器.doc

    ..A..H.       162  2011-04-09 15:06  词法分析器\~$验一词法分析.doc

    ..A..H.       162  2011-04-09 15:02  词法分析器\~$验实现了一个c语言词法分析器内容说明注释完整包含可运行代码.doc

     文件     101940  2011-04-18 22:00  词法分析器\截图\输入1.JPG

     文件      52857  2011-04-18 21:23  词法分析器\截图\输入2.jpg

     文件      38732  2011-04-18 21:30  词法分析器\截图\输入3.jpg

     文件      51854  2011-04-18 21:32  词法分析器\截图\输入4.jpg

     文件      97258  2011-04-18 22:01  词法分析器\截图\输出1.JPG

     文件      39148  2011-04-18 21:29  词法分析器\截图\输出2.jpg

     文件      29101  2011-04-18 21:30  词法分析器\截图\输出3.jpg

     文件      46955  2011-04-18 21:33  词法分析器\截图\输出4.jpg

    ..A.SH.     22016  2011-05-14 10:12  词法分析器\截图\Thumbs.db

     文件        106  2011-04-18 21:51  词法分析器\test\test1.cpp

     文件         89  2011-04-18 20:27  词法分析器\test\test2.txt

     文件         69  2011-04-16 14:50  词法分析器\test\test3.txt

     文件        169  2011-04-18 21:17  词法分析器\test\test4.txt

     文件      74752  2011-04-18 23:26  词法分析器\Debug\vc60.idb

     文件     118784  2011-04-18 21:58  词法分析器\Debug\vc60.pdb

     文件     184409  2011-04-18 21:58  词法分析器\Debug\wangmx.exe

     文件    1065360  2011-04-18 21:58  词法分析器\Debug\wangmx.ilk

     文件      19399  2011-04-18 21:58  词法分析器\Debug\wangmx.obj

     文件      43520  2011-04-08 15:04  词法分析器\Debug\wangmx.opt

............此处省略9个文件信息

评论

共有 条评论

相关资源