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

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

?? closure.c

?? 這是一個軟件水平資格考試中使用的CASL匯編語言的編譯器,實現文件中包括一個編譯器,一個虛擬機,一個類似于Debug的調試器.
?? C
字號:
/* Subroutines for bison
   Copyright (C) 1984, 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 modify
it under the terms of the GNU General Public License as published by
the 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 of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Bison; see the file COPYING.  If not, write to
the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */


/* subroutines of file LR0.c.

Entry points:

  closure (items, n)

Given a vector of item numbers items, of length n,
set up ruleset and itemset to indicate what rules could be run
and which items could be accepted when those items are the active ones.

ruleset contains a bit for each rule.  closure sets the bits
for all rules which could potentially describe the next input to be read.

itemset is a vector of item numbers; itemsetend points to just beyond the end
 of the part of it that is significant.
closure places there the indices of all items which represent units of
input that could arrive next.

  initialize_closure (n)

Allocates the itemset and ruleset vectors,
and precomputes useful data so that closure can be called.
n is the number of elements to allocate for itemset.

  finalize_closure ()

Frees itemset, ruleset and internal data.

*/

#include <stdio.h>
#include "system.h"
#include "machine.h"
#include "new.h"
#include "gram.h"


extern short **derives;
extern char **tags;

void set_fderives();
void set_firsts();

extern void RTC();

short *itemset;
short *itemsetend;
static unsigned *ruleset;

/* internal data.  See comments before set_fderives and set_firsts.  */
static unsigned *fderives;
static unsigned *firsts;

/* number of words required to hold a bit for each rule */
static int rulesetsize;

/* number of words required to hold a bit for each variable */
static int varsetsize;


void
initialize_closure(n)
int n;
{
  itemset = NEW2(n, short);

  rulesetsize = WORDSIZE(nrules + 1);
  ruleset = NEW2(rulesetsize, unsigned);

  set_fderives();
}



/* set fderives to an nvars by nrules matrix of bits
   indicating which rules can help derive the beginning of the data
   for each nonterminal.  For example, if symbol 5 can be derived as
   the sequence of symbols 8 3 20, and one of the rules for deriving
   symbol 8 is rule 4, then the [5 - ntokens, 4] bit in fderives is set.  */
void
set_fderives()
{
  register unsigned *rrow;
  register unsigned *vrow;
  register int j;
  register unsigned cword;
  register short *rp;
  register int b;

  int ruleno;
  int i;

  fderives = NEW2(nvars * rulesetsize, unsigned) - ntokens * rulesetsize;

  set_firsts();

  rrow = fderives + ntokens * rulesetsize;

  for (i = ntokens; i < nsyms; i++)
    {
      vrow = firsts + ((i - ntokens) * varsetsize);
      cword = *vrow++;
      b = 0;
      for (j = ntokens; j < nsyms; j++)
	{
	  if (cword & (1 << b))
	    {
	      rp = derives[j];
	      while ((ruleno = *rp++) > 0)
		{
		  SETBIT(rrow, ruleno);
		}
	    }

	  b++;
	  if (b >= BITS_PER_WORD && j + 1 < nsyms)
	    {
	      cword = *vrow++;
	      b = 0;
	    }
	}

      rrow += rulesetsize;
    }

#ifdef	DEBUG
  print_fderives();
#endif

  FREE(firsts);
}



/* set firsts to be an nvars by nvars bit matrix indicating which items
   can represent the beginning of the input corresponding to which other items.
   For example, if some rule expands symbol 5 into the sequence of symbols 8 3 20,
   the symbol 8 can be the beginning of the data for symbol 5,
   so the bit [8 - ntokens, 5 - ntokens] in firsts is set. */
void
set_firsts()
{
  register unsigned *row;
/*   register int done; JF unused */
  register int symbol;
  register short *sp;
  register int rowsize;

  int i;

  varsetsize = rowsize = WORDSIZE(nvars);

  firsts = NEW2(nvars * rowsize, unsigned);

  row = firsts;
  for (i = ntokens; i < nsyms; i++)
    {
      sp = derives[i];
      while (*sp >= 0)
	{
	  symbol = ritem[rrhs[*sp++]];
	  if (ISVAR(symbol))
	    {
	      symbol -= ntokens;
	      SETBIT(row, symbol);
	    }
	}

      row += rowsize;
    }

  RTC(firsts, nvars);

#ifdef	DEBUG
  print_firsts();
#endif
}


void
closure(core, n)
short *core;
int n;
{
  register int ruleno;
  register unsigned word;
  register short *csp;
  register unsigned *dsp;
  register unsigned *rsp;

  short *csend;
  unsigned *rsend;
  int symbol;
  int itemno;

  rsp = ruleset;
  rsend = ruleset + rulesetsize;
  csend = core + n;

  if (n == 0)
    {
      dsp = fderives + start_symbol * rulesetsize;
      while (rsp < rsend)
	*rsp++ = *dsp++;
    }
  else
    {
      while (rsp < rsend)
	*rsp++ = 0;

      csp = core;
      while (csp < csend)
	{
	  symbol = ritem[*csp++];
	  if (ISVAR(symbol))
	    {
	      dsp = fderives + symbol * rulesetsize;
	      rsp = ruleset;
	      while (rsp < rsend)
		*rsp++ |= *dsp++;
	    }
	}
    }

  ruleno = 0;
  itemsetend = itemset;
  csp = core;
  rsp = ruleset;
  while (rsp < rsend)
    {
      word = *rsp++;
      if (word == 0)
	{
	  ruleno += BITS_PER_WORD;
	}
      else
	{
	  register int b;

	  for (b = 0; b < BITS_PER_WORD; b++)
	    {
	      if (word & (1 << b))
		{
		  itemno = rrhs[ruleno];
		  while (csp < csend && *csp < itemno)
		    *itemsetend++ = *csp++;
		  *itemsetend++ = itemno;
		}

	      ruleno++;
	    }
	}
    }

  while (csp < csend)
    *itemsetend++ = *csp++;

#ifdef	DEBUG
  print_closure(n);
#endif
}


void
finalize_closure()
{
  FREE(itemset);
  FREE(ruleset);
  FREE(fderives + ntokens * rulesetsize);
}



#ifdef	DEBUG

print_closure(n)
int n;
{
  register short *isp;

  printf("\n\nn = %d\n\n", n);
  for (isp = itemset; isp < itemsetend; isp++)
    printf("   %d\n", *isp);
}



print_firsts()
{
  register int i;
  register int j;
  register unsigned *rowp;

  printf("\n\n\nFIRSTS\n\n");

  for (i = ntokens; i < nsyms; i++)
    {
      printf("\n\n%s firsts\n\n", tags[i]);

      rowp = firsts + ((i - ntokens) * varsetsize);

      for (j = 0; j < nvars; j++)
	if (BITISSET (rowp, j))
	  printf("   %s\n", tags[j + ntokens]);
    }
}



print_fderives()
{
  register int i;
  register int j;
  register unsigned *rp;

  printf("\n\n\nFDERIVES\n");

  for (i = ntokens; i < nsyms; i++)
    {
      printf("\n\n%s derives\n\n", tags[i]);
      rp = fderives + i * rulesetsize;

      for (j = 0; j <= nrules; j++)
	if (BITISSET (rp, j))
	  printf("   %d\n", j);
    }

  fflush(stdout);
}

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三级| 久久综合九色综合97_久久久| 欧美欧美欧美欧美首页| 欧美mv日韩mv| 亚洲视频一二区| 奇米色777欧美一区二区| a美女胸又www黄视频久久| 日韩一区二区精品| 免费在线观看不卡| 久久精品国产77777蜜臀| 麻豆传媒一区二区三区| 久久草av在线| 国产精品 欧美精品| 国产999精品久久久久久绿帽| 国产成人免费高清| 91美女片黄在线观看91美女| 91黄色在线观看| 欧美日韩一区二区在线视频| 5566中文字幕一区二区电影| 日韩免费高清电影| 日本一区二区三级电影在线观看| 国产精品久久国产精麻豆99网站| 亚洲男人的天堂av| 日本不卡视频一二三区| 国产原创一区二区三区| 91同城在线观看| 欧美伦理视频网站| 久久久久高清精品| 一区二区三区四区不卡在线 | 香蕉成人啪国产精品视频综合网| 亚瑟在线精品视频| 国产综合一区二区| 日本黄色一区二区| 欧美一级日韩不卡播放免费| 中文字幕精品一区二区精品绿巨人 | 亚洲成人福利片| 激情久久久久久久久久久久久久久久| 高清免费成人av| 欧美精品一级二级| 欧美激情综合五月色丁香小说| 亚洲综合一二三区| 国产高清成人在线| 51精品视频一区二区三区| 国产午夜精品福利| 日韩精品一卡二卡三卡四卡无卡| 国产精品自拍av| 欧美乱熟臀69xxxxxx| 国产精品久久三| 九色porny丨国产精品| 在线观看欧美黄色| 中文字幕第一页久久| 秋霞影院一区二区| 欧美一a一片一级一片| 中文幕一区二区三区久久蜜桃| 青娱乐精品在线视频| 色播五月激情综合网| 国产精品青草久久| 国产伦精品一区二区三区视频青涩| 欧美午夜电影一区| 亚洲日本在线天堂| 福利一区在线观看| 26uuu精品一区二区三区四区在线| 亚洲高清免费在线| 97久久精品人人做人人爽50路| 久久综合九色综合欧美亚洲| 日韩电影在线观看电影| 欧美日韩综合在线免费观看| 亚洲天堂av老司机| 99视频国产精品| 国产精品久久久久婷婷二区次| 国产综合色产在线精品| 日韩精品在线一区二区| 日韩激情一二三区| 91精品国产综合久久久久久久| 亚洲一区二区三区不卡国产欧美| 97久久精品人人爽人人爽蜜臀| 国产欧美日韩激情| 成人免费视频播放| 中文字幕中文乱码欧美一区二区| 国产福利精品一区二区| 久久久久久久综合色一本| 国产精品综合一区二区| 欧美激情资源网| 国产成人在线色| 成人欧美一区二区三区1314| av高清不卡在线| 亚洲欧美国产毛片在线| 在线观看精品一区| 视频一区在线播放| 欧美videos大乳护士334| 激情综合色综合久久| 国产欧美一区二区三区沐欲| 成人动漫一区二区在线| 一区二区三区国产| 91麻豆精品国产91久久久久| 开心九九激情九九欧美日韩精美视频电影| 日韩三级电影网址| 东方欧美亚洲色图在线| 亚洲男同性视频| 日韩小视频在线观看专区| 国产精品系列在线播放| 亚洲视频一二区| 欧美一区二区三区爱爱| 国产精品一二三四区| 亚洲欧洲制服丝袜| 91麻豆精品国产91久久久 | 日韩精品中文字幕在线一区| 99久久精品国产毛片| 国产91丝袜在线18| 国产成人在线看| 国产九色精品成人porny| 国产在线精品一区二区三区不卡| 麻豆91精品视频| 美女任你摸久久| 久久精工是国产品牌吗| 免费高清在线一区| 久久国产精品色婷婷| 另类调教123区| 理论电影国产精品| 国产一区二区剧情av在线| 欧美一区二区三区在线视频| 欧美日韩国产精品成人| 欧美伦理电影网| 日韩视频一区二区三区| 日韩精品自拍偷拍| 2023国产精品自拍| 国产午夜一区二区三区| 日本一区二区高清| 亚洲日本免费电影| 一区二区三区欧美日韩| 亚洲成人av福利| 日韩精品电影在线观看| 九九视频精品免费| 国产精品18久久久久| 丁香婷婷综合激情五月色| aaa欧美日韩| 欧美日韩国产大片| 精品久久国产老人久久综合| 国产欧美日韩视频在线观看| 中文字幕一区二区三区四区不卡 | 亚洲美女免费视频| 久久久99精品久久| 日韩欧美激情四射| 宅男在线国产精品| 欧美精品 日韩| 欧美精品 国产精品| 欧美自拍偷拍午夜视频| www.成人网.com| 成人性色生活片免费看爆迷你毛片| 美女被吸乳得到大胸91| 老色鬼精品视频在线观看播放| 五月激情综合婷婷| 亚洲成人免费影院| 一级精品视频在线观看宜春院| 亚洲欧美区自拍先锋| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产三级精品三级| 欧美国产视频在线| 国产精品国产自产拍在线| 国产精品女人毛片| 自拍偷自拍亚洲精品播放| 国产精品久久久久久久久图文区| 国产精品毛片无遮挡高清| 中文字幕欧美一区| 伊人性伊人情综合网| 一区二区成人在线| 日韩在线一区二区| 久久电影网站中文字幕| 国产一区二区福利| 成人av先锋影音| 91激情五月电影| 久久福利资源站| 成人听书哪个软件好| 欧美一卡二卡三卡| 亚洲一区二区三区中文字幕 | 一区二区三区不卡视频 | 成人午夜av在线| 欧美大片拔萝卜| 亚洲成人一区在线| 91在线一区二区| 国产色爱av资源综合区| 在线观看av不卡| 日韩毛片一二三区| 高清成人在线观看| 久久久精品蜜桃| 久久精品国产色蜜蜜麻豆| 精品视频在线看| 亚洲三级理论片| 91在线一区二区| 最好看的中文字幕久久| 不卡av电影在线播放| 欧美激情一区二区三区蜜桃视频| 国产在线精品视频| 精品人在线二区三区| 麻豆视频观看网址久久| 日韩亚洲欧美综合| 久久99精品国产麻豆婷婷洗澡| 欧美一区午夜视频在线观看| 日日夜夜精品视频天天综合网| 欧美日韩一区二区三区不卡|