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

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

?? jp jp(0).c

?? 是詞法分析程序,可以對詞法分析有更深的了解與認識
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<conio.h>
#include<malloc.h>
#define INPUT getch()
struct  bl
{
char name[20];
int type;
int start;
int line[20];
int layer;
struct bl *next;
};
struct cl
{
 char name[20];
 int type;
 int a;
 float b;
 char c[80];
 int line[20];
 int layer;
struct cl *next;
};

struct shz
{
 char name[20];
 int type;
 int start;
 int line[20];
 int length;
 int layer;
 struct shz *next;
};
struct hsh
{
 char name[20];
 int type;
 int line[21];
 int layer;
 int legal;
 struct {
          void *p;
          int style;
          }csh[5];
struct bl *a;
struct cl *b;
struct shz *c;
struct hsh *next;
};
struct cjbl
{
 int layer;
struct bl *a;
struct cl *b;
struct shz *c;
struct cch *f; 
struct hsh *next;
};
struct cch
{
char name[20];
char why[100];
int line[20];
int layer;
struct cch *next;
};
/*定義全局變量*/
int llayer;
int addr=0;
struct cjbl *head;
/*取單詞函數用到的變量*/
FILE * in, * out;
int fl=0,ta=0,hh=1;
char c,idl[20];
char *ch;
int doorkey=0;
/*定義結構數組*/
struct jtb
{
 char name[20];
int number;
}word[47]={{"",0},{"int",1},{"char",2},{"float",3},{"void",4},{"const",5},
{"",6},{"if",7},{"else",8},{"then",9},{"repeat",10},{"until",11},{"read",12},
{"write",13},{"",14},{"",15},{"",16},{"",17},{"",18},{"",19},{"",20},{"+",21},
{"-",22},{"*",23},{"/",24},{"(",25},{")",26},{"[",27},{"]",28},{"<",29},
{">",30},{"=",31},{",",32},{";",33},{"{",34},{"}",35},{":",36},{"'",37},
{"\"",38},{".",39},{"%",40},{"?",41},{":",42},{"<=",43},{">=",44},{" ",45},{"",46}};
void getchh(void)/*取字符函數*/
{
 if(in==NULL){printf("can not open the file");exit(0);}
if(feof(in)==0) c=fgetc(in);
if(feof(in)!=0){c='(';doorkey=doorkey+1;}
}
struct dqzh/*定義單詞棧*/
{
int t;
int line;
char name[20];
}getdq[3],hchzh[3]={{0,0,"@"},{0,0,"@"},{0,0,"@"}};
int chjtb(char * name)
{
int i=0;
while(i<46&&strcmp(name,word[i].name)!=0)
  i=i+1;
if(i==46) return(0);
}
void getsy(void)/*取單詞函數*/
{
 int state,i;
state=0;
i=0;
while(hchzh[0].t!=0)
     {
       fprintf(out,"\n%d  %d",7,-1);hchzh[0].t--;
       hchzh[0].line++;
     }
if (ta!=1)
  {
   while(c==' ')INPUT;
   while(state!=100)
        {
         switch(state)
           {
              case 0:
                      if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))  state=1;
                      else if (c>='0'&&c<='9') state=3;
                      else if (c==10) state=99;
                      else if (c=='<') state=16;   
                      else if (c=='>') state=18; 
                      else if (c==':') state=20;
                      else if (c=='"') state=22; 
                      else if((c>='!'&&c<='/')||(c>='{'&&c<='~'))  state=15;
                      else if(c>=';'||c<='?'||c=='='||(c>='['&&c<='_'))  state=15;
                      else {state=15;}
                      break;
              case 1:
                        if((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9'))
                        {idl[i]=c;i++;INPUT;}
                        else state=2;
                        break;
              case 2: 
                        state=100;
                        idl[i]='\0';
                        ch=idl;fl=1;
                        i=0;
                        break;
              case 3:
                        if(c>='0'&&c<='9'){idl[i]=c;fl=2;i++;INPUT;}
                        else if(c=='.'){idl[i]=c;i++;state=5;INPUT;}
                        else if(c=='E'){idl[i]=c;i++;fl=2;state=7;INPUT;}
                        else if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){idl[i]=c;i++;fl=0;INPUT;}
                        else {state=4;}
                        break;
                case 4:  
                        state=100;
                        ch=idl;idl[i]='\0';
                        i=0;
                        break;
                 case 5:
                         if(c>='0'&&c<='9'){idl[i]=c;i++;INPUT;}
                         else if(c=='E'){idl[i]=c;i++;state=7;INPUT;}
                         else state=4;fl=4;
                         break;
                
                 case 7:
                         if(c>='0'&&c<='9'){idl[i]=c;i++;INPUT;}
                         else if(c=='+'||c=='-'){idl[i]=c;i++;INPUT;}
                         else state=4;
                         break;
                 case 11:  
                        state=100;
                        ch=idl;;INPUT;
                        break;
                 case 15:  
                        state=100;
                        idl[i]=c;i++;idl[i]='\0';
                        fl=3;ch=idl;i=0;INPUT;
                        break;
                 case 16:  
                        state=17;
                        idl[i]=c;i++;INPUT;
                        break;
                 case 17:
        state=100;
        fl=3;
        if(c=='>'){idl[i]=c;i++;idl[i]='\0';INPUT;}
        else if(c=='='){idl[i]=c;i++;idl[i]='\0';INPUT;}
         else idl[i]='\0';
        break;
case 18:
       state=19;
       idl[i]=c;i++;INPUT;
       break;
case 19:
        state=100;fl=3;
        if(c=='='){idl[i]=c;i++;idl[i]='\0';INPUT;}
         else idl[i]='\0';
        break;
case 20:
       state=21;
       idl[i]=c;i++;INPUT;
       break;
case 21:
        state=100;fl=3;
        if(c=='='){idl[i]=c;i++;idl[i]='\0';INPUT;}
         else idl[i]='\0';
        break;
case 22:
        state=100;fl=3;
        idl[i]=c;i++;idl[i]='\0';
         ta++;INPUT;
        break;
case 99:
        state=0;
        strcpy(hchzh[2].name,"@");hchzh[2].t++;
        i++;hh++;
        INPUT;i=0;fl=7;
        while(c=='')INPUT;
        break;
default:state=100;
  }
}
hchzh[0]=hchzh[1];
hchzh[1]=hchzh[2];
hchzh[2].t=0;
hchzh[2].line=hh;
getdq[0]=getdq[1];
getdq[1]=getdq[2];
getdq[2].t=fl;
getdq[2].line=hh;
strcpy(getdq[2].name,idl);
/*printf("\n");*/
while(c=='')INPUT;
fl=0;
}
else{
if(c=='"')ta=0;
   idl[i]=c;i++;idl[i]='\0'; 
   getdq[0]=getdq[1];
   getdq[1]=getdq[2];
   if(ta==0) getdq[2].t=5;
   getdq[2].line=hh;
   strcpy(getdq[2].name,idl);
   INPUT;
   if(c==10){hh++;INPUT;}
   }
}
void * set(int,int *,char *);/*Set()函數聲明*/
struct cch * yfchc(char *pn,char *p)/*填出錯節點*/
{
  int i;
  struct cch * cchh,** cchn;
  cchh=malloc(sizeof(struct cch));
  i=6;
  cchn=set(0,&i,"");
  *cchn=cchh;
  strcpy(cchh->name,pn);
  strcpy(cchh->why,p);
  cchh->line[0]=getdq[0].line;
  cchh->line[1]=-1;
  cchh->layer=llayer;
  cchh->next=NULL;
  return(cchh);
}/* yfchc()*/
void * set(int layer,int *type,char * name)
{
 int  door=0;
 int ttype,i;
 void *temp;
 union all
  {
   struct bl * a;
   struct cl *b;
   struct shz *c;
   struct hsh *d;
   struct cjbl *e;
   struct cch *f;
  }pp,ll;
if(layer==-1)
  {
   if(*type==4&&strlen(name)!=0)
   door=2;
  }
 else if(* type==0)
   {
    if(strlen(name)==0)
    door=3;
   else door=4;
  }
  else if(strlen(name)==0)
         door=5;
        else door=6;
switch(door)
{
  case 2:if(head->next==NULL)
          return(NULL);
       pp.d=head->next;
       while(pp.d!=NULL&&strcmp(pp.d->name,name)!=0)
          pp.d=pp.d->next;
         return(pp.d);
     case 3: if(head->layer==layer){
            * type=5;
        return(head);
         }
          else{
               pp.d=head->next;
               while(pp.d!=NULL&&pp.d->layer!=layer)
        pp.d=pp.d->next;
        if(pp.d!=NULL&&pp.d->layer==layer)
        {
          * type=4;
          return(pp.d);
        }
          else return(NULL);
         }
 case 4: i=1;
       while(i<7&&set(layer,&i,name)==NULL)
        i=i+1;
           if(i<7)
         {
               * type=i;
        return(set(layer,&i,name));
        }
            else return(NULL);
 case 5: ttype=0;
     temp=set(layer,&ttype," ");/*定位*/
     if(temp==NULL)
       return(NULL);
    else{
        if(ttype==5)
           {
             ll.e=temp;
             switch(* type)
            {
               case 1:if(ll.e->a==NULL)
                return(&ll.e->a);
                else{
                      pp.a=ll.e->a;
                    while(pp.a->next!=NULL)
                      pp.a=pp.a->next;
                    return (pp.a->next);
                                 }  
                          case 2:if(ll.e->b==NULL)
                return(&ll.e->b);
                else{
                      pp.b=ll.e->b;
                    while(pp.b->next!=NULL)
                      pp.b=pp.b->next;
                    return(pp.b->next);
                                 }  
                         case 3:if(ll.e->c==NULL)
                return(&ll.e->c);
                else{
                      pp.c=ll.e->c;
                    while(pp.c->next!=NULL)
                      pp.c=pp.c->next;
                    return(pp.c->next);
                                 }
                         case 6:if(ll.e->f==NULL)
                return(&ll.e->f);
                else{
                      pp.f=ll.e->f;
                    while(pp.f->next!=NULL)
                      pp.f=pp.f->next;
                    return(pp.f->next);
                                 }
            default:return(NULL);
                       }/*end switch*/
                     }/*end if*/
                   else{
                         ll.d=temp;
            switch(* type)
            {
            case 1:if(ll.d->a==NULL)
                return(&ll.d->a);
                else{
                      pp.a=ll.d->a;
                    while(pp.a->next!=NULL)
                      pp.a=pp.a->next;
                    return(pp.a->next);
                                 }  
                          case 2:if(ll.d->b==NULL)
                return(&ll.d->b);
                else{
                      pp.b=ll.d->b;
                    while(pp.b->next!=NULL)
                      pp.b=pp.b->next;
                    return(pp.b->next);
                                 }  
                         case 3:if(ll.d->c==NULL)
                return(&ll.d->c);
                else{
                      pp.c=ll.d->c;
                    while(pp.c->next!=NULL)
                      pp.c=pp.c->next;
                    return(pp.c->next);
                                 }
                        
            default:return(NULL);
                       }/*end switch*/
                     }/*end else*/
                }/*end else*/
 case 6:ttype=0;
            temp=set(layer,&ttype," ");/*定位層次*/
        if(temp==NULL)
        return(NULL);
        else{
                if(ttype==5)
            ll.e=temp;
            else ll.d=temp;
            if(ttype==4)
              switch( * type){
                case 1:pp.a=ll.d->a;
                    while(pp.a!=NULL&&strcmp(pp.a->name,name)!=0)
                    pp.a=pp.a->next;
                    return(pp.a);/*如果pp.a不等于空,說明已經找到節點,如果
                            pp.a等于空,剛返回空*/
                               case 2:pp.b=ll.d->b;
                    while(pp.b!=NULL&&strcmp(pp.b->name,name)!=0)
                    pp.b=pp.b->next;
                    return(pp.b);/*如果pp.b不等于空,說明已經找到節點,如果
                            pp.b等于空,剛返回空*/
                              case 3:pp.c=ll.d->c;
                    while(pp.c!=NULL&&strcmp(pp.c->name,name)!=0)
                    pp.c=pp.c->next;
                    return(pp.c);/*如果pp.c不等于空,說明已經找到節點,如果
                            pp.c等于空,剛返回空*/
                           default:return(NULL);
                         }/*end switch*/
                       else switch( * type)
            {
              case 1:pp.a=ll.e->a;
                    while(pp.a!=NULL&&strcmp(pp.a->name,name)!=0)
                    pp.a=pp.a->next;
                    return(pp.a);/*如果pp.a不等于空,說明已經找到節點,如果
                            pp.a等于空,剛返回空*/
                               case 2:pp.b=ll.e->b;
                    while(pp.b!=NULL&&strcmp(pp.b->name,name)!=0)
                    pp.b=pp.b->next;
                    return(pp.b);/*如果pp.b不等于空,說明已經找到節點,如果
                            pp.b等于空,剛返回空*/
                              case 3:pp.c=ll.e->c;
                    while(pp.c!=NULL&&strcmp(pp.c->name,name)!=0)
                    pp.c=pp.c->next;
                    return(pp.c);/*如果pp.c不等于空,說明已經找到節點,如果
                            pp.c等于空,剛返回空*/
                              case 6:pp.f=ll.e->f;
                    while(pp.f!=NULL&&strcmp(pp.f->name,name)!=0)
                    pp.f=pp.f->next;
                    return(pp.f);/*如果pp.f不等于空,說明已經找到節點,如果
                            pp.f等于空,剛返回空*/
                default:return(NULL);
                    }/*end switch*/
                }/*end else*/
            }/*end switch*/
        }/*end set*/


         void bldy(int type)/*變量定義處理函數,參數接收保留字的代碼*/
         {
       int i;
       struct shz * shzh,** shzn;
       struct bl  *blh, ** bln;
       struct cl  *clh,** cln;
       struct cch *cchh,** cchn;
       int style;
       int typee,record;
       fprintf(out,"\n%d %d",0,type);/*輸出變量類型*/
       getsy();/*重讀一個單詞到輸入棧*/

           record=type;
           while(1)
           {
               typee=chjtb(getdq[0].name);
        if(getdq[0].t==1&&typee==0)/*定義的變量命合法,進行變量定義處理*/
                 {
                 if (chjtb(getdq[1].name)==27)
                 {
            shzh=malloc(sizeof(struct shz));
            style=3;/*連接數組節點*/
            shzn=set(llayer,&style," ");
            *shzn=shzh;
            strcpy(shzh->name,getdq[0].name);
            shzh->type=record;
            shzh->line[0]=getdq[0].line;
            shzh->line[1]=-1;
            shzh->layer=llayer;
            shzh->next=NULL;
            fprintf(out,"\n%d %d",3,shzh);/*output array name*/
            getsy();/*重新讀入一個章詞到輸入棧*/
            fprintf(out,"\n%d %d",0,27);/*output'['*/
            getsy();/*重新讀入一個章詞到輸入棧*/
            if(getdq[0].t==2&&atoi(getdq[0].name)>0)/*如果是數字并且大于0,則長度有效*/
                  {
                            shzh->length=atoi(getdq[0].name);
                shzh->start=addr;
                switch(record)/* count the next var`s begain address*/
                               {
                                  case 1:addr=addr+2*shzh->length;break;
                  case 2:addr=addr+1+shzh->length;break;
                  case 3:addr=addr+4*shzh->length;
                }/*end count*/
 
                    clh=malloc(sizeof(struct cl));/* requst a const node ,and link*/
                    style=2;
           cln=set(llayer,&style," ");
                   * cln=clh;
          strcpy(clh->name," ");
                  clh->type=1;
                  clh->a=shzh->length;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影在线观看一区| 99re热这里只有精品免费视频| 国产精品一区二区在线观看网站| 色综合久久久久久久久| 精品国产网站在线观看| 亚洲电影一级片| 国产宾馆实践打屁股91| 日韩女同互慰一区二区| 午夜激情久久久| 91免费版pro下载短视频| 国产偷v国产偷v亚洲高清| 免费精品视频最新在线| 欧美日韩亚洲另类| 亚洲私人影院在线观看| 国产电影精品久久禁18| 精品久久久久久久一区二区蜜臀| 亚洲成av人片一区二区梦乃| 91亚洲午夜精品久久久久久| 国产精品视频一区二区三区不卡| 韩国v欧美v亚洲v日本v| 精品国产伦一区二区三区免费| 日韩精品国产精品| 欧美乱妇20p| 视频一区视频二区中文| 欧美美女视频在线观看| 亚洲国产精品久久久男人的天堂| 色婷婷综合久久久久中文| 国产三级精品三级在线专区| 国产99久久久精品| 国产天堂亚洲国产碰碰| 国产91丝袜在线播放0| 久久久久国产一区二区三区四区| 另类中文字幕网| 精品久久久久久久久久久久久久久| 日本系列欧美系列| 精品国产髙清在线看国产毛片| 免费观看日韩电影| 亚洲一区在线免费观看| 色8久久精品久久久久久蜜| 一区二区三区四区中文字幕| 色婷婷精品大在线视频| 一区二区久久久久久| 在线影视一区二区三区| 亚洲国产日韩精品| 日韩欧美国产综合| 国产美女精品人人做人人爽| 中文字幕不卡一区| 91久久国产最好的精华液| 亚洲一区自拍偷拍| 日韩精品资源二区在线| 国产成人精品午夜视频免费| 国产精品萝li| 日本高清无吗v一区| 日韩成人精品在线| 国产色91在线| 色婷婷综合久久久久中文| 日韩电影免费一区| 久久精品亚洲乱码伦伦中文| 色呦呦日韩精品| 男人的j进女人的j一区| 国产三区在线成人av| 欧美综合一区二区| 国内成人免费视频| 亚洲免费观看视频| 欧美xxx久久| 91在线国产福利| 美女尤物国产一区| 亚洲欧美日韩一区二区| 精品欧美久久久| 99久久99久久综合| 久久国产剧场电影| 一区二区三区日韩| 精品成人私密视频| 欧美日韩你懂得| 成人不卡免费av| 免费一级欧美片在线观看| 日韩一区在线免费观看| 欧美日韩国产免费一区二区| 国产成人h网站| 免费成人美女在线观看.| 国产精品久久久久久妇女6080 | 亚洲久草在线视频| 日韩三级在线观看| 91久久精品一区二区| 成人av集中营| 久久66热偷产精品| 污片在线观看一区二区| 一区在线中文字幕| 久久久噜噜噜久久中文字幕色伊伊 | 人妖欧美一区二区| 亚洲精品乱码久久久久久久久| 日韩美女在线视频| 欧美群妇大交群的观看方式| 91网页版在线| 丰满少妇在线播放bd日韩电影| 毛片av一区二区三区| 亚洲一二三四在线| 亚洲色图视频免费播放| 国产精品少妇自拍| 久久精品视频一区二区三区| 日韩欧美一区二区视频| 欧美精品自拍偷拍动漫精品| 色狠狠一区二区三区香蕉| 成人精品高清在线| 高清免费成人av| 国产精品一区二区三区四区| 久久精品99国产精品日本| 日韩黄色免费电影| 日日摸夜夜添夜夜添精品视频 | 亚洲精品国产a久久久久久| 中文字幕欧美区| 中文文精品字幕一区二区| 国产日韩亚洲欧美综合| 中文字幕乱码久久午夜不卡| 国产日韩欧美亚洲| 国产精品人妖ts系列视频| 亚洲欧美在线视频观看| 国产精品国产三级国产普通话蜜臀| 国产日韩欧美不卡在线| 亚洲国产精品精华液2区45| 国产精品网站在线播放| 中文字幕一区二区三区不卡在线| 国产精品女主播av| 亚洲欧洲精品一区二区三区| 日韩理论在线观看| 一区二区三区不卡在线观看| 亚洲国产欧美在线| 免费观看91视频大全| 国产呦萝稀缺另类资源| 国产91对白在线观看九色| 91尤物视频在线观看| 欧美性色黄大片| 欧美刺激午夜性久久久久久久| 久久综合九色综合97婷婷| 欧美国产激情二区三区| 一区二区三区国产精华| 亚洲成av人片一区二区梦乃| 久久精品99国产精品| 粗大黑人巨茎大战欧美成人| 色综合 综合色| 日韩情涩欧美日韩视频| 亚洲国产高清在线| 亚洲妇女屁股眼交7| 久草精品在线观看| 日本精品免费观看高清观看| 欧美精品色一区二区三区| 久久久久久一二三区| 亚洲欧美另类图片小说| 蜜臀av性久久久久蜜臀aⅴ四虎 | 中文字幕一区二区三区在线播放 | 欧美一级日韩免费不卡| 久久久精品欧美丰满| 伊人一区二区三区| 蜜桃视频一区二区| 99精品视频中文字幕| 日韩欧美成人午夜| 亚洲美女电影在线| 韩国在线一区二区| 欧美亚洲丝袜传媒另类| 国产亚洲一二三区| 午夜免费欧美电影| 粉嫩绯色av一区二区在线观看| 欧美艳星brazzers| 国产偷国产偷亚洲高清人白洁 | 一区二区在线免费观看| 国产一区久久久| 欧美电影影音先锋| 亚洲人精品午夜| 狠狠色2019综合网| 4hu四虎永久在线影院成人| 综合在线观看色| 大桥未久av一区二区三区中文| 日韩一区二区三区观看| 亚洲aaa精品| 91片黄在线观看| 国产精品丝袜久久久久久app| 九九久久精品视频| 欧美一区二区三区公司| 亚洲成人三级小说| 日本电影欧美片| 亚洲人成网站色在线观看| 国产成人精品1024| 久久久久久久久久久久久夜| 日韩精品久久久久久| 欧美日韩精品二区第二页| 中文字幕中文乱码欧美一区二区| 国产一区久久久| 精品国产乱码久久久久久老虎| 五月婷婷综合在线| 欧美探花视频资源| 一区二区三区日韩在线观看| 99国产精品国产精品毛片| 中文字幕免费不卡在线| 成人小视频在线| 国产精品理论片| 91玉足脚交白嫩脚丫在线播放| 国产精品国产a| av一本久道久久综合久久鬼色| 国产精品欧美一区二区三区| 成人精品电影在线观看|