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

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

?? lr0.c

?? 生成C++詞法/語法分析的GNU語法分析器
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Generate the nondeterministic finite state machine for bison,   Copyright (C) 1984, 1986, 1989 Free Software Foundation, Inc.This file is part of Bison, the GNU Compiler Compiler.Bison is free software; you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation; either version 2, or (at your option)any later version.Bison is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See theGNU General Public License for more details.You should have received a copy of the GNU General Public Licensealong with Bison; see the file COPYING.  If not, write tothe Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  *//* See comments in state.h for the data structures that represent it.   The entry point is generate_states.  */#include <stdio.h>#include "system.h"#include "machine.h"#include "new.h"#include "gram.h"#include "state.h"extern char *nullable;extern short *itemset;extern short *itemsetend;int nstates;int final_state;core *first_state;shifts *first_shift;reductions *first_reduction;int get_state();core *new_state();void new_itemsets();void append_states();void initialize_states();void save_shifts();void save_reductions();void augment_automaton();void insert_start_shift();extern void initialize_closure();extern void closure();extern void finalize_closure();extern void toomany();static core *this_state;static core *last_state;static shifts *last_shift;static reductions *last_reduction;static int nshifts;static short *shift_symbol;static short *redset;static short *shiftset;static short **kernel_base;static short **kernel_end;static short *kernel_items;/* hash table for states, to recognize equivalent ones.  */#define	STATE_TABLE_SIZE	1009static core **state_table;voidallocate_itemsets(){  register short *itemp;  register int symbol;  register int i;  register int count;  register short *symbol_count;  count = 0;  symbol_count = NEW2(nsyms, short);  itemp = ritem;  symbol = *itemp++;  while (symbol)    {      if (symbol > 0)	{	  count++;	  symbol_count[symbol]++;	}      symbol = *itemp++;    }  /* see comments before new_itemsets.  All the vectors of items     live inside kernel_items.  The number of active items after     some symbol cannot be more than the number of times that symbol     appears as an item, which is symbol_count[symbol].     We allocate that much space for each symbol.  */  kernel_base = NEW2(nsyms, short *);  kernel_items = NEW2(count, short);  count = 0;  for (i = 0; i < nsyms; i++)    {      kernel_base[i] = kernel_items + count;      count += symbol_count[i];    }  shift_symbol = symbol_count;  kernel_end = NEW2(nsyms, short *);}voidallocate_storage(){  allocate_itemsets();  shiftset = NEW2(nsyms, short);  redset = NEW2(nrules + 1, short);  state_table = NEW2(STATE_TABLE_SIZE, core *);}voidfree_storage(){  FREE(shift_symbol);  FREE(redset);  FREE(shiftset);  FREE(kernel_base);  FREE(kernel_end);  FREE(kernel_items);  FREE(state_table);}/* compute the nondeterministic finite state machine (see state.h for details)from the grammar.  */voidgenerate_states(){  allocate_storage();  initialize_closure(nitems);  initialize_states();  while (this_state)    {      /* Set up ruleset and itemset for the transitions out of this state.         ruleset gets a 1 bit for each rule that could reduce now.	 itemset gets a vector of all the items that could be accepted next.  */      closure(this_state->items, this_state->nitems);      /* record the reductions allowed out of this state */      save_reductions();      /* find the itemsets of the states that shifts can reach */      new_itemsets();      /* find or create the core structures for those states */      append_states();      /* create the shifts structures for the shifts to those states,         now that the state numbers transitioning to are known */      if (nshifts > 0)        save_shifts();      /* states are queued when they are created; process them all */      this_state = this_state->next;    }  /* discard various storage */  finalize_closure();  free_storage();  /* set up initial and final states as parser wants them */  augment_automaton();}/* Find which symbols can be shifted in the current state,   and for each one record which items would be active after that shift.   Uses the contents of itemset.   shift_symbol is set to a vector of the symbols that can be shifted.   For each symbol in the grammar, kernel_base[symbol] points to   a vector of item numbers activated if that symbol is shifted,   and kernel_end[symbol] points after the end of that vector.  */voidnew_itemsets(){  register int i;  register int shiftcount;  register short *isp;  register short *ksp;  register int symbol;#ifdef	TRACE  fprintf(stderr, "Entering new_itemsets\n");#endif  for (i = 0; i < nsyms; i++)    kernel_end[i] = NULL;  shiftcount = 0;  isp = itemset;  while (isp < itemsetend)    {      i = *isp++;      symbol = ritem[i];      if (symbol > 0)	{          ksp = kernel_end[symbol];          if (!ksp)	    {	      shift_symbol[shiftcount++] = symbol;	      ksp = kernel_base[symbol];	    }          *ksp++ = i + 1;          kernel_end[symbol] = ksp;	}    }  nshifts = shiftcount;}/* Use the information computed by new_itemsets to find the state numbers   reached by each shift transition from the current state.   shiftset is set up as a vector of state numbers of those states.  */voidappend_states(){  register int i;  register int j;  register int symbol;#ifdef	TRACE  fprintf(stderr, "Entering append_states\n");#endif  /* first sort shift_symbol into increasing order */  for (i = 1; i < nshifts; i++)    {      symbol = shift_symbol[i];      j = i;      while (j > 0 && shift_symbol[j - 1] > symbol)	{	  shift_symbol[j] = shift_symbol[j - 1];	  j--;	}      shift_symbol[j] = symbol;    }  for (i = 0; i < nshifts; i++)    {      symbol = shift_symbol[i];      shiftset[i] = get_state(symbol);    }}/* find the state number for the state we would get to(from the current state) by shifting symbol.Create a new state if no equivalent one exists already.Used by append_states  */intget_state(symbol)int symbol;{  register int key;  register short *isp1;  register short *isp2;  register short *iend;  register core *sp;  register int found;  int n;#ifdef	TRACE  fprintf(stderr, "Entering get_state, symbol = %d\n", symbol);#endif  isp1 = kernel_base[symbol];  iend = kernel_end[symbol];  n = iend - isp1;  /* add up the target state's active item numbers to get a hash key */  key = 0;  while (isp1 < iend)    key += *isp1++;  key = key % STATE_TABLE_SIZE;  sp = state_table[key];  if (sp)    {      found = 0;      while (!found)	{	  if (sp->nitems == n)	    {	      found = 1;	      isp1 = kernel_base[symbol];	      isp2 = sp->items;	      while (found && isp1 < iend)		{		  if (*isp1++ != *isp2++)		    found = 0;		}	    }	  if (!found)	    {	      if (sp->link)		{		  sp = sp->link;		}	      else   /* bucket exhausted and no match */		{		  sp = sp->link = new_state(symbol);		  found = 1;		}	    }	}    }  else      /* bucket is empty */    {      state_table[key] = sp = new_state(symbol);    }  return (sp->number);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
97se亚洲国产综合自在线不卡| 色猫猫国产区一区二在线视频| 99久久精品99国产精品| 欧美精三区欧美精三区| 中文字幕欧美日韩一区| 全国精品久久少妇| 91浏览器在线视频| 久久精品亚洲乱码伦伦中文| 五月婷婷久久丁香| 97久久人人超碰| 久久久精品欧美丰满| 污片在线观看一区二区| 成人国产精品免费观看动漫| 日韩欧美久久久| 日日夜夜精品免费视频| 色偷偷久久一区二区三区| 久久精品亚洲乱码伦伦中文 | 日韩一区二区三区电影在线观看| 欧美成人国产一区二区| 亚洲制服欧美中文字幕中文字幕| 丁香网亚洲国际| 久久久久久久网| 精品在线观看视频| 日韩亚洲欧美在线| 日韩精品一二三四| 欧美精选一区二区| 日本v片在线高清不卡在线观看| 一本一本久久a久久精品综合麻豆| 久久久久97国产精华液好用吗| 日韩av一区二区在线影视| 欧美日韩精品二区第二页| 亚洲一二三四在线| 欧美三级电影网| 亚洲成人综合网站| 欧美伦理电影网| 日日夜夜精品视频免费| 777亚洲妇女| 六月婷婷色综合| 精品成人佐山爱一区二区| 精品系列免费在线观看| 久久久久久一级片| 国产主播一区二区三区| 久久久久久久久久电影| 成人高清免费在线播放| 中文字幕在线观看不卡视频| 色综合中文字幕国产| 中文字幕中文乱码欧美一区二区 | 青青国产91久久久久久| 欧美一区二区三区在| 久久国产福利国产秒拍| 26uuu另类欧美亚洲曰本| 国产成人在线观看| 成人免费小视频| 欧美日韩激情一区二区三区| 七七婷婷婷婷精品国产| 精品噜噜噜噜久久久久久久久试看| 久久99精品久久久久久久久久久久| 久久久www免费人成精品| 成人av在线电影| 亚洲成av人在线观看| 日韩精品中文字幕一区二区三区| 国产精品自拍网站| 亚洲欧美乱综合| 日韩欧美一二三四区| 成人午夜激情影院| 亚洲18影院在线观看| 26uuu国产日韩综合| 91首页免费视频| 理论电影国产精品| 综合婷婷亚洲小说| 日韩欧美123| 成人avav在线| 久久不见久久见免费视频1| 国产精品第13页| 欧美成人精品福利| 色婷婷久久综合| 国产精品99久久久| 肉丝袜脚交视频一区二区| 欧美激情一区二区| 91精品黄色片免费大全| 成人在线视频一区| 美女任你摸久久| 一区二区激情视频| 久久久久97国产精华液好用吗| 欧美三级在线播放| 99久久精品国产导航| 精彩视频一区二区| 亚洲综合色自拍一区| 欧美国产成人精品| 日韩欧美国产综合一区| 欧美中文字幕一区二区三区| 国产精品一区二区三区四区| 天天色 色综合| 亚洲激情成人在线| 国产精品久久99| 久久亚洲精华国产精华液 | 成人动漫中文字幕| 久久精品国产999大香线蕉| 亚洲精品免费视频| 国产精品久久久一本精品| 久久亚洲一区二区三区明星换脸| 欧美日韩一区二区三区视频| 97久久超碰精品国产| 粉嫩蜜臀av国产精品网站| 久久精品国产久精国产| 日本成人超碰在线观看| 亚洲综合免费观看高清完整版 | 高清免费成人av| 国产伦精品一区二区三区在线观看| 日韩高清在线一区| 午夜在线电影亚洲一区| 亚洲国产一区二区三区 | 日韩国产欧美在线观看| 亚洲成人动漫精品| 亚洲bdsm女犯bdsm网站| 亚洲成av人片一区二区| 亚洲精品免费一二三区| 一区二区三区在线视频免费观看| 亚洲视频免费在线| 亚洲女与黑人做爰| 亚洲一二三区不卡| 天天亚洲美女在线视频| 日韩av一级片| 精品在线一区二区三区| 国产精品一区二区黑丝| 国产ts人妖一区二区| 成人高清av在线| 91视频免费播放| 欧美视频中文字幕| 91精品久久久久久久久99蜜臂| 欧美一区二区三区婷婷月色| 日韩欧美一区电影| 国产日韩精品一区| 亚洲欧美日韩国产综合| 亚洲电影一区二区| 麻豆精品一区二区| 波多野结衣中文一区| 在线观看亚洲精品视频| 欧美二区在线观看| 久久久久久久久蜜桃| 亚洲欧洲精品天堂一级| 亚洲国产精品一区二区久久| 久久国内精品自在自线400部| 久久99国产精品麻豆| 成人av在线一区二区三区| 一本大道久久精品懂色aⅴ| 538prom精品视频线放| 国产精品毛片无遮挡高清| 亚洲黄色av一区| 日本中文字幕一区二区视频 | 精品国产乱码久久久久久图片 | 精品播放一区二区| 日韩美女久久久| 蜜桃视频第一区免费观看| 国产白丝网站精品污在线入口| 91丝袜美腿高跟国产极品老师 | 日本韩国欧美在线| 久久婷婷国产综合国色天香| 亚洲欧美国产77777| 麻豆免费看一区二区三区| aaa欧美日韩| 日韩欧美电影一区| 亚洲激情在线激情| 国产一区二区三区观看| 欧美日韩在线三级| 中文字幕av资源一区| 奇米影视一区二区三区小说| aaa亚洲精品一二三区| 精品奇米国产一区二区三区| 亚洲激情五月婷婷| 高清在线成人网| 精品成人一区二区三区四区| 亚洲精品综合在线| 国产99精品在线观看| 日韩欧美自拍偷拍| 亚洲夂夂婷婷色拍ww47| av电影在线观看不卡| 欧美成人艳星乳罩| 日韩黄色免费电影| 欧美性猛交xxxx乱大交退制版| 欧美激情一区三区| 韩国女主播成人在线| 91精品免费在线观看| 亚洲国产三级在线| 91理论电影在线观看| 亚洲欧洲国产专区| 成人性生交大片| 久久久www成人免费毛片麻豆| 肉丝袜脚交视频一区二区| 欧美性猛交一区二区三区精品| 亚洲欧美在线观看| www.性欧美| 亚洲色图在线视频| 91丨porny丨蝌蚪视频| 亚洲天堂精品在线观看| 9l国产精品久久久久麻豆| 欧美极品少妇xxxxⅹ高跟鞋| 成人在线综合网| 亚洲视频在线一区二区| 成人免费视频国产在线观看|