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

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

?? main.c

?? 非常經(jīng)典的C語言詞法分析器
?? C
字號(hào):
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#define ID 38
#define INT 39
#define LT 40
#define LE 41
#define EQ  42
#define NE 43
#define GT 44
#define GE 45
#define GA 46
#define COMMA 47     /* ',' */
#define FH 48        /* ';'*/
#define CO 49        /* ':'*/
#define LS 50       /* '(' */
#define RS 51       /* ') '*/
#define LM 52      /* '[' */
#define RM 53       /* '] '*/
#define LL 54      /* '{' */
#define RL 55       /* '} '*/
#define PC 56       /* '% '*/
#define BA 57       /* '\' */
#define DM 58       /* ' " '*/
#define ADD 59      /* '+'*/
#define SUB 60     /* '-'*/
#define MUL 61    /* '*' */
#define DIV 62     /* '/' */
#define SA 63      /* '++' */
#define SS 64      /* '--' */
char TOKEN[20];
char PRE[20],PPRE[20];
int k1=0;
int k2=0;
struct
{
	char def1[20];
	char def2[20];
}DEF[50];



int Lookup(char *x);
void Out(int a,char *x);
void Report_error(void);
void Scanner_example(FILE *fp);
void Print(FILE *fp);
/* Look up the key table! */
int Lookup(char *x)   
{
    char str[20],ch;
    int c,i,j;
    FILE *fp1=NULL;
    i=0; j=0;
    if((fp1=fopen("d:\\tools\\tc\\cifa\\key.txt","r"))==NULL)
    {
        printf("Unable to open key.txt!\n"); 
        exit(0);
    }
    ch=fgetc(fp1);
    while(ch!=EOF)
    { 
        while(!(ch==' '||ch=='\n'))
        {
            str[j]=ch;
            j++; 
            ch=fgetc(fp1);
        }
        str[j]='\0';
        i++;
        c=strcmp(x,str);
        if(c==0) 
            return i;
        else
        {
            ch=fgetc(fp1);
            while(ch==' '||ch=='\n')
                ch=fgetc(fp1);
            j=0;
        }
    }
    fclose(fp1);
    return 0;

}
/* Output the result! */
void Out(int a,char *x)     
{
    FILE *fp2,*fp3,*fp4;
    char str[21];
    int num[21],i,data,n=20;
    strcpy(str,x);
    if(a!=INT)  /* identifier or key */
    {
        if(a == ID)     /* identifier */
        {
            if((fp2=fopen("d:\\tools\\tc\\cifa\\id.txt","at+"))==NULL)
            {
                printf("Unable to open id.txt!\n");
                exit(1);
            }
            fprintf(fp2,"%d    %s\n",a,str);
            fclose(fp2);
        }        
    }
    else  /* const */
    {
        str[n]='\0';
        for(i=0;i<21&&str[i]!='\0';i++)   /* change char to int! */
            num[i]=str[i]-48;
        data=num[0];   
        while(i>1)
        {
            data=data*10+num[i-1];
            i--;
        }
        str[n]='\0';
        if(data==0)
        {
            str[0]='0';
            str[1]='\0';
        }
        else
        {
            while(data!=0)     /* change decimal to binary! */
            {
                n--;
                str[n]=data%2+48;
                data=data/2;
            }
            i=0;
            while(str[n]!='\0')   /* Output binary string */
            {
                str[i]=str[n];
                i++;
                n++;
            }
            str[i]='\0';
        }
        if((fp3=fopen("d:\\tools\\tc\\cifa\\const.txt","at+"))==NULL)  /* const */
        {
            printf("Unable to open const.txt!\n");
            exit(1);
        }
        fprintf(fp3,"%d    %s\n",a,str);
        fclose(fp3);
    }
    if((fp4=fopen("d:\\tools\\tc\\cifa\\result.txt","at+"))==NULL)
    {
        printf("Unable to open result.txt!\n");
        exit(1);
    }
    fprintf(fp4,"%d    %s\n",a,str);
    fclose(fp4);       
}
/* deal with error*/
void Report_error(void)
{
    FILE *fp4;
    char str[50]="The char is unvalid! ";
    if((fp4=fopen("d:\\tools\\tc\\cifa\\result.txt","at+"))==NULL)
    {
        printf("Unable to open result.txt!\n");
        exit(1);
    }
    fprintf(fp4,"%s\n",str);
    fclose(fp4);
}
/* Scanner the source file */
void Scanner_example(FILE *fp)
{
    char ch;
    int i,j,c;
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        while(ch==' '||ch=='\n')
            ch=fgetc(fp);
        if(ch=='/')       /* get rid of exegesis*/
        {
            ch=fgetc(fp);
            if(ch=='*')
              {
                ch=fgetc(fp);
                while(!(ch=='*'&&(ch=fgetc(fp))=='/')) ch=fgetc(fp);
                ch=fgetc(fp);
              }
            else
            {fseek(fp,-2,1);
             ch=fgetc(fp);
            }
        }
        while(ch==' '||ch=='\n')
            ch=fgetc(fp);
        if(isalpha(ch))
        {
            TOKEN[0]=ch;
            ch=fgetc(fp);
            i=1;
            while(isalnum(ch))
            {
                TOKEN[i]=ch;
                i++;
                ch=fgetc(fp);
            }
            TOKEN[i]='\0';
            fseek(fp,-1,1);



			
			
			
			
			
			for(j=0;j<=k1;j++)
			{
				if(!strcmp(DEF[j].def1,TOKEN))
				{
					strcpy(TOKEN,DEF[j].def2);
					break;
				}
			}
			
			j=0;
			while(TOKEN[j]!='\0')
			{
				if(isdigit(TOKEN[j]))
				{
					j++;
				}
				else break;
			}
			if(TOKEN[j]=='\0')
			{
				printf("%c\n",TOKEN[j]);
				Out(INT,TOKEN);
				continue;
				
			}




			
			
		
			if(!strcmp(PRE,"define")) 
			{				
				strcpy(DEF[k1].def1,TOKEN);
				printf("DEF[%d].def1=%s\n",k1,DEF[k1].def1);				
				k1++;				
			}
			if(!strcmp(PPRE,"define"))
			{
			    strcpy(DEF[k2].def2,TOKEN);
				printf("DEF[%d].def2=%s\n",k2,DEF[k2].def2);
				k2++;				
			}



			
			/*for(j=0;j<=k1;j++)
			{
				if(!strcmp(DEF[j].def1,TOKEN))
				{
					strcpy(TOKEN,DEF[j].def2);
					break;
				}
			}
			
			j=0;
			while(TOKEN[j]!='\0')
			{
				if(isdigit(TOKEN[j]))
				{
					j++;
				}
				else break;
			}
			if(TOKEN[j]=='\0')
			{
				printf("%c\n",TOKEN[j]);
				Out(INT,TOKEN);
				break;
			}*/







            c=Lookup(TOKEN);
            if(c==0) Out(ID,TOKEN);  /*identifier*/
            else Out(c,TOKEN);   /*key*/
        }
        else if(isdigit(ch))   /*const integer*/
        {
            TOKEN[0]=ch;
            ch=fgetc(fp);
            i=1;
            while(isdigit(ch))
            {
                TOKEN[i]=ch;
                i++;
                ch=fgetc(fp);
            }
            TOKEN[i]='\0';
            fseek(fp,-1,1);
            Out(INT,TOKEN);





		
			
			if(!strcmp(PRE,"define")) 
			{
				strcpy(DEF[k1].def1,TOKEN);
				printf("DEF[%d].def1=%s\n",k1,DEF[k1].def1);				
				k1++;
				
			}
			if(!strcmp(PPRE,"define"))
			{
				strcpy(DEF[k2].def2,TOKEN);
				printf("DEF[%d].def2=%s\n",k2,DEF[k2].def2);				
				k2++;				
			}














        }
        else
            switch(ch)
        {
        case '<':            
            ch=fgetc(fp);
            if(ch=='=')
                Out(LE," ");
            else
            {
                fseek(fp,-1,1);
                Out(LT," ");
            }
            break;
        case '=':
            ch=fgetc(fp);
            if(ch=='=')
                Out(EQ," ");
            else
            {
                fseek(fp,-1,1);
                Out(GA," ");
            }
            break;
        case '>':
            ch=fgetc(fp);
            if(ch=='=')
                Out(GE," ");
            else
            {
                fseek(fp,-1,1);
                Out(GT," ");
            }
            break;
        case '!':
            ch=fgetc(fp);
            if(ch=='=')
                Out(NE," ");
            else Report_error();
            break;
        case ',':
            Out(COMMA," ");
            break;
        case ';':
            Out(FH," ");
            break;
        case '(':
            Out(LS," ");
            break;
        case ')':
            Out(RS," ");
            break;
        case '[':
            Out(LM," ");
            break;
        case ']':
            Out(RM," ");
            break;
        case '{':
            Out(LL," ");
            break;
        case '}':
            Out(RL," ");
            break;
        case '%':
            Out(PC," ");
            break;
        case '\\':
            Out(BA," ");
            break;
        case ':':
            Out(CO," ");
            break;
        case '"':
             Out(DM," ");
             break;
        case '+':
            ch=fgetc(fp);
            if(ch=='+')
                Out(SA," ");
            else
            {
                fseek(fp,-1,1);
                Out(ADD," ");
            }
            break;
        case '-':
            ch=fgetc(fp);
            if(ch=='-')
                Out(SS," ");
            else
            {
                fseek(fp,-1,1);
                Out(SUB," ");
            }
            break;
        case '*':
            Out(MUL," ");
            break;
        case '/':
            Out(DIV," ");
            break;
        default:
            Report_error();
            break;
        }
        ch=fgetc(fp);

	    strcpy(PPRE,PRE);		
		strcpy(PRE,TOKEN);
    }
	getch();
    return;
}
/* Output file context*/
void Print(FILE *fp)
{
    char ch;
    ch=fgetc(fp);
    while(ch!=EOF)
    {
        putchar(ch);
        ch=fgetc(fp);
    }
    fclose(fp);
}
/* void main()*/
void main()
{
    FILE *fp,*fp1,*fp2,*fp3,*fp4;  /*fp:example.txt  fp1:key.txt fp2:id.txt  fp3:const.txt fp4:result.txt*/
    fp=fp1=fp2=fp3=fp4=NULL;
    if((fp2=fopen("d:\\tools\\tc\\cifa\\id.txt","w"))==NULL)  /* Create id.txt */
    {
        printf("Unable to open id.txt!\n");
        exit(1);
    }
    fclose(fp2);
    if((fp3=fopen("d:\\tools\\tc\\cifa\\const.txt","w"))==NULL)  /* Create const.txt*/
    {
        printf("Unable to open const.txt!\n");
        exit(1);
    }
    fclose(fp3);
    if((fp4=fopen("d:\\tools\\tc\\cifa\\result.txt","w"))==NULL)  /* Create result.txt*/
    {
        printf("Unable to open result.txt!\n");
        exit(1);
    }
    fclose(fp4);
    printf("The source file as follows:\n");
    if((fp=fopen("d:\\tools\\tc\\cifa\\example.txt","r"))==NULL)
    {
        printf("Unable to open the file!\n");
        exit(0);
    }
    Print(fp);
    printf("\n");
    getch();
    printf("The key word table as follows:\n");
    if((fp1=fopen("d:\\tools\\tc\\cifa\\key.txt","r"))==NULL)
    {
        printf("Unable to open the file!\n");
        exit(0);
    }
    Print(fp1);
    getch();    
    /*fgets(str,19,fp1);
    while(str[0]!=' ')
    {
        puts(str);
        fflush(stdin);
        fgets(str,19,fp1);
    } */
    if((fp=fopen("d:\\tools\\tc\\cifa\\example.txt","r"))==NULL)   /* Open example.txt again! */
    {
        printf("Unable to open the file!\n"); 
        exit(0);
    }
    Scanner_example(fp);
    fclose(fp);
    printf("The compiling result as follows:\n");
    if((fp4=fopen("d:\\tools\\tc\\cifa\\result.txt","r"))==NULL)
    {
        printf("Unable to open result.txt!\n");
        exit(1);
    }
    Print(fp4);
    getch();
    printf("The identifier as follows:\n");
    if((fp2=fopen("d:\\tools\\tc\\cifa\\id.txt","r"))==NULL)
    {
        printf("Unable to open id.txt!\n");
        exit(1);
    }
    Print(fp2);
    getch();
    printf("The const as follows:\n");
    if((fp3=fopen("d:\\tools\\tc\\cifa\\const.txt","r"))==NULL)
    {
        printf("Unable to open const.txt!\n");
        exit(1);
    }
    Print(fp3);
    getch();
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看av一区| 欧美三级午夜理伦三级中视频| 亚洲欧美区自拍先锋| 91精品国产综合久久久久久久| 国产精品18久久久久久vr| 夜夜爽夜夜爽精品视频| 久久综合五月天婷婷伊人| 欧美在线不卡视频| 成人免费视频一区| 激情综合网av| 午夜精品成人在线视频| 中文字幕一区二区三区不卡| 欧美精品一区二| 9191精品国产综合久久久久久| aaa国产一区| 国产一区欧美一区| 青青草国产成人99久久| 亚洲一级二级三级| 亚洲精品视频在线| 国产精品欧美一区二区三区| 欧美成人激情免费网| 7777女厕盗摄久久久| 在线观看中文字幕不卡| 福利电影一区二区三区| 国产毛片精品视频| 久久精品国产久精国产| 日本不卡的三区四区五区| 亚洲激情男女视频| 国产精品护士白丝一区av| 国产三级久久久| 久久久久国产一区二区三区四区| 欧美一区二区日韩| 在线观看91精品国产麻豆| 色综合一区二区| av电影天堂一区二区在线观看| 国产精选一区二区三区| 国产美女在线精品| 国产高清在线精品| 成人蜜臀av电影| 成人午夜伦理影院| 成人h版在线观看| 99精品国产一区二区三区不卡| 国产乱码精品一区二区三区av| 国产一区不卡视频| 丰满放荡岳乱妇91ww| 岛国av在线一区| jizzjizzjizz欧美| 99re这里都是精品| 色婷婷av一区| 欧美欧美午夜aⅴ在线观看| 欧美精品99久久久**| 欧美一区二区在线视频| 精品国产一区二区三区四区四| 精品国产电影一区二区| 久久久久99精品国产片| 欧美激情在线一区二区三区| 日本一区二区成人| 一区二区在线免费| 亚洲.国产.中文慕字在线| 蜜桃av噜噜一区| 国产精品一区二区在线播放| 成人免费毛片片v| 色哟哟在线观看一区二区三区| 91久久免费观看| 正在播放亚洲一区| 久久久蜜桃精品| 亚洲欧洲一区二区在线播放| 亚洲在线视频一区| 蜜臀av一区二区| 成人福利在线看| 欧美日韩中字一区| 欧美精品一区二区久久久| 国产日韩欧美亚洲| 亚洲精品乱码久久久久| 捆绑紧缚一区二区三区视频| 国产成人免费视频精品含羞草妖精| 不卡电影一区二区三区| 欧美男女性生活在线直播观看| 日韩精品一区二区三区视频| 中文字幕高清不卡| 婷婷激情综合网| 成人av在线资源网站| 欧美色倩网站大全免费| 国产无一区二区| 亚洲电影第三页| 国产精品123| 91麻豆精品久久久久蜜臀| 国产亚洲精品免费| 婷婷丁香久久五月婷婷| 成人黄色小视频| 欧美成人一区二区三区| 国产精品免费观看视频| 日韩avvvv在线播放| av电影天堂一区二区在线| 日韩美一区二区三区| 亚洲乱码国产乱码精品精可以看| 美女视频黄频大全不卡视频在线播放 | 国产精品亚洲一区二区三区在线| 色老综合老女人久久久| 综合激情成人伊人| 精品一区二区三区在线播放| 欧美亚洲国产bt| 亚洲日本成人在线观看| 久久国产麻豆精品| 欧美日韩不卡在线| 亚洲女人****多毛耸耸8| 国产精品一区二区在线播放| 91精品麻豆日日躁夜夜躁| 亚洲人成人一区二区在线观看| 久久99精品国产麻豆婷婷洗澡| 欧美伊人久久久久久午夜久久久久| 欧美国产日韩亚洲一区| 极品瑜伽女神91| 欧美一区二区视频在线观看2022| 亚洲激情在线播放| 99精品久久只有精品| 亚洲国产经典视频| 狠狠色狠狠色合久久伊人| 欧美一区二区福利在线| 亚洲国产精品影院| 91黄色免费观看| 亚洲免费观看视频| 99久久精品国产精品久久| 中文字幕高清一区| 国产成人免费av在线| 国产喂奶挤奶一区二区三区| 久久国产精品第一页| 欧美一级日韩免费不卡| 亚洲福利一二三区| 欧美三级电影在线看| 亚洲国产成人va在线观看天堂| 色婷婷av一区二区三区软件| 亚洲美女少妇撒尿| 色94色欧美sute亚洲线路一久| 综合色天天鬼久久鬼色| 91小视频在线| 亚洲伦在线观看| 91久久精品国产91性色tv | 国产欧美日韩激情| 国产成人av电影在线| 中文字幕欧美激情一区| va亚洲va日韩不卡在线观看| 亚洲天堂网中文字| 91麻豆国产福利精品| 亚洲另类春色校园小说| 91成人国产精品| 亚洲成av人片在www色猫咪| 91精品婷婷国产综合久久竹菊| 美女视频黄 久久| 国产亚洲欧美一级| 91视频观看免费| 无码av中文一区二区三区桃花岛| 91精品国产免费| 国产一区二区三区黄视频| 国产精品色哟哟网站| 97久久超碰精品国产| 午夜激情综合网| 久久久久久一二三区| 91免费小视频| 偷拍与自拍一区| 国产亚洲制服色| 91在线小视频| 免费久久99精品国产| 国产精品美女视频| 欧美性xxxxxxxx| 国产又黄又大久久| 亚洲美女淫视频| 欧美成人伊人久久综合网| www.激情成人| 免费亚洲电影在线| 亚洲国产高清不卡| 欧美二区三区的天堂| 国产传媒日韩欧美成人| 亚洲在线观看免费| 久久精品免费在线观看| 欧美在线制服丝袜| 国产一区二区三区蝌蚪| 亚洲精品老司机| 久久久久久久久久久黄色| 色哟哟欧美精品| 麻豆国产精品一区二区三区| 国产精品三级在线观看| 欧美日韩国产首页在线观看| 国产精品一区二区你懂的| 亚洲成人午夜影院| 国产精品污网站| 日韩你懂的电影在线观看| 91美女片黄在线观看| 国模大尺度一区二区三区| 亚洲综合av网| 国产精品午夜春色av| 日韩一区二区三区视频在线观看| av中文字幕在线不卡| 国产在线一区观看| 亚洲第一精品在线| 综合av第一页| 国产欧美精品一区二区色综合朱莉| 91精品国产手机| 日本韩国一区二区| av不卡免费在线观看|