亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
国产精品毛片无遮挡高清| 欧美日本在线一区| 欧美国产日韩在线观看| 高清beeg欧美| 最近中文字幕一区二区三区| 99久久婷婷国产| 亚洲综合成人网| 欧美三级韩国三级日本三斤 | 欧美三级在线视频| 五月天欧美精品| 久久综合久色欧美综合狠狠| 国产成人在线观看免费网站| ...av二区三区久久精品| 在线看国产一区二区| 日本视频在线一区| 久久久av毛片精品| 色一情一乱一乱一91av| 午夜视频在线观看一区| 欧美精品一区在线观看| a亚洲天堂av| 日韩激情一二三区| 国产欧美日韩在线观看| 91成人在线精品| 九九精品一区二区| 亚洲免费资源在线播放| 欧美精品国产精品| 高清视频一区二区| 午夜精品免费在线观看| 国产蜜臀97一区二区三区| 欧美中文字幕一区| 国产精品一品二品| 天堂va蜜桃一区二区三区 | 欧美日韩色一区| 国产精品性做久久久久久| 一区二区三区四区精品在线视频| 日韩欧美一二三四区| jlzzjlzz国产精品久久| 奇米在线7777在线精品| 亚洲三级小视频| 欧美哺乳videos| 欧美性受极品xxxx喷水| 国产成人精品免费网站| 日韩影院在线观看| 亚洲视频一区在线| 国产调教视频一区| 91精品国产综合久久香蕉的特点| 99在线热播精品免费| 久久成人精品无人区| 亚洲午夜久久久久久久久久久 | 国产一区二区三区免费看 | 国产精品一区二区免费不卡| 日韩精品午夜视频| 亚洲男人的天堂av| 国产精品初高中害羞小美女文| 日韩精品一区二区三区在线观看| 欧美伊人精品成人久久综合97 | 狠狠色丁香婷综合久久| 五月天中文字幕一区二区| 椎名由奈av一区二区三区| 久久精品亚洲精品国产欧美| 欧美一区二区三区成人| 欧美性感一区二区三区| 欧美一区二区私人影院日本| 成人av高清在线| 国产成人啪免费观看软件| 麻豆91在线播放| 日韩av电影天堂| 五月激情综合婷婷| 亚洲v日本v欧美v久久精品| 亚洲综合色在线| 综合久久久久久久| 最新中文字幕一区二区三区| 国产精品毛片久久久久久| 久久精品无码一区二区三区| 久久噜噜亚洲综合| 国产日韩精品一区二区浪潮av | 欧美国产日韩精品免费观看| 精品国产一区a| 久久综合九色综合97_久久久| 精品欧美黑人一区二区三区| 欧美v亚洲v综合ⅴ国产v| 宅男噜噜噜66一区二区66| 欧美精品欧美精品系列| 91精品国产免费| 欧美成人福利视频| 久久亚洲精品小早川怜子| 国产日韩综合av| 国产精品免费久久| 亚洲精品欧美激情| 亚洲mv大片欧洲mv大片精品| 日产精品久久久久久久性色| 蜜桃视频一区二区三区在线观看| 蜜桃av一区二区| 国产乱子伦视频一区二区三区| 高清不卡一区二区在线| 日本高清不卡视频| 欧美精品 日韩| 久久亚洲二区三区| 中文字幕视频一区二区三区久| 亚洲欧美激情视频在线观看一区二区三区 | 中文字幕视频一区| 亚洲一卡二卡三卡四卡五卡| 日日摸夜夜添夜夜添国产精品| 免费人成精品欧美精品| 国产精品亚洲第一区在线暖暖韩国| 成人av在线一区二区| www.视频一区| 欧美丰满一区二区免费视频| 精品少妇一区二区三区免费观看| 久久久久久久网| 亚洲女人的天堂| 七七婷婷婷婷精品国产| 丁香另类激情小说| 欧美日韩一区高清| 久久久久国色av免费看影院| 一区二区三区四区在线播放 | 午夜精品在线视频一区| 欧美天堂一区二区三区| 日韩三级免费观看| 国产精品视频你懂的| 亚洲综合免费观看高清完整版| 美脚の诱脚舐め脚责91| 99视频国产精品| 欧美一区二区三区四区久久 | 欧美丰满美乳xxx高潮www| 国产视频一区在线观看| 亚洲国产成人porn| 丰满白嫩尤物一区二区| 91精品国产高清一区二区三区| 亚洲国产高清aⅴ视频| 日本不卡视频在线观看| 91网上在线视频| 久久综合久久综合久久综合| 亚洲综合久久久| av中文字幕不卡| 精品av久久707| 天堂成人免费av电影一区| 成人avav在线| 久久亚洲一区二区三区明星换脸 | 国产欧美日韩另类视频免费观看| 亚洲国产精品欧美一二99 | 91美女精品福利| 久久色.com| 九色porny丨国产精品| 欧美三级日韩在线| 亚洲精品视频在线| 成人黄动漫网站免费app| 久久新电视剧免费观看| 人人狠狠综合久久亚洲| 欧美色综合网站| 一区二区三区在线免费| 99视频国产精品| 国产精品国产三级国产a| 激情五月婷婷综合| 欧美大片国产精品| 麻豆精品视频在线观看免费| 欧美丰满高潮xxxx喷水动漫| 亚洲综合视频在线观看| 91国产丝袜在线播放| 亚洲女厕所小便bbb| 色猫猫国产区一区二在线视频| 国产精品久久久久桃色tv| 成人午夜在线播放| 欧美国产亚洲另类动漫| 成人短视频下载| 国产精品久久久久久亚洲伦 | 欧美自拍偷拍午夜视频| 亚洲美女淫视频| 色94色欧美sute亚洲线路一久| 中文字幕亚洲区| 色av成人天堂桃色av| 亚洲一区国产视频| 欧美区一区二区三区| 日本亚洲电影天堂| 欧美大片顶级少妇| 国产精品一区二区果冻传媒| 日本一区二区免费在线| 99久久精品免费| 亚洲综合在线电影| 欧美乱妇20p| 精品一区在线看| 国产日韩成人精品| 97国产精品videossex| 一区二区三区日韩精品| 欧美日韩免费视频| 老司机免费视频一区二区三区| 精品日本一线二线三线不卡| 国产精品香蕉一区二区三区| 国产精品久久久久久久午夜片| 色婷婷久久久久swag精品 | 欧美日韩你懂得| 老司机免费视频一区二区| 国产欧美日韩精品a在线观看| 成人高清在线视频| 亚洲第一福利一区| 精品美女在线播放| caoporen国产精品视频| 亚洲3atv精品一区二区三区| 久久综合九色综合久久久精品综合| 成人综合婷婷国产精品久久蜜臀|