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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? compile.txt

?? 這是我編寫的一個詞法分析器,有興趣的人可以看看,里面有詳細的說明,我覺得非常適合初學者看
?? TXT
字號:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<ctype.h>
#include<string.h>

#define N 256

char str[N];  

char strtoken[20];  

char *key[32]={ "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"};



int len; 

int count=0; 

void write(char *wstr,char wc,FILE *wout) //將分析結果按照規則寫入到文件
{
       fputc('(',wout);
       fputs(wstr,wout);
       fputc(',',wout);
       fputc(wc,wout);
       fputc(')',wout);

}
void write2(char *wstr,char *wc,FILE *wout) //將分析結果按照規則寫入到文件
{
       fputc('(',wout);
       fputs(wstr,wout);
       fputc(',',wout);
       fputs(wc,wout);
       fputc(')',wout);

}
int readstr(FILE *fp)
{
char ch;
len=0;
ch=fgetc(fp);
while(!feof(fp) && ch!='\n')
{
str[len]=ch;
ch=fgetc(fp);
len++;
}

len--;

if(feof(fp))
return 0;
else
return 1;

}
void error(int type)
{

 if(type==1)
  printf("is a invalid char,the%d line has a error the id should not begin from a digit\n",count);
 else if(type==2)
      printf("the%d lines has a error,the evaluate should be  <variable>=<expression> \n ",count);

     else printf("is a invalid character,the %d line has a error\n",count);

}

void check(char *str,FILE *out);
void fenxi(char *row,FILE *op)
{

 int k=0;
 int i=0;
 int ferror=0;
 char str0[20]; //臨時存放單詞的變量
 int j=0;
//printf("this is the %dth line\n",count);
 while(i<=len)
 {
  k=0;
  strcpy(strtoken,"\0");
  if(isspace(row[i]))
  {
   i++;
      continue;
  }

 while(!isalpha(row[i])&&!isdigit(row[i])&&i<=len&&!isspace(row[i])&&!(row[i]=='\0'||row[i]=='{'||row[i]=='>'||row[i]=='<'||row[i]=='+' || row[i]=='-' || row[i]=='*' || row[i]=='/' || row[i]=='(' || row[i]==')' || row[i]=='}' || row[i]==';' || row[i]=='='))
 {
  putchar(row[i]);
  i++;
  ferror=1;
 }
  if(ferror==1)
  {
   error(3);
   ferror=0;
  }

 if(row[i]=='/') //判斷是否為注釋
  {
   i++;
   if(row[i]=='/')
   {
    i=len+1;
    continue;
   }
   else
    i--;
  }


     if(isdigit(row[i]))
  {
       while(i<=len&&!isspace(row[i])&&!(row[i]=='\0'||row[i]=='>'||row[i]=='<'||row[i]=='+' || row[i]=='-' || row[i]=='*' || row[i]=='/' || row[i]=='(' || row[i]==')' || row[i]==';' || row[i]=='='||row[i]=='{'||row[i]=='}' ))


   {

	      if(isdigit(row[i]))
      {
	    str0[k]=row[i]; //是數字則將字符逐個存入臨時數組
		  i++;
       k++;

      }
	 else
      {

       ferror=1;break;

      }
   }
	    if(ferror==1)
   {
    for( j=0;j<k;j++)
     putchar(str0[j]);
     while(i<=len&&!isspace(row[i])&&!(row[i]=='\0'||row[i]==':'||row[i]=='>'||row[i]=='<'||row[i]=='+' || row[i]=='-' || row[i]=='*' || row[i]=='/' || row[i]=='(' || row[i]==')' || row[i]==';'||row[i]=='='))
     {
     putchar(row[i]);
      i++;

     }
      error(1);

      ferror=0;
      i--;
      strcpy(strtoken,"");
   }
      else
     {
      str0[k]='\0';
      strcpy(strtoken,str0);
      i--;
      str0[0]='\0';

     }
  }

     if(isalpha(row[i]))
  {

   k=0;
      while(i<=len&&row[i]!=32&&!(row[i]=='\0'||row[i]=='>'||row[i]=='<'||row[i]=='+' || row[i]=='-' || row[i]=='*' || row[i]=='/' || row[i]=='(' || row[i]==')' || row[i]==';'||  row[i]=='='))//關鍵字和標志符由數字和字母組成
   {
    if(isalpha(row[i])||isdigit(row[i]))
    {
	    str0[k]=row[i];
      i++;
      k++;
    }
    else
    {


     ferror=1;
     break;
    }

   }
   if(ferror)
   {
    for( j=0;j<k;j++)
     putchar(str0[j]);
    while(i<=len&&!isspace(row[i])&&!(row[i]=='\0'||row[i]=='>'||row[i]=='<'||row[i]=='+' || row[i]=='-' || row[i]=='*' || row[i]=='/' || row[i]=='(' || row[i]==')'|| row[i]==';'||row[i]=='='))
    {
     putchar(row[i]);
     i++;

    }
    ferror=0;
    error(3);
    i--;
   }
   else
   {
	str0[k]='\0';
		 strcpy(strtoken,str0);
	str0[0]='\0';
	   i--;
   }
	}

	 if(row[i]=='/' || row[i]=='(' || row[i]==')'   || row[i]==';'||row[i]=='{'||row[i]=='}' || row[i]=='=')
   {
    str0[0]=row[i];
    str0[1]='\0';
    strcpy(strtoken,str0);
    str0[0]='\0';
  }

       if(row[i]=='=')
  {
   i++;
   if(row[i]=='=')
   {
    strtoken[0]='=';
    strtoken[1]='=';
    strtoken[2]='\0';
    strcpy(strtoken,"==");

    }
	      else
     {
      strcpy(strtoken,"=");
      i--;
     }
  }


       if(row[i]=='+')
  {
   i++;
   if(row[i]=='+')
   {
    strtoken[0]='+';
    strtoken[1]='+';
    strtoken[2]='\0';
    strcpy(strtoken,"++");

    }
	      else
     {
      strcpy(strtoken,"+");
      i--;
     }
  }


       if(row[i]=='-')
  {
   i++;
   if(row[i]=='-')
   {
    strtoken[0]='-';
    strtoken[1]='-';
    strtoken[2]='\0';
    strcpy(strtoken,"--");

    }
	      else
     {
      strcpy(strtoken,"-");
      i--;
     }
  }

       if(row[i]=='*')
  {
   i++;
   if(row[i]=='*')
   {
    strtoken[0]='*';
    strtoken[1]='*';
    strtoken[2]='\0';
    strcpy(strtoken,"**");

    }
	      else
     {
      strcpy(strtoken,"*");
      i--;
     }
  }


  if(row[i]=='>')
  {
   i++;
   if(row[i]=='=')
   {

    strcpy(strtoken,">=");
   }
	      else
     {
      strcpy(strtoken,">");
      i--;
     }
  }
  if(row[i]=='<')
  {
   i++;
   if(row[i]=='=')
   {
    strcpy(strtoken,"<=");


   }
else
     { strcpy(strtoken,"<");i--;}
  }

   puts(strtoken);


    check(strtoken,op);

    strtoken[0]='\0';
     i++;

 }
 }

void check(char *str,FILE *out)
{      int fyiyong=0;
       int ct;
       if(isdigit(str[0]))
    {
     write2(str,"digit",out);
    }

	   if(isalpha(str[0]))
     {



      for( ct=0;ct<32;ct++)
      {
	if(!strcmp(str,key[ct]))
     {
      write2(str,"key",out);
      fyiyong=1;
     }
      }

    if(fyiyong!=1)
    {
	       write2(str,"identifier",out);
    }
	}

     if(str[0]=='>')
     {
      if(str[1]=='=')
      {
		   write2(str,">=logic expression",out);
      }
      else
      {
		   write2(str,">logic expression",out);
      }

     }

     if(str[0]=='<')
     {
      if(str[1]=='=')
      {
		 write2(str,"<=logic expression",out);
      }
      else
      {
		     write2(str,"<logic expression",out);
      }

     }


	if(!strcmp(str,"=="))
     {
	       write2(str,"==logic expression",out);
     }
     

    if(str[0]=='+')
     {
      if(str[1]=='+')
      {
		 write2(str,"++selfplus",out);
      }
      else
      {
		     write2(str,"+plus",out);
      }

     }

     
    if(str[0]=='-')
     {
      if(str[1]=='-')
      {
		 write2(str,"--selfsub",out);
      }
      else
      {
		     write2(str,"+sub",out);
      }

     }
 
    if(str[0]=='*')
     {
      if(str[1]=='*')
      {
		 write2(str,"power",out);
      }
      else
      {
		     write2(str,"mul",out);
      }

     }
 if(str[0]=='/' ){  write2(str,"div",out);}
 if(str[0]=='=') {  write2(str,"=assign",out);}   
 if(str[0]=='(' ){  write2(str,"lpar",out);}
 if(str[0]==')' ){  write2(str,"rpar",out);}
 if(str[0]==';' ){  write2(str,"semicolon",out);}
 if(str[0]=='{' ){  write2(str,"lbrace",out);}
 if(str[0]=='}' ){  write2(str,"rbrace",out);}


}

void main()
{
 int count=1;
 char scfilename[20],rsfilename[20];
 FILE *fp,*op;
 printf("Please input your source file name:");
 gets(scfilename);
    printf("Please input your result file name:");
 gets(rsfilename);

 fp=fopen(scfilename,"r");
    op=fopen(rsfilename,"w");
 if(fp)
 {
      while(readstr(fp))
   {
      fenxi(str,op);
   count++;
	}
 }
 else
 {
  printf("Your source file not exist!!!\n");
  exit(0);
 }

 fclose(fp);
 fclose(op);
    printf("ok!");

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品在线| 免费在线观看不卡| 午夜av一区二区三区| 狠狠色综合日日| 91成人网在线| 国产拍揄自揄精品视频麻豆| 亚洲超碰精品一区二区| 国产91精品一区二区麻豆亚洲| 在线精品视频一区二区| 国产校园另类小说区| 青青草视频一区| 色av一区二区| 国产精品视频你懂的| 蜜桃av噜噜一区| 欧美三电影在线| 中文字幕色av一区二区三区| 国产在线播精品第三| 制服丝袜亚洲色图| 亚洲一区二区三区四区在线免费观看 | 亚洲第一在线综合网站| 岛国精品在线播放| 久久综合色之久久综合| 日韩精品一卡二卡三卡四卡无卡| 色婷婷综合久久久久中文一区二区| 久久久夜色精品亚洲| 美国欧美日韩国产在线播放| 欧美日韩精品一区二区天天拍小说 | 日产国产高清一区二区三区 | 亚洲综合在线免费观看| 国产99一区视频免费| 久久你懂得1024| 国产在线看一区| 久久久久久黄色| 国产精品一区二区免费不卡| 久久综合九色欧美综合狠狠| 久久精品国产亚洲高清剧情介绍| 欧美一区二区三区免费大片| 日本不卡一区二区三区高清视频| 91.xcao| 日日摸夜夜添夜夜添精品视频| 精品视频一区三区九区| 亚洲大片免费看| 欧美精品免费视频| 免费高清在线视频一区·| 欧美一级国产精品| 久久99精品视频| 久久综合国产精品| 国产·精品毛片| 中文字幕五月欧美| 欧日韩精品视频| 日韩vs国产vs欧美| 精品国产sm最大网站免费看| 国产乱码精品1区2区3区| 国产精品免费看片| 91亚洲男人天堂| 亚洲第一在线综合网站| 欧美va天堂va视频va在线| 国产精品77777| 一区二区三区四区乱视频| 欧美日韩精品一区二区三区蜜桃| 蜜臀va亚洲va欧美va天堂| 国产女人aaa级久久久级 | 欧美影院精品一区| 另类小说图片综合网| 国产精品视频你懂的| 在线观看网站黄不卡| 免费在线一区观看| 国产精品三级电影| 欧美军同video69gay| 国产激情视频一区二区三区欧美| 亚洲精品乱码久久久久久久久| 欧美日韩国产不卡| 99精品黄色片免费大全| 亚洲愉拍自拍另类高清精品| 精品久久五月天| 色吧成人激情小说| 国模娜娜一区二区三区| 亚洲狼人国产精品| 91精品在线一区二区| 成人高清在线视频| 美国十次了思思久久精品导航| 一区二区中文字幕在线| 日韩三级免费观看| 色婷婷综合激情| 国产成人免费在线视频| 性久久久久久久| 中文字幕在线一区| 精品国产一区二区亚洲人成毛片| 色婷婷狠狠综合| 粉嫩绯色av一区二区在线观看| 午夜精品久久久久久久99水蜜桃| 中文文精品字幕一区二区| 91精品欧美一区二区三区综合在| 99久久99精品久久久久久| 国产一区二区三区电影在线观看| 午夜婷婷国产麻豆精品| 亚洲欧美福利一区二区| 国产日韩欧美不卡在线| 日韩午夜激情视频| 欧美日韩国产bt| 91黄色免费看| 97精品国产露脸对白| 国产精品一区二区在线观看网站| 奇米一区二区三区| 图片区小说区区亚洲影院| 一区二区免费看| 亚洲美女一区二区三区| 中文字幕中文在线不卡住| 久久久99免费| 精品国产髙清在线看国产毛片| 91精品一区二区三区在线观看| 欧美三级视频在线播放| 欧美亚洲一区三区| 色婷婷久久久久swag精品| 波多野结衣的一区二区三区| 高清在线成人网| www.亚洲人| 91一区一区三区| 色久综合一二码| 色妹子一区二区| 日本高清成人免费播放| 欧美亚洲一区二区在线| 欧美精品一二三| 777色狠狠一区二区三区| 欧美另类高清zo欧美| 欧美军同video69gay| 欧美一级理论性理论a| 日韩欧美你懂的| 久久久99久久| 亚洲少妇屁股交4| 亚洲地区一二三色| 麻豆91精品视频| 国产成人精品三级麻豆| 99久久综合99久久综合网站| 一本色道久久综合亚洲aⅴ蜜桃| 在线这里只有精品| 日韩午夜中文字幕| 国产视频911| 亚洲自拍偷拍网站| 琪琪久久久久日韩精品| 久久精品99久久久| 懂色av噜噜一区二区三区av| 91美女在线观看| 欧美一区二区三区免费视频| 久久久久久97三级| 一区二区三区日韩| 免费高清不卡av| 成人中文字幕电影| 欧美日韩免费一区二区三区 | 久久精品男人天堂av| 亚洲三级视频在线观看| 日日骚欧美日韩| 粉嫩一区二区三区性色av| 91久久精品一区二区三区| 日韩美一区二区三区| 亚洲欧洲成人自拍| 一本久道中文字幕精品亚洲嫩 | 亚洲国产精品自拍| 国产激情视频一区二区三区欧美| 91久久精品一区二区三| 久久亚洲综合色一区二区三区| 亚洲六月丁香色婷婷综合久久| 久久国内精品视频| 色婷婷国产精品| 日本一区二区三区国色天香| 亚洲va国产va欧美va观看| 风间由美中文字幕在线看视频国产欧美| 欧美日韩在线播放一区| 欧美经典三级视频一区二区三区| 婷婷综合另类小说色区| caoporm超碰国产精品| 欧美成人性战久久| 亚洲成人av一区二区三区| 成人动漫av在线| 欧美精品一区二区三区久久久| 一区二区三区日韩欧美| 国产sm精品调教视频网站| 日韩欧美国产电影| 亚洲一区二区精品3399| 99久久精品免费看国产免费软件| 欧美岛国在线观看| 日日噜噜夜夜狠狠视频欧美人 | 亚洲三级理论片| 粉嫩av一区二区三区| 精品日韩av一区二区| 日韩av网站在线观看| 欧美色精品在线视频| 一区精品在线播放| 波多野洁衣一区| 国产精品成人免费| 高清不卡一二三区| 日本一区二区三区免费乱视频 | 在线视频观看一区| 亚洲图片另类小说| k8久久久一区二区三区 | 99精品视频一区| 国产精品嫩草影院com| 国产成a人无v码亚洲福利| 久久久久久毛片| 国产suv精品一区二区883|