亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? word.c

?? 一個簡單的詞法分析器
?? C
字號:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
void init()
{             
    char *key[]={" ","auto","break","case","char","const","continue","default","do","double",
                 "else","enum","extern","float","for","goto","if","int","long","register",
                 "return","short","signed","sizeof","static","struct","switch","typedef",
                 "union","unsigned","void","volatile","while"};     /*C語言所有關(guān)鍵字,共32個*/
    char *limit[]={" ","(",")","[","]","->",".","!","++","--","&","~",
                   "*","/","%","+","-","<<",">>","<","<=",">",">=","==","!=","&&","||",
                  "=","+=","-=","*=","/=",",",";","{","}","#","_","'"};/*運算、限界符*/
    FILE *fp;
    int i;
    char c;
    fp=fopen("k.txt","w");
    for(i=1;i<=32;i++)
       fprintf(fp,"%s\n",key[i]);
    fclose(fp);               /*初始化關(guān)鍵字表*/
    fp=fopen("l.txt","w");
    for(i=1;i<=38;i++)
       fprintf(fp,"%s\n",limit[i]);
    c='"';
    fprintf(fp,"%c\n",c);
    fclose(fp);               /*初始化運算、限界符表*/
    fp=fopen("i.txt","w");
    fclose(fp);               /*初始化標(biāo)識符表*/
    fp=fopen("c.txt","w");
    fclose(fp);               /*初始化常數(shù)表*/
    fp=fopen("output.txt","w");
    fclose(fp);               /*初始化輸出文件*/
}
char * dtb(char *buf)
{          
    int temp[20];
	char *binary;
	int value=0,i=0,j;
	for(i=0;buf[i]!='\0';i++)
		value=value*10+(buf[i]-48);       /*先將字符轉(zhuǎn)化為十進(jìn)制數(shù)*/
    if(value==0)
    {
		binary=malloc(2*sizeof(char));
		binary[0]='0';
		binary[1]='\0';
		return(binary);
	}
	i=0;
	while(value!=0)
    {
		temp[i++]=value%2;
		value/=2;
	}
	temp[i]='\0';
	binary=malloc((i+1)*sizeof(char));
	for(j=0;j<=i-1;j++)
       binary[j]=(char)(temp[i-j-1]+48);
    binary[i]='\0';
    return(binary);
}
int find(char *buf,int type,int command)
{             
    int number=0;
    FILE *fp;
    char c;
    char temp[30];
    int i=0;
    switch(type)
    {
        case 1: fp=fopen("k.txt","r");break;
        case 2: fp=fopen("i.txt","r");break;
        case 3: fp=fopen("c.txt","r");break;
        case 4: fp=fopen("l.txt","r");
    }
    c=fgetc(fp);
    while(c!=EOF)
    {
        while(c!='\n')
        {
            temp[i++]=c;
            c=fgetc(fp);
        }
        temp[i]='\0';
        i=0;
        number++;
        if(strcmp(temp,buf)==0)
        {  
		    fclose(fp);
			return(number);        /*若找到,返回在相應(yīng)表中的序號*/
        }
        else
           c=fgetc(fp);
     }
     if(command==1)
     {   
	     fclose(fp); 
		 return(0);                /*找不到,當(dāng)只需查表,返回0,否則還需造表*/
     }
     switch(type)
     {
         case 1: fp=fopen("k.txt","a");break;
         case 2: fp=fopen("i.txt","a");break;
         case 3: fp=fopen("c.txt","a");break;
         case 4: fp=fopen("l.txt","a");
     }
     fprintf(fp,"%s\n",buf);
     fclose(fp);
     return(number+1);             /*造表時,將字符串添加到表尾并返回序號值*/
}
void cs_manage(char *buffer)
{             
    FILE *fp;
	char *pointer;
	int result;
	pointer=dtb(buffer);
    result=find(pointer,3,2);       /*先查常數(shù)表,若找不到則造入常數(shù)表并返回序號值*/
    fp=fopen("output.txt","a");
	fprintf(fp,"%s\t\t\t3\t\t\t%d\n",buffer,result);
	fclose(fp);               /*寫入輸出文件*/
}
void ch_manage(char *buffer)
{                     
    FILE *fp;
    int result;
    result=find(buffer,1,1);           /*先查關(guān)鍵字表*/
    fp=fopen("output.txt","a");
    if(result!=0)
       fprintf(fp,"%s\t\t\t1\t\t\t%d\n",buffer,result);    /*若找到,寫入輸出文件*/
    else
    {
        result=find(buffer,2,2);       /*若找不到,則非關(guān)鍵字,查標(biāo)識符表,還找不到則造入標(biāo)識符表*/
        fprintf(fp,"%s\t\t\t2\t\t\t%d\n",buffer,result);
    }                                 /*寫入輸出文件*/
    fclose(fp);
}
void er_manage(char error,int lineno)
{                 
    printf("\nerror: %c ,line %d",error,lineno);    /*報告出錯符號和所在行數(shù)*/
}
void scanner()
{            
    FILE *fpin,*fpout;
    char filename[20];
    char ch;
    int i=0,line=1;
    int count,result,errorno=0;
	char array[30];
    char *word;
	printf("\nthe file name:");
    scanf("%s",filename);
    if((fpin=fopen(filename,"r"))==NULL)
    {
        printf("cannot open file");
        return;
    }
    ch=fgetc(fpin);
    while(ch!=EOF)
    {                 /*按字符依次掃描源程序,直至結(jié)束*/
        i=0;
        if(((ch>='A')&&(ch<='Z'))||((ch>='a')&&(ch<='z'))||(ch=='_'))
        {           /*以字母開頭*/
            while(((ch>='A')&&(ch<='Z'))||((ch>='a')&&(ch<='z'))||(ch=='_')||((ch>='0')&&(ch<='9')))
            {
                array[i++]=ch;
                ch=fgetc(fpin);
            }
            word=(char *)malloc((i+1)*sizeof(char));
            memcpy(word,array,i);
	    word[i]='\0';
            ch_manage(word);
            if(ch!=EOF)
	      fseek(fpin,-1L,SEEK_CUR);
        }/*掃描關(guān)鍵字和標(biāo)志符*/
        else if(ch>='0'&&ch<='9')
        {          /*以數(shù)字開頭*/
            while(ch>='0'&&ch<='9')
            {
                array[i++]=ch;
                ch=fgetc(fpin);
            }
            word=(char *)malloc((i+1)*sizeof(char));
			memcpy(word,array,i);
			word[i]='\0';
            cs_manage(word);
            if(ch!=EOF)
	   fseek(fpin,-1L,SEEK_CUR);
        }/*掃描數(shù)字*/
        else if((ch==' ')||(ch=='\t'))
			;           /*消除空格符和水平制表符*/
		else if(ch=='\n')
			line++;           /*消除回車并記錄行數(shù)*/
		else if(ch=='/')
                     {                 /*消除注釋*/
			ch=fgetc(fpin);
			if(ch=='=')
			{              /*判斷是否為‘/=’符號*/
			  fpout=fopen("output.txt","a");
			  fprintf(fpout,"/=\t\t\t4\t\t\t32\n");
                          fclose(fpout);
			}
			else if(ch!='*')
                         {              /*若為除號,寫入輸出文件*/
                                fpout=fopen("output.txt","a");
				fprintf(fpout,"/\t\t\t4\t\t\t13\n");
                                fclose(fpout);
				fseek(fpin,-1L,SEEK_CUR);
			}
			else if(ch=='*')
			     {              /*若為注釋的開始,消除包含在里面的所有字符*/
				count=0;
				ch=fgetc(fpin);
				while(count!=2)
                                    {          /*當(dāng)掃描到‘*’且緊接著下一個字符為‘/’才是注釋的結(jié)束*/
					count=0;
					while(ch!='*')
						ch=fgetc(fpin);
					count++;
					ch=fgetc(fpin);
					if(ch=='/')
						count++;
					else
						ch=fgetc(fpin);
				    }
			     }
		  }/*掃描注釋*/
		else if(ch=='"')
		{                 /*消除包含在雙引號中的字符串常量*/
		    fpout=fopen("output.txt","a");
		    fprintf(fpout,"%c\t\t\t4\t\t\t37\n",ch);
		    ch=fgetc(fpin);
		    while(ch!='"')
		      ch=fgetc(fpin);
                    fprintf(fpout,"%c\t\t\t4\t\t\t37\n",ch);
		    fclose(fpout);
		}
	         else
                  {         /*首字符為其它字符,即運算限界符或非法字符*/
                   array[0]=ch;
                   ch=fgetc(fpin);       /*再讀入下一個字符,判斷是否為雙字符運算、限界符*/
                 if(ch!=EOF)
                  {           /*若該字符非文件結(jié)束符*/
                     array[1]=ch;
	             word=(char *)malloc(3*sizeof(char));
	             memcpy(word,array,2);
	             word[2]='\0';
                     result=find(word,4,1);      /*先檢索是否為雙字符運算、限界符*/
	             if(result==0)
		     {                           /*若不是*/
                       word=(char *)malloc(2*sizeof(char));
		       memcpy(word,array,1);
		       word[1]='\0';
		       result=find(word,4,1);      /*檢索是否為單字符運算、限界符*/
		       if(result==0)
                        {                           /*若還不是,則為非法字符*/
		         er_manage(array[0],line);
		         errorno++;
		         fseek(fpin,-1L,SEEK_CUR);
                        }
                        else
		        {     /*若為單字符運算、限界符,寫入輸出文件并將掃描文件指針回退一個字符*/
			  fpout=fopen("output.txt","a");
			  fprintf(fpout,"%s\t\t\t4\t\t\t%d\t\n",word,result);
			  fclose(fpout);
			  fseek(fpin,-1L,SEEK_CUR);
		       }
		   }
                  else
		  {             /*若為雙字符運算、限界符,寫輸出文件*/
		   fpout=fopen("output.txt","a");
		   fprintf(fpout,"%s\t\t\t4\t\t\t%d\n",word,result);
		   fclose(fpout);
		 }
              }/*掃描符運算、限界符*/
            else
	    {               /*若讀入的下一個字符為文件結(jié)束符*/
	     word=(char *)malloc(2*sizeof(char));
	     memcpy(word,array,1);
	     word[1]='\0';
	     result=find(word,4,1);       /*只考慮是否為單字符運算、限界符*/
	     if(result==0)                /*若不是,轉(zhuǎn)出錯處理*/
	       er_manage(array[0],line);
	    else
	     {                            /*若是,寫輸出文件*/
		fpout=fopen("output.txt","a");
		fprintf(fpout,"%s\t\t\t4\t\t\t%d\n",word,result);
		fclose(fpout);
	     }
	  }
      }
       ch=fgetc(fpin); 
    }/*while*/
    fclose(fpin);
   printf("\nThere are %d error(s).\n",errorno);         /*報告錯誤字符個數(shù)*/
}
main()
{           
    init();            
    scanner();         
}  

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区影院| 一区二区三区四区在线| 国产一区二区免费看| 美女网站在线免费欧美精品| 一道本成人在线| 亚洲aaa精品| 久久精品视频免费| 久草中文综合在线| 国产精品激情偷乱一区二区∴| 91麻豆免费看| 免费成人在线观看| 国产女主播一区| 欧美日韩激情在线| 韩国视频一区二区| 国产精品灌醉下药二区| 欧美三级在线播放| 国产一区二区美女诱惑| 亚洲免费大片在线观看| 日韩你懂的电影在线观看| 成人综合婷婷国产精品久久| 亚洲超碰精品一区二区| 久久久久久久精| 欧美日韩午夜影院| 东方aⅴ免费观看久久av| 一区2区3区在线看| 久久久久久久久久久99999| 色婷婷精品久久二区二区蜜臀av | 日韩欧美一区在线| 91欧美一区二区| 欧美性生活大片视频| 成人免费视频播放| 日韩极品在线观看| 亚洲欧美另类小说| 精品国产三级电影在线观看| 国产河南妇女毛片精品久久久| 欧美变态凌虐bdsm| 色综合色狠狠天天综合色| 午夜精品福利视频网站| 欧美一区二区三区视频| 国产成人精品亚洲777人妖| 亚洲综合自拍偷拍| 2023国产精品视频| 91久久精品一区二区三区| 亚洲愉拍自拍另类高清精品| 欧美不卡视频一区| 在线视频一区二区免费| 国产精品99久久久久久久女警| 亚洲一区二区三区国产| 国产亚洲短视频| 日韩一级免费观看| 丰满放荡岳乱妇91ww| 一区二区三区高清| 欧美国产精品一区二区三区| 精品国产1区2区3区| 欧美午夜精品久久久久久超碰| 国产精品12区| 亚洲精品老司机| 亚洲国产经典视频| www国产成人| 日韩免费电影网站| 91精品国产手机| 欧美亚洲日本国产| 国产成人精品一区二区三区四区| 麻豆精品视频在线观看视频| 亚洲一区二区三区四区在线观看 | 91福利国产精品| 福利一区二区在线观看| 国产91精品在线观看| 麻豆91在线看| 国产一区在线看| 精品无人码麻豆乱码1区2区 | 中文字幕在线不卡一区| 欧美电影免费观看完整版| 欧美一区二区三区在线观看| 欧美伦理影视网| 8v天堂国产在线一区二区| 国产精品久久久久久久久晋中| 亚洲日本护士毛茸茸| 丁香六月综合激情| 国产日韩欧美亚洲| 欧美一级一区二区| 国产精品午夜久久| 成人小视频免费在线观看| 国产成人av网站| 91蜜桃免费观看视频| 欧美性生活影院| 欧美成人精品福利| 国产精品电影一区二区三区| 亚洲激情一二三区| 日韩二区三区在线观看| 久久久99精品免费观看| 久久九九99视频| 亚洲国产精品一区二区www在线| 秋霞av亚洲一区二区三| 99国产精品久久久久久久久久| 精品视频1区2区3区| 亚洲精品免费在线| av网站免费线看精品| 国产亚洲制服色| 国产在线精品免费av| 日韩片之四级片| 亚洲日本中文字幕区| 国产乱子伦一区二区三区国色天香 | 国产精品成人在线观看| 视频一区二区三区中文字幕| av亚洲精华国产精华| 欧美精品一区二| 午夜精品久久久久久久蜜桃app| 91在线看国产| 中文字幕成人av| 激情综合色丁香一区二区| 色综合久久久久网| 亚洲欧美日韩国产中文在线| 色综合久久88色综合天天免费| 国产精品久久久久影院色老大| 国产成人精品一区二区三区网站观看 | 丝袜亚洲精品中文字幕一区| 91网站在线播放| 国产精品久久久久影院| 九一久久久久久| 久久品道一品道久久精品| 麻豆国产欧美日韩综合精品二区 | 久久久久久久综合狠狠综合| 看片网站欧美日韩| 欧美日韩精品二区第二页| 国产欧美一区视频| 日韩精品一区二区三区在线观看 | 欧美年轻男男videosbes| 日本在线观看不卡视频| 欧美一二三区精品| 欧美精品在线观看播放| 亚洲18女电影在线观看| 2021中文字幕一区亚洲| 99久久精品免费| 日韩av一二三| 亚洲欧洲色图综合| 欧美一区二区三区播放老司机| 国产成人精品综合在线观看| 亚洲国产综合在线| 日本一区二区三区视频视频| 欧美精品在线观看播放| www.欧美色图| 麻豆国产欧美日韩综合精品二区| 欧美经典一区二区三区| 在线播放91灌醉迷j高跟美女| 国产成人精品亚洲日本在线桃色| 日av在线不卡| 国产精品综合一区二区三区| 精品污污网站免费看| 麻豆久久一区二区| 91碰在线视频| 欧美精品乱码久久久久久按摩| 高清不卡在线观看| 日韩视频123| 视频精品一区二区| 欧美日韩综合在线| 尤物av一区二区| 一本色道综合亚洲| 国产精品色在线观看| 9人人澡人人爽人人精品| 亚洲欧美在线aaa| 91片在线免费观看| 亚洲精品国产视频| 欧美不卡视频一区| 国产精品99久久久久久久女警| 久久无码av三级| 大美女一区二区三区| 日本一区二区三区国色天香 | 一本一道久久a久久精品综合蜜臀| 国产精品久久久久久久岛一牛影视 | 另类调教123区 | 91精品国产一区二区三区蜜臀| 日本va欧美va精品| 国产精品日韩成人| 成人免费视频网站在线观看| 亚洲国产精品成人综合| 成人美女视频在线观看| 午夜精品免费在线| 美日韩黄色大片| 成人sese在线| 三级欧美在线一区| 久久婷婷国产综合精品青草| 欧美变态tickling挠脚心| 久久亚洲精品国产精品紫薇 | 极品销魂美女一区二区三区| 久久99精品国产麻豆婷婷洗澡| 国产一区二区免费在线| 不卡的电视剧免费网站有什么| 色伊人久久综合中文字幕| 欧美日韩在线免费视频| 欧美一区永久视频免费观看| 欧美精品一区视频| 日韩主播视频在线| 久久久久久久精| 欧美性大战久久久| 国产1区2区3区精品美女| 亚洲综合色丁香婷婷六月图片| 精品久久久久久亚洲综合网| 色婷婷久久久综合中文字幕| 欧美三级资源在线|