• 大小: 447KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-09-06
  • 语言: C/C++
  • 标签: C  MINUS  词法分析  

资源简介

是基于c++环境的词法分析器,C MINUS ,程序要求输入一个文件,再以文件的方式输出结果。

资源截图

代码片段和文件信息

#include
#include
#include
#define MAX_NAME 30
#define MAX_FILE 10000

enum member {elsesymifsymreturnsymintsymvoidsymwhilesymident
numberplusminustimesrnotelnoteslashgeqleqlssgrteqlbecomes
uneqlsemicolonlparentrparentlbracerbracelbracketrbracketcomma};

struct word{
member character;
char name[MAX_NAME];
};

void write(FILE* ofpchar* name){
int i=0;
int len=strlen(name);
for(i=0;i     fputc(putc(*(name+i)ofp)stdout);
}
}

void analyze(char* sFILE* fpword* ssym){
FILE* ofp;
char ch;
char filename[]=“wordstring.txt“;
int count=0i=0k=0j=0;

if((ofp=fopen(filename“w“))==NULL){
printf(“cannot open file\n“);
exit(0);
}

while(!feof(fp)){
ch=fgetc(fp);

if(k>=MAX_FILE){
printf(“file is too long\n“);
exit(0);
}
    
if(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘){
    *(s+count)=ch;
      count++;
*(s+count)=‘\0‘;
ch=fgetc(fp);
if(!(ch>=‘a‘&&ch<=‘z‘||ch>=‘A‘&&ch<=‘Z‘)){
write(ofps);
                strcpy(ssym[k].names);
if(!strcmp(s“else“)){
                    write(ofp“ elsesym\n“);
                    ssym[k].character=elsesym;
k++;
}
else if(!strcmp(s“if“)){
                   write(ofp“ ifsym\n“);
   ssym[k].character=ifsym;
   k++;
}
else if(!strcmp(s“int“)){
                    write(ofp“ intsym\n“);
ssym[k].character=intsym;
k++;
}
else if(!strcmp(s“return“)){
                    write(ofp“ returnsym\n“);
ssym[k].character=returnsym;
k++;
}
else if(!strcmp(s“void“)){
                    write(ofp“ voidsym\n“);
ssym[k].character=voidsym;
k++;
}
else if(!strcmp(s“while“)){
                    write(ofp“ whilesym\n“);
ssym[k].character=whilesym;
k++;
}
else{
                    write(ofp“ ident\n“);
ssym[k].character=ident;
k++;
}
count=0;
}
fseek(fp-sizeof(char)1);
ch=NULL;
}


if(ch>=‘0‘&&ch<=‘9‘){
*(s+count)=ch;
      count++;
*(s+count)=‘\0‘;
ch=fgetc(fp);
if(!(ch>=‘0‘&&ch<=‘9‘)){
write(ofps);
                strcpy(ssym[k].names);
write(ofp“ number\n“);
ssym[k].character=number;
k++;
    count=0;
}
fseek(fp-sizeof(char)1);
ch=NULL;
}

if(ch==‘+‘){
write(ofp“ plus\n“);
            ssym[k].character=plus;
k++;
}


if(ch==‘-‘){
write(ofp“ minus\n“);
ssym[k].character=minus;
k++;
}


if(ch==‘/‘){
ch=fgetc(fp);
     if(ch==‘*‘){
               write(ofp“ lnote\n“);
   ssym[k].character=lnote;
   k++;
}
else{
write(ofp“ slash\n“);
ssym[k].character=slash;
k++;
fseek(fp-sizeof(char)1);
}
ch=NULL;
}
if(ch==‘<‘){
ch=fgetc(fp);
if(ch==‘=‘){
                write(ofp“ leq\n“);
ssym[k].character=leq;
k++;
}
e

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         722  2011-05-19 21:30  wordstring.txt
     目录           0  2011-05-19 14:02  Debug\
     文件      184383  2011-05-19 14:02  Debug\1.exe
     文件      197432  2011-05-19 14:02  Debug\1.ilk
     文件       14715  2011-05-19 14:02  Debug\1.obj
     文件      226520  2011-05-19 13:56  Debug\1.pch
     文件      467968  2011-05-19 14:02  Debug\1.pdb
     文件      184373  2011-05-15 08:08  Debug\cifafenxiqi.exe
     文件      194332  2011-05-15 08:08  Debug\cifafenxiqi.ilk
     文件      222424  2011-05-14 11:53  Debug\cifafenxiqi.pch
     文件      484352  2011-05-15 08:08  Debug\cifafenxiqi.pdb
     文件       41984  2011-05-19 21:30  Debug\vc60.idb
     文件       53248  2011-05-19 14:02  Debug\vc60.pdb
     文件        4833  2011-05-19 14:02  1.cpp
     文件        3341  2011-05-19 21:29  1.dsp
     文件         510  2011-05-19 21:32  1.dsw
     文件       41984  2011-05-19 21:32  1.ncb
     文件       48640  2011-05-19 21:32  1.opt
     文件         236  2011-05-19 21:29  1.plg
     文件        4334  2011-05-13 23:48  cifafenxiqi.dsp
     文件         528  2011-05-13 20:37  cifafenxiqi.dsw
     文件       41984  2011-05-17 13:17  cifafenxiqi.ncb
     文件       48640  2011-05-17 13:17  cifafenxiqi.opt
     文件         256  2011-05-17 13:17  cifafenxiqi.plg
     文件         214  2011-05-19 14:22  in
     文件         131  2011-05-19 14:02  input
     文件           0  2011-05-18 13:12  output

评论

共有 条评论