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

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

?? lemon.c

?? 這是一個(gè)嵌入式系統(tǒng)上運(yùn)行的輕量級(jí)數(shù)據(jù)庫
?? C
?? 第 1 頁 / 共 5 頁
字號(hào):
  prefixsize = strlen(prefix);  availablewidth = LINEWIDTH - prefixsize;  /* Generate the error message */  vsprintf(errmsg,format,ap);  va_end(ap);  errmsgsize = strlen(errmsg);  /* Remove trailing '\n's from the error message. */  while( errmsgsize>0 && errmsg[errmsgsize-1]=='\n' ){     errmsg[--errmsgsize] = 0;  }  /* Print the error message */  base = 0;  while( errmsg[base]!=0 ){    end = restart = findbreak(&errmsg[base],0,availablewidth);    restart += base;    while( errmsg[restart]==' ' ) restart++;    fprintf(stdout,"%s%.*s\n",prefix,end,&errmsg[base]);    base = restart;  }}/**************** From the file "main.c" ************************************//*** Main program file for the LEMON parser generator.*//* Report an out-of-memory condition and abort.  This function** is used mostly by the "MemoryCheck" macro in struct.h*/void memory_error(){  fprintf(stderr,"Out of memory.  Aborting...\n");  exit(1);}/* The main program.  Parse the command line and do it... */int main(argc,argv)int argc;char **argv;{  static int version = 0;  static int rpflag = 0;  static int basisflag = 0;  static int compress = 0;  static int quiet = 0;  static int statistics = 0;  static int mhflag = 0;  static struct s_options options[] = {    {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."},    {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."},    {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."},    {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file"},    {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."},    {OPT_FLAG, "s", (char*)&statistics, "Print parser stats to standard output."},    {OPT_FLAG, "x", (char*)&version, "Print the version number."},    {OPT_FLAG,0,0,0}  };  int i;  struct lemon lem;  OptInit(argv,options,stderr);  if( version ){     printf("Lemon version 1.0\n");     exit(0);   }  if( OptNArgs()!=1 ){    fprintf(stderr,"Exactly one filename argument is required.\n");    exit(1);  }  lem.errorcnt = 0;  /* Initialize the machine */  Strsafe_init();  Symbol_init();  State_init();  lem.argv0 = argv[0];  lem.filename = OptArg(0);  lem.basisflag = basisflag;  lem.has_fallback = 0;  lem.nconflict = 0;  lem.name = lem.include = lem.arg = lem.tokentype = lem.start = 0;  lem.vartype = 0;  lem.stacksize = 0;  lem.error = lem.overflow = lem.failure = lem.accept = lem.tokendest =     lem.tokenprefix = lem.outname = lem.extracode = 0;  lem.vardest = 0;  lem.tablesize = 0;  Symbol_new("$");  lem.errsym = Symbol_new("error");  /* Parse the input file */  Parse(&lem);  if( lem.errorcnt ) exit(lem.errorcnt);  if( lem.rule==0 ){    fprintf(stderr,"Empty grammar.\n");    exit(1);  }  /* Count and index the symbols of the grammar */  lem.nsymbol = Symbol_count();  Symbol_new("{default}");  lem.symbols = Symbol_arrayof();  for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i;  qsort(lem.symbols,lem.nsymbol+1,sizeof(struct symbol*),        (int(*)())Symbolcmpp);  for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i;  for(i=1; isupper(lem.symbols[i]->name[0]); i++);  lem.nterminal = i;  /* Generate a reprint of the grammar, if requested on the command line */  if( rpflag ){    Reprint(&lem);  }else{    /* Initialize the size for all follow and first sets */    SetSize(lem.nterminal);    /* Find the precedence for every production rule (that has one) */    FindRulePrecedences(&lem);    /* Compute the lambda-nonterminals and the first-sets for every    ** nonterminal */    FindFirstSets(&lem);    /* Compute all LR(0) states.  Also record follow-set propagation    ** links so that the follow-set can be computed later */    lem.nstate = 0;    FindStates(&lem);    lem.sorted = State_arrayof();    /* Tie up loose ends on the propagation links */    FindLinks(&lem);    /* Compute the follow set of every reducible configuration */    FindFollowSets(&lem);    /* Compute the action tables */    FindActions(&lem);    /* Compress the action tables */    if( compress==0 ) CompressTables(&lem);    /* Generate a report of the parser generated.  (the "y.output" file) */    if( !quiet ) ReportOutput(&lem);    /* Generate the source code for the parser */    ReportTable(&lem, mhflag);    /* Produce a header file for use by the scanner.  (This step is    ** omitted if the "-m" option is used because makeheaders will    ** generate the file for us.) */    if( !mhflag ) ReportHeader(&lem);  }  if( statistics ){    printf("Parser statistics: %d terminals, %d nonterminals, %d rules\n",      lem.nterminal, lem.nsymbol - lem.nterminal, lem.nrule);    printf("                   %d states, %d parser table entries, %d conflicts\n",      lem.nstate, lem.tablesize, lem.nconflict);  }  if( lem.nconflict ){    fprintf(stderr,"%d parsing conflicts.\n",lem.nconflict);  }  exit(lem.errorcnt + lem.nconflict);  return (lem.errorcnt + lem.nconflict);}/******************** From the file "msort.c" *******************************//*** A generic merge-sort program.**** USAGE:** Let "ptr" be a pointer to some structure which is at the head of** a null-terminated list.  Then to sort the list call:****     ptr = msort(ptr,&(ptr->next),cmpfnc);**** In the above, "cmpfnc" is a pointer to a function which compares** two instances of the structure and returns an integer, as in** strcmp.  The second argument is a pointer to the pointer to the** second element of the linked list.  This address is used to compute** the offset to the "next" field within the structure.  The offset to** the "next" field must be constant for all structures in the list.**** The function returns a new pointer which is the head of the list** after sorting.**** ALGORITHM:** Merge-sort.*//*** Return a pointer to the next structure in the linked list.*/#define NEXT(A) (*(char**)(((unsigned long)A)+offset))/*** Inputs:**   a:       A sorted, null-terminated linked list.  (May be null).**   b:       A sorted, null-terminated linked list.  (May be null).**   cmp:     A pointer to the comparison function.**   offset:  Offset in the structure to the "next" field.**** Return Value:**   A pointer to the head of a sorted list containing the elements**   of both a and b.**** Side effects:**   The "next" pointers for elements in the lists a and b are**   changed.*/static char *merge(a,b,cmp,offset)char *a;char *b;int (*cmp)();int offset;{  char *ptr, *head;  if( a==0 ){    head = b;  }else if( b==0 ){    head = a;  }else{    if( (*cmp)(a,b)<0 ){      ptr = a;      a = NEXT(a);    }else{      ptr = b;      b = NEXT(b);    }    head = ptr;    while( a && b ){      if( (*cmp)(a,b)<0 ){        NEXT(ptr) = a;        ptr = a;        a = NEXT(a);      }else{        NEXT(ptr) = b;        ptr = b;        b = NEXT(b);      }    }    if( a ) NEXT(ptr) = a;    else    NEXT(ptr) = b;  }  return head;}/*** Inputs:**   list:      Pointer to a singly-linked list of structures.**   next:      Pointer to pointer to the second element of the list.**   cmp:       A comparison function.**** Return Value:**   A pointer to the head of a sorted list containing the elements**   orginally in list.**** Side effects:**   The "next" pointers for elements in list are changed.*/#define LISTSIZE 30char *msort(list,next,cmp)char *list;char **next;int (*cmp)();{  unsigned long offset;  char *ep;  char *set[LISTSIZE];  int i;  offset = (unsigned long)next - (unsigned long)list;  for(i=0; i<LISTSIZE; i++) set[i] = 0;  while( list ){    ep = list;    list = NEXT(list);    NEXT(ep) = 0;    for(i=0; i<LISTSIZE-1 && set[i]!=0; i++){      ep = merge(ep,set[i],cmp,offset);      set[i] = 0;    }    set[i] = ep;  }  ep = 0;  for(i=0; i<LISTSIZE; i++) if( set[i] ) ep = merge(ep,set[i],cmp,offset);  return ep;}/************************ From the file "option.c" **************************/static char **argv;static struct s_options *op;static FILE *errstream;#define ISOPT(X) ((X)[0]=='-'||(X)[0]=='+'||strchr((X),'=')!=0)/*** Print the command line with a carrot pointing to the k-th character** of the n-th field.*/static void errline(n,k,err)int n;int k;FILE *err;{  int spcnt, i;  spcnt = 0;  if( argv[0] ) fprintf(err,"%s",argv[0]);  spcnt = strlen(argv[0]) + 1;  for(i=1; i<n && argv[i]; i++){    fprintf(err," %s",argv[i]);    spcnt += strlen(argv[i]+1);  }  spcnt += k;  for(; argv[i]; i++) fprintf(err," %s",argv[i]);  if( spcnt<20 ){    fprintf(err,"\n%*s^-- here\n",spcnt,"");  }else{    fprintf(err,"\n%*shere --^\n",spcnt-7,"");  }}/*** Return the index of the N-th non-switch argument.  Return -1** if N is out of range.*/static int argindex(n)int n;{  int i;  int dashdash = 0;  if( argv!=0 && *argv!=0 ){    for(i=1; argv[i]; i++){      if( dashdash || !ISOPT(argv[i]) ){        if( n==0 ) return i;        n--;      }      if( strcmp(argv[i],"--")==0 ) dashdash = 1;    }  }  return -1;}static char emsg[] = "Command line syntax error: ";/*** Process a flag command line argument.*/static int handleflags(i,err)int i;FILE *err;{  int v;  int errcnt = 0;  int j;  for(j=0; op[j].label; j++){    if( strcmp(&argv[i][1],op[j].label)==0 ) break;  }  v = argv[i][0]=='-' ? 1 : 0;  if( op[j].label==0 ){    if( err ){      fprintf(err,"%sundefined option.\n",emsg);      errline(i,1,err);    }    errcnt++;  }else if( op[j].type==OPT_FLAG ){    *((int*)op[j].arg) = v;  }else if( op[j].type==OPT_FFLAG ){    (*(void(*)())(op[j].arg))(v);  }else{    if( err ){      fprintf(err,"%smissing argument on switch.\n",emsg);      errline(i,1,err);    }    errcnt++;  }  return errcnt;}/*** Process a command line switch which has an argument.*/static int handleswitch(i,err)int i;FILE *err;{  int lv = 0;  double dv = 0.0;  char *sv = 0, *end;  char *cp;  int j;  int errcnt = 0;  cp = strchr(argv[i],'=');  *cp = 0;  for(j=0; op[j].label; j++){    if( strcmp(argv[i],op[j].label)==0 ) break;  }  *cp = '=';  if( op[j].label==0 ){    if( err ){      fprintf(err,"%sundefined option.\n",emsg);      errline(i,0,err);    }    errcnt++;  }else{    cp++;    switch( op[j].type ){      case OPT_FLAG:      case OPT_FFLAG:        if( err ){          fprintf(err,"%soption requires an argument.\n",emsg);          errline(i,0,err);        }        errcnt++;        break;      case OPT_DBL:      case OPT_FDBL:        dv = strtod(cp,&end);        if( *end ){          if( err ){            fprintf(err,"%sillegal character in floating-point argument.\n",emsg);            errline(i,((unsigned long)end)-(unsigned long)argv[i],err);          }          errcnt++;        }        break;      case OPT_INT:      case OPT_FINT:        lv = strtol(cp,&end,0);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级一区二区| 亚洲最色的网站| 国产一区二区调教| 一区二区成人在线| 色综合 综合色| 亚洲成人在线观看视频| 欧美军同video69gay| 日韩福利视频导航| www一区二区| 成人永久aaa| 亚洲精品美国一| 91精品国产综合久久久久久久| 美女www一区二区| 久久久精品欧美丰满| 97久久久精品综合88久久| 亚洲一区二区精品3399| 欧美一二三区在线观看| 国产999精品久久久久久 | 日本一区二区三区视频视频| 成人深夜福利app| 亚洲自拍偷拍网站| 精品久久久久久最新网址| 丁香一区二区三区| 亚洲国产毛片aaaaa无费看| 日韩三级精品电影久久久| 国产一区二区三区国产| 亚洲品质自拍视频| 欧美日韩在线免费视频| 国产剧情av麻豆香蕉精品| 亚洲色图一区二区| 精品国产不卡一区二区三区| av爱爱亚洲一区| 青青青爽久久午夜综合久久午夜| 国产蜜臀av在线一区二区三区| 欧美三级电影在线观看| 国产麻豆成人传媒免费观看| 洋洋成人永久网站入口| 久久免费国产精品| 欧美日韩三级在线| 成人污污视频在线观看| 麻豆精品蜜桃视频网站| 亚洲国产视频直播| 国产精品色眯眯| 欧美一级一级性生活免费录像| av成人老司机| 国产精品亚洲视频| 免费人成网站在线观看欧美高清| 日韩码欧中文字| 久久综合成人精品亚洲另类欧美| 欧美日韩美少妇| 9人人澡人人爽人人精品| 美女视频黄久久| 丝袜美腿亚洲一区二区图片| 亚洲欧洲美洲综合色网| 久久网站热最新地址| 欧美日韩国产免费| 91麻豆精品视频| 成人性生交大片免费看中文网站| 人人狠狠综合久久亚洲| 亚洲综合久久av| 专区另类欧美日韩| 中文字幕精品在线不卡| 久久网站最新地址| 日韩美女主播在线视频一区二区三区| 一本久道中文字幕精品亚洲嫩| 国产经典欧美精品| 精品一区二区免费看| 人人狠狠综合久久亚洲| 日韩中文字幕区一区有砖一区| 一区二区三区在线免费观看| 国产精品久久久久久久久免费丝袜| 久久久综合视频| 久久久久久久免费视频了| 精品久久久久av影院| 日韩视频免费观看高清完整版| 欧美精品三级日韩久久| 欧美日本精品一区二区三区| 欧美精品日韩综合在线| 91精品国模一区二区三区| 欧美日韩国产首页| 欧美精品在线观看播放| 欧美精品三级在线观看| 欧美一级免费大片| 日韩视频在线永久播放| 日韩精品一区二| 久久色视频免费观看| 国产亚洲美州欧州综合国| 久久久久国产精品麻豆| 国产清纯白嫩初高生在线观看91| 久久久久99精品国产片| 中文字幕高清一区| 国产精品久久久久久福利一牛影视| 中文av一区二区| 亚洲色图另类专区| 亚洲成av人综合在线观看| 日韩精品乱码免费| 经典三级在线一区| 国产999精品久久久久久| 97久久精品人人做人人爽| 欧美在线色视频| 国产成人精品aa毛片| 成人激情小说网站| 日本道精品一区二区三区| 欧美日本精品一区二区三区| 精品卡一卡二卡三卡四在线| 国产色婷婷亚洲99精品小说| 日韩毛片精品高清免费| 日日夜夜精品视频免费| 国产精品综合视频| 91污片在线观看| 91精品免费在线观看| 久久久久久久免费视频了| 一区二区三区免费看视频| 日韩精品一二三区| 国产精品 日产精品 欧美精品| 日本道在线观看一区二区| 欧美一区二区成人6969| 中文字幕一区在线观看| 午夜久久久久久久久久一区二区| 国产在线视频一区二区| 91视频你懂的| 91精品国产高清一区二区三区蜜臀 | 国产高清一区日本| 91丨porny丨首页| 欧美成人欧美edvon| 综合激情成人伊人| 精一区二区三区| 91麻豆免费看| 久久精品欧美一区二区三区麻豆| 亚洲一二三四区| 高清av一区二区| 日韩一级成人av| 亚洲一级二级三级在线免费观看| 国产成人综合网站| 91精品国产欧美一区二区| 亚洲乱码一区二区三区在线观看| 久久精品二区亚洲w码| 欧美在线观看视频一区二区| 久久久噜噜噜久噜久久综合| 日韩成人av影视| 91黄色激情网站| 国产精品天干天干在观线| 久草精品在线观看| 欧美精品自拍偷拍| 夜夜嗨av一区二区三区中文字幕| 国产成人在线视频网站| 日韩视频123| 五月婷婷久久丁香| 色视频成人在线观看免| 国产精品无码永久免费888| 美女免费视频一区二区| 欧美日韩精品是欧美日韩精品| 国产精品家庭影院| 成人综合婷婷国产精品久久蜜臀| 欧美一激情一区二区三区| 亚洲国产中文字幕| 91官网在线免费观看| 自拍偷拍欧美精品| 99v久久综合狠狠综合久久| 欧美极品美女视频| 国产在线播精品第三| 日韩精品在线一区| 日本三级亚洲精品| 欧美一区二区视频在线观看2020 | 毛片一区二区三区| 6080yy午夜一二三区久久| 亚洲一区二区四区蜜桃| 欧美体内she精高潮| 亚洲精品videosex极品| 色婷婷久久久综合中文字幕| ...av二区三区久久精品| 99精品在线观看视频| 国产精品久久看| 99精品视频在线播放观看| 综合欧美一区二区三区| 色婷婷精品大视频在线蜜桃视频| 综合久久一区二区三区| 色域天天综合网| 视频一区欧美日韩| 日韩视频一区二区| 国产精品夜夜爽| 亚洲欧美一区二区久久| 欧美午夜一区二区三区免费大片| 午夜久久久久久久久| 51精品国自产在线| 黄页网站大全一区二区| 国产亚洲综合性久久久影院| 成人国产精品免费观看动漫| 亚洲三级电影全部在线观看高清| 在线精品亚洲一区二区不卡| 亚洲不卡一区二区三区| 日韩精品最新网址| 东方aⅴ免费观看久久av| 一区二区三区免费| 精品少妇一区二区三区视频免付费 | 亚洲成人一二三| 日韩欧美中文字幕精品| 国产电影一区二区三区| 亚洲一线二线三线视频| 91精品国产欧美日韩|