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

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

?? lalr.c

?? Berkeley的YACC詞法/語法分析器
?? C
字號:
#include "defs.h"typedef  struct shorts    {      struct shorts *next;      short value;    }  shorts;int tokensetsize;short *lookaheads;short *LAruleno;unsigned *LA;short *accessing_symbol;core **state_table;shifts **shift_table;reductions **reduction_table;short *goto_map;short *from_state;short *to_state;short **transpose();static int infinity;static int maxrhs;static int ngotos;static unsigned *F;static short **includes;static shorts **lookback;static short **R;static short *INDEX;static short *VERTICES;static int top;lalr(){    tokensetsize = WORDSIZE(ntokens);    set_state_table();    set_accessing_symbol();    set_shift_table();    set_reduction_table();    set_maxrhs();    initialize_LA();    set_goto_map();    initialize_F();    build_relations();    compute_FOLLOWS();    compute_lookaheads();}set_state_table(){    register core *sp;    state_table = NEW2(nstates, core *);    for (sp = first_state; sp; sp = sp->next)	state_table[sp->number] = sp;}set_accessing_symbol(){    register core *sp;    accessing_symbol = NEW2(nstates, short);    for (sp = first_state; sp; sp = sp->next)	accessing_symbol[sp->number] = sp->accessing_symbol;}set_shift_table(){    register shifts *sp;    shift_table = NEW2(nstates, shifts *);    for (sp = first_shift; sp; sp = sp->next)	shift_table[sp->number] = sp;}set_reduction_table(){    register reductions *rp;    reduction_table = NEW2(nstates, reductions *);    for (rp = first_reduction; rp; rp = rp->next)	reduction_table[rp->number] = rp;}set_maxrhs(){  register short *itemp;  register short *item_end;  register int length;  register int max;  length = 0;  max = 0;  item_end = ritem + nitems;  for (itemp = ritem; itemp < item_end; itemp++)    {      if (*itemp >= 0)	{	  length++;	}      else	{	  if (length > max) max = length;	  length = 0;	}    }  maxrhs = max;}initialize_LA(){  register int i, j, k;  register reductions *rp;  lookaheads = NEW2(nstates + 1, short);  k = 0;  for (i = 0; i < nstates; i++)    {      lookaheads[i] = k;      rp = reduction_table[i];      if (rp)	k += rp->nreds;    }  lookaheads[nstates] = k;  LA = NEW2(k * tokensetsize, unsigned);  LAruleno = NEW2(k, short);  lookback = NEW2(k, shorts *);  k = 0;  for (i = 0; i < nstates; i++)    {      rp = reduction_table[i];      if (rp)	{	  for (j = 0; j < rp->nreds; j++)	    {	      LAruleno[k] = rp->rules[j];	      k++;	    }	}    }}set_goto_map(){  register shifts *sp;  register int i;  register int symbol;  register int k;  register short *temp_map;  register int state2;  register int state1;  goto_map = NEW2(nvars + 1, short) - ntokens;  temp_map = NEW2(nvars + 1, short) - ntokens;  ngotos = 0;  for (sp = first_shift; sp; sp = sp->next)    {      for (i = sp->nshifts - 1; i >= 0; i--)	{	  symbol = accessing_symbol[sp->shift[i]];	  if (ISTOKEN(symbol)) break;	  if (ngotos == MAXSHORT)	    fatal("too many gotos");	  ngotos++;	  goto_map[symbol]++;        }    }  k = 0;  for (i = ntokens; i < nsyms; i++)    {      temp_map[i] = k;      k += goto_map[i];    }  for (i = ntokens; i < nsyms; i++)    goto_map[i] = temp_map[i];  goto_map[nsyms] = ngotos;  temp_map[nsyms] = ngotos;  from_state = NEW2(ngotos, short);  to_state = NEW2(ngotos, short);  for (sp = first_shift; sp; sp = sp->next)    {      state1 = sp->number;      for (i = sp->nshifts - 1; i >= 0; i--)	{	  state2 = sp->shift[i];	  symbol = accessing_symbol[state2];	  if (ISTOKEN(symbol)) break;	  k = temp_map[symbol]++;	  from_state[k] = state1;	  to_state[k] = state2;	}    }  FREE(temp_map + ntokens);}/*  Map_goto maps a state/symbol pair into its numeric representation.	*/intmap_goto(state, symbol)int state;int symbol;{    register int high;    register int low;    register int middle;    register int s;    low = goto_map[symbol];    high = goto_map[symbol + 1];    for (;;)    {	assert(low <= high);	middle = (low + high) >> 1;	s = from_state[middle];	if (s == state)	    return (middle);	else if (s < state)	    low = middle + 1;	else	    high = middle - 1;    }}initialize_F(){  register int i;  register int j;  register int k;  register shifts *sp;  register short *edge;  register unsigned *rowp;  register short *rp;  register short **reads;  register int nedges;  register int stateno;  register int symbol;  register int nwords;  nwords = ngotos * tokensetsize;  F = NEW2(nwords, unsigned);  reads = NEW2(ngotos, short *);  edge = NEW2(ngotos + 1, short);  nedges = 0;  rowp = F;  for (i = 0; i < ngotos; i++)    {      stateno = to_state[i];      sp = shift_table[stateno];      if (sp)	{	  k = sp->nshifts;	  for (j = 0; j < k; j++)	    {	      symbol = accessing_symbol[sp->shift[j]];	      if (ISVAR(symbol))		break;	      SETBIT(rowp, symbol);	    }	  for (; j < k; j++)	    {	      symbol = accessing_symbol[sp->shift[j]];	      if (nullable[symbol])		edge[nedges++] = map_goto(stateno, symbol);	    }		  if (nedges)	    {	      reads[i] = rp = NEW2(nedges + 1, short);	      for (j = 0; j < nedges; j++)		rp[j] = edge[j];	      rp[nedges] = -1;	      nedges = 0;	    }	}      rowp += tokensetsize;    }  SETBIT(F, 0);  digraph(reads);  for (i = 0; i < ngotos; i++)    {      if (reads[i])	FREE(reads[i]);    }  FREE(reads);  FREE(edge);}build_relations(){  register int i;  register int j;  register int k;  register short *rulep;  register short *rp;  register shifts *sp;  register int length;  register int nedges;  register int done;  register int state1;  register int stateno;  register int symbol1;  register int symbol2;  register short *shortp;  register short *edge;  register short *states;  register short **new_includes;  includes = NEW2(ngotos, short *);  edge = NEW2(ngotos + 1, short);  states = NEW2(maxrhs + 1, short);  for (i = 0; i < ngotos; i++)    {      nedges = 0;      state1 = from_state[i];      symbol1 = accessing_symbol[to_state[i]];      for (rulep = derives[symbol1]; *rulep >= 0; rulep++)	{	  length = 1;	  states[0] = state1;	  stateno = state1;	  for (rp = ritem + rrhs[*rulep]; *rp >= 0; rp++)	    {	      symbol2 = *rp;	      sp = shift_table[stateno];	      k = sp->nshifts;	      for (j = 0; j < k; j++)		{		  stateno = sp->shift[j];		  if (accessing_symbol[stateno] == symbol2) break;		}	      states[length++] = stateno;	    }	  add_lookback_edge(stateno, *rulep, i);	  length--;	  done = 0;	  while (!done)	    {	      done = 1;	      rp--;	      if (ISVAR(*rp))		{		  stateno = states[--length];		  edge[nedges++] = map_goto(stateno, *rp);		  if (nullable[*rp] && length > 0) done = 0;		}	    }	}      if (nedges)	{	  includes[i] = shortp = NEW2(nedges + 1, short);	  for (j = 0; j < nedges; j++)	    shortp[j] = edge[j];	  shortp[nedges] = -1;	}    }  new_includes = transpose(includes, ngotos);  for (i = 0; i < ngotos; i++)    if (includes[i])      FREE(includes[i]);  FREE(includes);  includes = new_includes;  FREE(edge);  FREE(states);}add_lookback_edge(stateno, ruleno, gotono)int stateno, ruleno, gotono;{    register int i, k;    register int found;    register shorts *sp;    i = lookaheads[stateno];    k = lookaheads[stateno + 1];    found = 0;    while (!found && i < k)    {	if (LAruleno[i] == ruleno)	    found = 1;	else	    ++i;    }    assert(found);    sp = NEW(shorts);    sp->next = lookback[i];    sp->value = gotono;    lookback[i] = sp;}short **transpose(R, n)short **R;int n;{  register short **new_R;  register short **temp_R;  register short *nedges;  register short *sp;  register int i;  register int k;  nedges = NEW2(n, short);  for (i = 0; i < n; i++)    {      sp = R[i];      if (sp)	{	  while (*sp >= 0)	    nedges[*sp++]++;	}    }  new_R = NEW2(n, short *);  temp_R = NEW2(n, short *);  for (i = 0; i < n; i++)    {      k = nedges[i];      if (k > 0)	{	  sp = NEW2(k + 1, short);	  new_R[i] = sp;	  temp_R[i] = sp;	  sp[k] = -1;	}    }  FREE(nedges);  for (i = 0; i < n; i++)    {      sp = R[i];      if (sp)	{	  while (*sp >= 0)	    *temp_R[*sp++]++ = i;	}    }  FREE(temp_R);  return (new_R);}compute_FOLLOWS(){  digraph(includes);}compute_lookaheads(){  register int i, n;  register unsigned *fp1, *fp2, *fp3;  register shorts *sp, *next;  register unsigned *rowp;  rowp = LA;  n = lookaheads[nstates];  for (i = 0; i < n; i++)    {      fp3 = rowp + tokensetsize;      for (sp = lookback[i]; sp; sp = sp->next)	{	  fp1 = rowp;	  fp2 = F + tokensetsize * sp->value;	  while (fp1 < fp3)	    *fp1++ |= *fp2++;	}      rowp = fp3;    }  for (i = 0; i < n; i++)    for (sp = lookback[i]; sp; sp = next)      {        next = sp->next;        FREE(sp);      }  FREE(lookback);  FREE(F);}digraph(relation)short **relation;{  register int i;  infinity = ngotos + 2;  INDEX = NEW2(ngotos + 1, short);  VERTICES = NEW2(ngotos + 1, short);  top = 0;  R = relation;  for (i = 0; i < ngotos; i++)    INDEX[i] = 0;  for (i = 0; i < ngotos; i++)    {      if (INDEX[i] == 0 && R[i])	traverse(i);    }  FREE(INDEX);  FREE(VERTICES);}traverse(i)register int i;{  register unsigned *fp1;  register unsigned *fp2;  register unsigned *fp3;  register int j;  register short *rp;  int height;  unsigned *base;  VERTICES[++top] = i;  INDEX[i] = height = top;  base = F + i * tokensetsize;  fp3 = base + tokensetsize;  rp = R[i];  if (rp)    {      while ((j = *rp++) >= 0)	{	  if (INDEX[j] == 0)	    traverse(j);	  if (INDEX[i] > INDEX[j])	    INDEX[i] = INDEX[j];	  fp1 = base;	  fp2 = F + j * tokensetsize;	  while (fp1 < fp3)	    *fp1++ |= *fp2++;	}    }  if (INDEX[i] == height)    {      for (;;)	{	  j = VERTICES[top--];	  INDEX[j] = infinity;	  if (i == j)	    break;	  fp1 = base;	  fp2 = F + j * tokensetsize;	  while (fp1 < fp3)	    *fp2++ = *fp1++;	}    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品久久99久久久久| 色狠狠一区二区| 亚洲女性喷水在线观看一区| 精品国产乱码久久久久久老虎| 在线免费观看不卡av| 色综合久久99| 色噜噜久久综合| 国产精品欧美一级免费| 精品欧美久久久| 久久久综合网站| 国产亚洲欧洲一区高清在线观看| 精品国产精品网麻豆系列| 国产精品你懂的在线欣赏| 免播放器亚洲一区| 精品亚洲国产成人av制服丝袜 | 中文字幕欧美三区| 久久色中文字幕| 亚洲日本在线看| 亚洲精品菠萝久久久久久久| 亚洲成av人**亚洲成av**| 香蕉久久夜色精品国产使用方法| 波多野结衣中文一区| 狠狠色综合播放一区二区| 福利一区福利二区| 色综合网色综合| 欧美视频一区二区三区在线观看| 51精品国自产在线| 2024国产精品| 蜜桃视频在线观看一区| 国产不卡在线视频| 久久综合狠狠综合久久激情| 美女视频黄免费的久久 | 欧美天天综合网| 亚洲一卡二卡三卡四卡无卡久久| 喷水一区二区三区| 欧美一区二区视频网站| 国产精品久久久久久久第一福利 | 国产欧美一区二区三区沐欲| 亚洲一区在线观看网站| 一本到一区二区三区| 国产精品乱码人人做人人爱| 成人深夜视频在线观看| 91精品国产91久久综合桃花| 亚洲成人免费视| 欧美高清视频在线高清观看mv色露露十八 | 蜜桃久久久久久| 精品剧情在线观看| 国产原创一区二区三区| 欧美午夜片在线看| 日精品一区二区| 国产成人av自拍| 欧洲色大大久久| 日本在线不卡一区| 一本久久精品一区二区| 亚洲一区二区三区国产| 欧美日韩黄色一区二区| 日韩一区欧美一区| 精品一区二区av| 国产欧美一区在线| 91久久香蕉国产日韩欧美9色| 亚洲电影视频在线| ww久久中文字幕| 91丝袜美女网| 国产精品久久久久桃色tv| 色综合久久久久久久久| 日韩精品一二三四| 国产午夜精品美女毛片视频| 日本久久一区二区三区| 日本vs亚洲vs韩国一区三区| 久久精品一二三| 波多野结衣欧美| 麻豆国产一区二区| 综合欧美一区二区三区| 91精品国产手机| 成人爱爱电影网址| 婷婷成人激情在线网| 欧美少妇xxx| 国产精品888| 国产欧美日韩视频在线观看| 色噜噜狠狠成人中文综合| 久久99在线观看| 久久久久9999亚洲精品| 欧美性大战xxxxx久久久| 国产一区二区91| 天堂资源在线中文精品| 中文字幕免费观看一区| 欧美日韩国产一级二级| av成人免费在线| 国产一区二区三区观看| 午夜视频在线观看一区二区| 国产精品无遮挡| 久久奇米777| 69堂成人精品免费视频| 91美女片黄在线| 国产99一区视频免费| 麻豆成人av在线| 国产久卡久卡久卡久卡视频精品| 亚洲h在线观看| 一区二区三区四区精品在线视频| 91久久精品国产91性色tv| 国产成人福利片| 国产美女在线精品| 青青草97国产精品免费观看无弹窗版| 国产精品久久久久9999吃药| 久久精品免费在线观看| 精品福利av导航| 欧美va天堂va视频va在线| 制服丝袜国产精品| 欧美喷水一区二区| 欧美日韩国产一级| 欧美在线短视频| 91精品办公室少妇高潮对白| 91色在线porny| 色婷婷精品大在线视频| 成人av网在线| 91丨九色丨蝌蚪丨老版| 99国产精品国产精品毛片| 不卡视频一二三| 91在线云播放| 在线观看成人免费视频| 在线区一区二视频| 欧美日韩精品一区二区三区四区 | 国产成人免费在线视频| 国产一区久久久| 激情文学综合插| 国产激情偷乱视频一区二区三区| 国产一区二区91| 99视频超级精品| 色爱区综合激月婷婷| 欧美视频完全免费看| 91麻豆精品国产91久久久资源速度 | 色婷婷综合久色| 在线看不卡av| 8x福利精品第一导航| 欧美一区二区三区四区在线观看 | 26uuu国产日韩综合| 久久久久久久久久电影| 欧美国产激情一区二区三区蜜月| 国产精品毛片高清在线完整版 | 污片在线观看一区二区| 蜜臀av性久久久久蜜臀aⅴ| 麻豆专区一区二区三区四区五区| 久久国产剧场电影| 成人免费看的视频| 在线观看91精品国产入口| 日韩一级片在线播放| 色琪琪一区二区三区亚洲区| 欧美日韩国产成人在线免费| 欧美电影精品一区二区| 欧美丝袜丝交足nylons图片| 日韩欧美国产一二三区| 欧美经典一区二区| 亚洲国产三级在线| 亚洲一区二区影院| 激情亚洲综合在线| 91亚洲精华国产精华精华液| 91精品国产综合久久小美女| 裸体歌舞表演一区二区| 国产成人无遮挡在线视频| 欧美性xxxxxxxx| 国产丝袜在线精品| 亚洲午夜影视影院在线观看| 国产美女娇喘av呻吟久久| 97久久精品人人澡人人爽| 日韩精品一区二区三区蜜臀| 亚洲三级视频在线观看| 狠狠色丁香久久婷婷综| 欧美在线免费观看亚洲| 久久精品视频免费观看| 日韩在线卡一卡二| 99国产精品久久久| 久久久高清一区二区三区| 亚洲123区在线观看| 99在线视频精品| wwwwww.欧美系列| 一区二区免费在线播放| 国产一区二区三区蝌蚪| 678五月天丁香亚洲综合网| 国产嫩草影院久久久久| 久久www免费人成看片高清| 欧美中文字幕一二三区视频| 国产色产综合色产在线视频| 毛片不卡一区二区| 精品视频在线免费看| 91.com视频| 亚洲gay无套男同| 日本道精品一区二区三区| 国产精品理论在线观看| 国产乱子轮精品视频| 欧美一区二区啪啪| 亚洲一卡二卡三卡四卡| 91麻豆国产自产在线观看| 欧美高清在线视频| 国产精品一二三区在线| 精品美女一区二区| 激情图区综合网| 国产视频亚洲色图| 国产高清不卡一区| 中文字幕欧美日本乱码一线二线 | 色乱码一区二区三区88|