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

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

?? dstep.c

?? 對軟件進行可達性測試的軟件
?? C
字號:
/***** spin: dstep.c *****//* Copyright (c) 1989-2003 by Lucent Technologies, Bell Laboratories.     *//* All Rights Reserved.  This software is for educational purposes only.  *//* No guarantee whatsoever is expressed or implied by the distribution of *//* this code.  Permission is given to distribute this code provided that  *//* this introductory message is not removed and no monies are exchanged.  *//* Software written by Gerard J. Holzmann.  For tool documentation see:   *//*             http://spinroot.com/                                       *//* Send all bug-reports and/or questions to: bugs@spinroot.com            */#include "spin.h"#include "y.tab.h"#define MAXDSTEP	1024	/* was 512 */char	*NextLab[64];int	Level=0, GenCode=0, IsGuard=0, TestOnly=0;static int	Tj=0, Jt=0, LastGoto=0;static int	Tojump[MAXDSTEP], Jumpto[MAXDSTEP], Special[MAXDSTEP];static void	putCode(FILE *, Element *, Element *, Element *, int);extern int	Pid, claimnr, separate, OkBreak;static voidSourced(int n, int special){	int i;	for (i = 0; i < Tj; i++)		if (Tojump[i] == n)			return;	if (Tj >= MAXDSTEP)		fatal("d_step sequence too long", (char *)0);	Special[Tj] = special;	Tojump[Tj++] = n;}static voidDested(int n){	int i;	for (i = 0; i < Tj; i++)		if (Tojump[i] == n)			return;	for (i = 0; i < Jt; i++)		if (Jumpto[i] == n)			return;	if (Jt >= MAXDSTEP)		fatal("d_step sequence too long", (char *)0);	Jumpto[Jt++] = n;	LastGoto = 1;}static voidMopup(FILE *fd){	int i, j;	for (i = 0; i < Jt; i++)	{	for (j = 0; j < Tj; j++)			if (Tojump[j] == Jumpto[i])				break;		if (j == Tj)		{	char buf[16];			if (Jumpto[i] == OkBreak)			{	if (!LastGoto)				fprintf(fd, "S_%.3d_0:	/* break-dest */\n",					OkBreak);			} else {				sprintf(buf, "S_%.3d_0", Jumpto[i]);				non_fatal("goto %s breaks from d_step seq", buf);	}	}	}	for (j = 0; j < Tj; j++)	{	for (i = 0; i < Jt; i++)			if (Tojump[j] == Jumpto[i])				break;#ifdef DEBUG		if (i == Jt && !Special[i])			fprintf(fd, "\t\t/* no goto's to S_%.3d_0 */\n",			Tojump[j]);#endif	}	for (j = i = 0; j < Tj; j++)		if (Special[j])		{	Tojump[i] = Tojump[j];			Special[i] = 2;			if (i >= MAXDSTEP)			fatal("cannot happen (dstep.c)", (char *)0);			i++;		}	Tj = i;	/* keep only the global exit-labels */	Jt = 0;}static intFirstTime(int n){	int i;	for (i = 0; i < Tj; i++)		if (Tojump[i] == n)			return (Special[i] <= 1);	return 1;}static voidillegal(Element *e, char *str){	printf("illegal operator in 'd_step:' '");	comment(stdout, e->n, 0);	printf("'\n");	fatal("'%s'", str);}static voidfilterbad(Element *e){	switch (e->n->ntyp) {	case ASSERT:	case PRINT:	case 'c':		/* run cannot be completely undone		 * with sv_save-sv_restor		 */		if (any_oper(e->n->lft, RUN))			illegal(e, "run operator in d_step");		/* remote refs inside d_step sequences		 * would be okay, but they cannot always		 * be interpreted by the simulator the		 * same as by the verifier (e.g., for an		 * error trail)		 */		if (any_oper(e->n->lft, 'p'))			illegal(e, "remote reference in d_step");		break;	case '@':		illegal(e, "process termination");		break;	case D_STEP:		illegal(e, "nested d_step sequence");		break;	case ATOMIC:		illegal(e, "nested atomic sequence");		break;	default:		break;	}}static intCollectGuards(FILE *fd, Element *e, int inh){	SeqList *h; Element *ee;	for (h = e->sub; h; h = h->nxt)	{	ee = huntstart(h->this->frst);		filterbad(ee);		switch (ee->n->ntyp) {		case NON_ATOMIC:			inh += CollectGuards(fd, ee->n->sl->this->frst, inh);			break;		case  IF:			inh += CollectGuards(fd, ee, inh);			break;		case '.':			if (ee->nxt->n->ntyp == DO)				inh += CollectGuards(fd, ee->nxt, inh);			break;		case ELSE:			if (inh++ > 0) fprintf(fd, " || ");/* 4.2.5 */		if (Pid != claimnr)				fprintf(fd, "(boq == -1 /* else */)");			else				fprintf(fd, "(1 /* else */)");			break;		case 'R':			if (inh++ > 0) fprintf(fd, " || ");			fprintf(fd, "("); TestOnly=1;			putstmnt(fd, ee->n, ee->seqno);			fprintf(fd, ")"); TestOnly=0;			break;		case 'r':			if (inh++ > 0) fprintf(fd, " || ");			fprintf(fd, "("); TestOnly=1;			putstmnt(fd, ee->n, ee->seqno);			fprintf(fd, ")"); TestOnly=0;			break;		case 's':			if (inh++ > 0) fprintf(fd, " || ");			fprintf(fd, "("); TestOnly=1;/* 4.2.1 */		if (Pid != claimnr) fprintf(fd, "(boq == -1) && ");			putstmnt(fd, ee->n, ee->seqno);			fprintf(fd, ")"); TestOnly=0;			break;		case 'c':			if (inh++ > 0) fprintf(fd, " || ");			fprintf(fd, "("); TestOnly=1;			if (Pid != claimnr)				fprintf(fd, "(boq == -1 && ");			putstmnt(fd, ee->n->lft, e->seqno);			if (Pid != claimnr)				fprintf(fd, ")");			fprintf(fd, ")"); TestOnly=0;			break;	}	}	return inh;}intputcode(FILE *fd, Sequence *s, Element *nxt, int justguards, int ln, int seqno){	int isg=0; char buf[64];	NextLab[0] = "continue";	filterbad(s->frst);	switch (s->frst->n->ntyp) {	case UNLESS:		non_fatal("'unless' inside d_step - ignored", (char *) 0);		return putcode(fd, s->frst->n->sl->this, nxt, 0, ln, seqno);	case NON_ATOMIC:		(void) putcode(fd, s->frst->n->sl->this, ZE, 1, ln, seqno);		break;	case IF:		fprintf(fd, "if (!(");		if (!CollectGuards(fd, s->frst, 0))	/* what about boq? */			fprintf(fd, "1");		fprintf(fd, "))\n\t\t\tcontinue;");		isg = 1;		break;	case '.':		if (s->frst->nxt->n->ntyp == DO)		{	fprintf(fd, "if (!(");			if (!CollectGuards(fd, s->frst->nxt, 0))				fprintf(fd, "1");			fprintf(fd, "))\n\t\t\tcontinue;");			isg = 1;		}		break;	case 'R': /* <- can't really happen (it's part of a 'c') */		fprintf(fd, "if (!("); TestOnly=1;		putstmnt(fd, s->frst->n, s->frst->seqno);		fprintf(fd, "))\n\t\t\tcontinue;"); TestOnly=0;		break;	case 'r':		fprintf(fd, "if (!("); TestOnly=1;		putstmnt(fd, s->frst->n, s->frst->seqno);		fprintf(fd, "))\n\t\t\tcontinue;"); TestOnly=0;		break;	case 's':		fprintf(fd, "if (");#if 1/* 4.2.1 */	if (Pid != claimnr) fprintf(fd, "(boq != -1) || ");#endif		fprintf(fd, "!("); TestOnly=1;		putstmnt(fd, s->frst->n, s->frst->seqno);		fprintf(fd, "))\n\t\t\tcontinue;"); TestOnly=0;		break;	case 'c':		fprintf(fd, "if (!(");		if (Pid != claimnr) fprintf(fd, "boq == -1 && ");		TestOnly=1;		putstmnt(fd, s->frst->n->lft, s->frst->seqno);		fprintf(fd, "))\n\t\t\tcontinue;"); TestOnly=0;		break;	case ELSE:		fprintf(fd, "if (boq != -1 || (");		if (separate != 2) fprintf(fd, "trpt->");		fprintf(fd, "o_pm&1))\n\t\t\tcontinue;");		break;	case ASGN:	/* new 3.0.8 */		fprintf(fd, "IfNotBlocked");		break;	}	if (justguards) return 0;	fprintf(fd, "\n\t\tsv_save();\n\t\t");#if 1	fprintf(fd, "reached[%d][%d] = 1;\n\t\t", Pid, seqno);	fprintf(fd, "reached[%d][t->st] = 1;\n\t\t", Pid);	/* true next state */	fprintf(fd, "reached[%d][tt] = 1;\n", Pid);		/* true current state */#endif	sprintf(buf, "Uerror(\"block in d_step seq, line %d\")", ln);	NextLab[0] = buf;	putCode(fd, s->frst, s->extent, nxt, isg);	if (nxt)	{	extern Symbol *Fname;		extern int lineno;		if (FirstTime(nxt->Seqno)		&& (!(nxt->status & DONE2) || !(nxt->status & D_ATOM)))		{	fprintf(fd, "S_%.3d_0: /* 1 */\n", nxt->Seqno);			nxt->status |= DONE2;			LastGoto = 0;		}		Sourced(nxt->Seqno, 1);		lineno = ln;		Fname = nxt->n->fn;			Mopup(fd);	}	unskip(s->frst->seqno);	return LastGoto;}static voidputCode(FILE *fd, Element *f, Element *last, Element *next, int isguard){	Element *e, *N;	SeqList *h; int i;	char NextOpt[64];	static int bno = 0;	for (e = f; e; e = e->nxt)	{	if (e->status & DONE2)			continue;		e->status |= DONE2;		if (!(e->status & D_ATOM))		{	if (!LastGoto)			{	fprintf(fd, "\t\tgoto S_%.3d_0;\n",					e->Seqno);				Dested(e->Seqno);			}			break;		}		fprintf(fd, "S_%.3d_0: /* 2 */\n", e->Seqno);		LastGoto = 0;		Sourced(e->Seqno, 0);		if (!e->sub)		{	filterbad(e);			switch (e->n->ntyp) {			case NON_ATOMIC:				h = e->n->sl;				putCode(fd, h->this->frst,					h->this->extent, e->nxt, 0);				break;			case BREAK:				if (LastGoto) break;				if (e->nxt)				{	i = target( huntele(e->nxt,						e->status, -1))->Seqno;					fprintf(fd, "\t\tgoto S_%.3d_0;	", i);					fprintf(fd, "/* 'break' */\n");					Dested(i);				} else				{	if (next)					{	fprintf(fd, "\t\tgoto S_%.3d_0;",							next->Seqno);						fprintf(fd, " /* NEXT */\n");						Dested(next->Seqno);					} else					fatal("cannot interpret d_step", 0);				}				break;			case GOTO:				if (LastGoto) break;				i = huntele( get_lab(e->n,1),					e->status, -1)->Seqno;				fprintf(fd, "\t\tgoto S_%.3d_0;	", i);				fprintf(fd, "/* 'goto' */\n");				Dested(i);				break;			case '.':				if (LastGoto) break;				if (e->nxt && (e->nxt->status & DONE2))				{	i = e->nxt?e->nxt->Seqno:0;					fprintf(fd, "\t\tgoto S_%.3d_0;", i);					fprintf(fd, " /* '.' */\n");					Dested(i);				}				break;			default:				putskip(e->seqno);				GenCode = 1; IsGuard = isguard;				fprintf(fd, "\t\t");				putstmnt(fd, e->n, e->seqno);				fprintf(fd, ";\n");				GenCode = IsGuard = isguard = LastGoto = 0;				break;			}			i = e->nxt?e->nxt->Seqno:0;			if (e->nxt && e->nxt->status & DONE2 && !LastGoto)			{	fprintf(fd, "\t\tgoto S_%.3d_0; ", i);				fprintf(fd, "/* ';' */\n");				Dested(i);				break;			}		} else		{	for (h = e->sub, i=1; h; h = h->nxt, i++)			{	sprintf(NextOpt, "goto S_%.3d_%d",					e->Seqno, i);				NextLab[++Level] = NextOpt;				N = (e->n && e->n->ntyp == DO) ? e : e->nxt;				putCode(fd, h->this->frst,					h->this->extent, N, 1);				Level--;				fprintf(fd, "%s: /* 3 */\n", &NextOpt[5]);				LastGoto = 0;			}			if (!LastGoto)			{	fprintf(fd, "\t\tUerror(\"blocking sel ");				fprintf(fd, "in d_step (nr.%d, near line %d)\");\n",				bno++, (e->n)?e->n->ln:0);				LastGoto = 0;			}		}		if (e == last)		{	if (!LastGoto && next)			{	fprintf(fd, "\t\tgoto S_%.3d_0;\n",					next->Seqno);				Dested(next->Seqno);			}			break;	}	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久综合精品| 国产日韩欧美综合在线| 欧美日产在线观看| 欧美丝袜丝交足nylons| 欧美最新大片在线看| 在线亚洲免费视频| 91精品国产综合久久福利| 日韩一级黄色片| 久久精品视频在线免费观看 | 亚洲bt欧美bt精品777| 亚洲自拍偷拍图区| 美女www一区二区| 国产精品自拍在线| 97精品国产露脸对白| 制服.丝袜.亚洲.中文.综合| 成人黄色小视频| 狠狠久久亚洲欧美| 色婷婷精品久久二区二区蜜臂av | 成人黄页毛片网站| 欧美日韩一区二区电影| 久久毛片高清国产| 亚洲五码中文字幕| 国产91丝袜在线播放| 欧美三片在线视频观看| 久久久.com| 免费成人性网站| 99精品国产99久久久久久白柏| 7777精品伊人久久久大香线蕉完整版| 久久久久国产精品人| 午夜国产精品一区| 91在线免费视频观看| 日本一区二区三区电影| 麻豆免费精品视频| 欧美久久久久中文字幕| 亚洲免费观看高清在线观看| 久久机这里只有精品| 3d动漫精品啪啪一区二区竹菊 | 一区二区三区日韩在线观看| 国产成人午夜片在线观看高清观看| 欧美妇女性影城| 亚洲欧美韩国综合色| 成人黄动漫网站免费app| 精品国产凹凸成av人网站| 日韩av午夜在线观看| 欧美精品v国产精品v日韩精品| 玉米视频成人免费看| 欧美性大战久久| 亚洲在线成人精品| 日本精品视频一区二区三区| 亚洲视频狠狠干| 91黄色免费网站| 亚洲成av人片一区二区| 欧美日韩视频在线第一区 | 97成人超碰视| 一区二区三区日韩欧美| 欧美色中文字幕| 男男gaygay亚洲| 久久亚区不卡日本| 国产高清不卡一区二区| 日韩理论在线观看| 欧美三级电影在线观看| 蜜臀av在线播放一区二区三区| 亚洲大片免费看| 一级女性全黄久久生活片免费| 欧美在线一区二区三区| 美女网站在线免费欧美精品| 国产性色一区二区| 91激情五月电影| 久久国产夜色精品鲁鲁99| 久久久国产午夜精品| 色综合久久中文字幕| 日韩高清在线观看| 成人免费一区二区三区在线观看 | 国产精品传媒入口麻豆| 一本久道久久综合中文字幕| 亚洲bt欧美bt精品| 中文字幕一区二区三中文字幕| 在线精品国精品国产尤物884a| 日本不卡一区二区三区高清视频| 欧美激情在线看| 欧美一区二区三区爱爱| av一二三不卡影片| 麻豆91精品91久久久的内涵| 亚洲欧美另类小说视频| 91精品国产91热久久久做人人| 欧美激情一区二区三区四区 | 色综合欧美在线视频区| 久久精品久久精品| 亚洲一卡二卡三卡四卡| 亚洲人成网站精品片在线观看| 日韩视频123| 欧美一三区三区四区免费在线看| 99精品桃花视频在线观看| 国产精品一区二区果冻传媒| 性久久久久久久久久久久| 一区二区三区中文字幕电影| 欧美国产视频在线| 中文字幕欧美激情一区| 久久婷婷久久一区二区三区| 欧美成人性战久久| 日韩一区二区电影| 日韩三级伦理片妻子的秘密按摩| 在线一区二区三区| 欧美在线观看一区| 欧美性xxxxx极品少妇| 欧美日韩中字一区| 日韩一级黄色片| 精品福利在线导航| 欧美国产精品久久| 亚洲免费在线播放| 亚洲国产成人va在线观看天堂 | 国产精品资源站在线| 久久福利视频一区二区| 国产美女一区二区| 成人sese在线| 在线亚洲精品福利网址导航| 欧美一区二视频| 久久综合九色综合欧美就去吻| 国产三级精品三级在线专区| 亚洲欧美在线aaa| 午夜不卡在线视频| 国产成人在线视频网址| 91蜜桃在线观看| 91精品国产综合久久久久久| 久久久亚洲国产美女国产盗摄 | 成人永久aaa| 欧美日韩美少妇| 久久久一区二区三区捆绑**| 亚洲三级电影网站| 久久国产精品露脸对白| 91碰在线视频| 久久综合色一综合色88| 亚洲成人免费视频| 国产91精品一区二区麻豆网站| 欧美日韩一级片在线观看| 2023国产精品| 日韩高清国产一区在线| 91年精品国产| 久久久www成人免费无遮挡大片| 中文字幕一区二区在线播放| 一区二区三区在线观看网站| 蜜臂av日日欢夜夜爽一区| 91首页免费视频| 国产精品乱子久久久久| 国产乱一区二区| 日韩欧美的一区| 天堂蜜桃91精品| 精品视频色一区| 一区二区三区日韩在线观看| 成人精品免费看| 国产婷婷一区二区| 国产一区999| 久久亚洲综合色一区二区三区| 麻豆精品一二三| 日韩视频中午一区| 激情小说欧美图片| 丁香六月综合激情| 国产欧美在线观看一区| 国产精品一线二线三线精华| www久久久久| 国产91丝袜在线播放九色| 中文字幕高清一区| 99国产精品久久久久久久久久 | 日韩国产欧美一区二区三区| 欧美日韩国产区一| 麻豆一区二区三| 久久精品视频一区二区| 国产精品1024久久| 亚洲欧洲av另类| 欧美日韩一本到| 日本强好片久久久久久aaa| 精品国产免费视频| 成人国产精品视频| 欧美电影影音先锋| 国产精品一二三区在线| |精品福利一区二区三区| 欧美伦理影视网| 国产电影精品久久禁18| 一区二区三区中文字幕在线观看| 欧美精品自拍偷拍| 国产福利一区二区三区视频| 亚洲男人的天堂一区二区| 69p69国产精品| 91在线小视频| 久草这里只有精品视频| 亚洲精品自拍动漫在线| 日韩精品专区在线影院重磅| 成人福利视频在线| 久久爱www久久做| 亚洲高清在线精品| 国产精品免费视频观看| 欧美不卡视频一区| 色成人在线视频| 懂色av一区二区三区免费看| 日本亚洲三级在线| 一区二区三区在线观看欧美| 精品国产91亚洲一区二区三区婷婷 | 日韩一区二区在线看片| 欧美日韩一区中文字幕| 99精品国产91久久久久久|