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

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

?? tl_trans.c

?? 對軟件進行可達性測試的軟件
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***** tl_spin: tl_trans.c *****//* Copyright (c) 1995-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            *//* Based on the translation algorithm by Gerth, Peled, Vardi, and Wolper, *//* presented at the PSTV Conference, held in 1995, Warsaw, Poland 1995.   */#include "tl.h"extern FILE	*tl_out;extern int	tl_errs, tl_verbose, tl_terse, newstates;int	Stack_mx=0, Max_Red=0, Total=0;static Mapping	*Mapped = (Mapping *) 0;static Graph	*Nodes_Set = (Graph *) 0;static Graph	*Nodes_Stack = (Graph *) 0;static char	dumpbuf[2048];static int	Red_cnt  = 0;static int	Lab_cnt  = 0;static int	Base     = 0;static int	Stack_sz = 0;static Graph	*findgraph(char *);static Graph	*pop_stack(void);static Node	*Duplicate(Node *);static Node	*flatten(Node *);static Symbol	*catSlist(Symbol *, Symbol *);static Symbol	*dupSlist(Symbol *);static char	*newname(void);static int	choueka(Graph *, int);static int	not_new(Graph *);static int	set_prefix(char *, int, Graph *);static void	Addout(char *, char *);static void	fsm_trans(Graph *, int, char *);static void	mkbuchi(void);static void	expand_g(Graph *);static void	fixinit(Node *);static void	liveness(Node *);static void	mk_grn(Node *);static void	mk_red(Node *);static void	ng(Symbol *, Symbol *, Node *, Node *, Node *);static void	push_stack(Graph *);static void	sdump(Node *);static voiddump_graph(Graph *g){	Node *n1;	printf("\n\tnew:\t");	for (n1 = g->New; n1; n1 = n1->nxt)	{ dump(n1); printf(", "); }	printf("\n\told:\t");	for (n1 = g->Old; n1; n1 = n1->nxt)	{ dump(n1); printf(", "); }	printf("\n\tnxt:\t");	for (n1 = g->Next; n1; n1 = n1->nxt)	{ dump(n1); printf(", "); }	printf("\n\tother:\t");	for (n1 = g->Other; n1; n1 = n1->nxt)	{ dump(n1); printf(", "); }	printf("\n");}static voidpush_stack(Graph *g){	if (!g) return;	g->nxt = Nodes_Stack;	Nodes_Stack = g;	if (tl_verbose)	{	Symbol *z;		printf("\nPush %s, from ", g->name->name);		for (z = g->incoming; z; z = z->next)			printf("%s, ", z->name);		dump_graph(g);	}	Stack_sz++;	if (Stack_sz > Stack_mx) Stack_mx = Stack_sz;}static Graph *pop_stack(void){	Graph *g = Nodes_Stack;	if (g) Nodes_Stack = g->nxt;	Stack_sz--;	return g;}static char *newname(void){	static int cnt = 0;	static char buf[32];	sprintf(buf, "S%d", cnt++);	return buf;}static inthas_clause(int tok, Graph *p, Node *n){	Node *q, *qq;	switch (n->ntyp) {	case AND:		return	has_clause(tok, p, n->lft) &&			has_clause(tok, p, n->rgt);	case OR:		return	has_clause(tok, p, n->lft) ||			has_clause(tok, p, n->rgt);	}	for (q = p->Other; q; q = q->nxt)	{	qq = right_linked(q);		if (anywhere(tok, n, qq))			return 1;	}	return 0;}static voidmk_grn(Node *n){	Graph *p;	n = right_linked(n);more:	for (p = Nodes_Set; p; p = p->nxt)		if (p->outgoing		&&  has_clause(AND, p, n))		{	p->isgrn[p->grncnt++] =				(unsigned char) Red_cnt;			Lab_cnt++;		}	if (n->ntyp == U_OPER)	/* 3.4.0 */	{	n = n->rgt;		goto more;	}}static voidmk_red(Node *n){	Graph *p;	n = right_linked(n);	for (p = Nodes_Set; p; p = p->nxt)	{	if (p->outgoing		&&  has_clause(0, p, n))		{	if (p->redcnt >= 63)				Fatal("too many Untils", (char *)0);			p->isred[p->redcnt++] =				(unsigned char) Red_cnt;			Lab_cnt++; Max_Red = Red_cnt;	}	}}static voidliveness(Node *n){	if (n)	switch (n->ntyp) {#ifdef NXT	case NEXT:		liveness(n->lft);		break;#endif	case U_OPER:		Red_cnt++;		mk_red(n);		mk_grn(n->rgt);		/* fall through */	case V_OPER:	case OR: case AND:		liveness(n->lft);		liveness(n->rgt);		break;	}}static Graph *findgraph(char *nm){	Graph	*p;	Mapping *m;	for (p = Nodes_Set; p; p = p->nxt)		if (!strcmp(p->name->name, nm))			return p;	for (m = Mapped; m; m = m->nxt)		if (strcmp(m->from, nm) == 0)			return m->to;	printf("warning: node %s not found\n", nm);	return (Graph *) 0;}static voidAddout(char *to, char *from){	Graph	*p = findgraph(from);	Symbol	*s;	if (!p) return;	s = getsym(tl_lookup(to));	s->next = p->outgoing;	p->outgoing = s;}#ifdef NXTintonly_nxt(Node *n){	switch (n->ntyp) {	case NEXT:		return 1;	case OR:	case AND:		return only_nxt(n->rgt) && only_nxt(n->lft);	default:		return 0;	}}#endifintdump_cond(Node *pp, Node *r, int first){	Node *q;	int frst = first;	if (!pp) return frst;	q = dupnode(pp);	q = rewrite(q);	if (q->ntyp == PREDICATE	||  q->ntyp == NOT#ifndef NXT	||  q->ntyp == OR#endif	||  q->ntyp == FALSE)	{	if (!frst) fprintf(tl_out, " && ");		dump(q);		frst = 0;#ifdef NXT	} else if (q->ntyp == OR)	{	if (!frst) fprintf(tl_out, " && ");		fprintf(tl_out, "((");		frst = dump_cond(q->lft, r, 1);		if (!frst)			fprintf(tl_out, ") || (");		else		{	if (only_nxt(q->lft))			{	fprintf(tl_out, "1))");				return 0;			}		}		frst = dump_cond(q->rgt, r, 1);		if (frst)		{	if (only_nxt(q->rgt))				fprintf(tl_out, "1");			else				fprintf(tl_out, "0");			frst = 0;		}		fprintf(tl_out, "))");#endif	} else  if (q->ntyp == V_OPER		&& !anywhere(AND, q->rgt, r))	{	frst = dump_cond(q->rgt, r, frst);	} else  if (q->ntyp == AND)	{		frst = dump_cond(q->lft, r, frst);		frst = dump_cond(q->rgt, r, frst);	}	return frst;}static intchoueka(Graph *p, int count){	int j, k, incr_cnt = 0;	for (j = count; j <= Max_Red; j++) /* for each acceptance class */	{	int delta = 0;		/* is state p labeled Grn-j OR not Red-j ? */		for (k = 0; k < (int) p->grncnt; k++)			if (p->isgrn[k] == j)			{	delta = 1;				break;			}		if (delta)		{	incr_cnt++;			continue;		}		for (k = 0; k < (int) p->redcnt; k++)			if (p->isred[k] == j)			{	delta = 1;				break;			}		if (delta) break;		incr_cnt++;	}	return incr_cnt;}static intset_prefix(char *pref, int count, Graph *r2){	int incr_cnt = 0;	/* acceptance class 'count' */	if (Lab_cnt == 0	||  Max_Red == 0)		sprintf(pref, "accept");	/* new */	else if (count >= Max_Red)		sprintf(pref, "T0");		/* cycle */	else	{	incr_cnt = choueka(r2, count+1);		if (incr_cnt + count >= Max_Red)			sprintf(pref, "accept"); /* last hop */		else			sprintf(pref, "T%d", count+incr_cnt);	}	return incr_cnt;}static voidfsm_trans(Graph *p, int count, char *curnm){	Graph	*r;	Symbol	*s;	char	prefix[128], nwnm[256];	if (!p->outgoing)		addtrans(p, curnm, False, "accept_all");	for (s = p->outgoing; s; s = s->next)	{	r = findgraph(s->name);		if (!r) continue;		if (r->outgoing)		{	(void) set_prefix(prefix, count, r);			sprintf(nwnm, "%s_%s", prefix, s->name);		} else			strcpy(nwnm, "accept_all");		if (tl_verbose)		{	printf("maxred=%d, count=%d, curnm=%s, nwnm=%s ",				Max_Red, count, curnm, nwnm);			printf("(greencnt=%d,%d, redcnt=%d,%d)\n",				r->grncnt, r->isgrn[0],				r->redcnt, r->isred[0]);		}		addtrans(p, curnm, r->Old, nwnm);	}}static voidmkbuchi(void){	Graph	*p;	int	k;	char	curnm[64];	for (k = 0; k <= Max_Red; k++)	for (p = Nodes_Set; p; p = p->nxt)	{	if (!p->outgoing)			continue;		if (k != 0		&& !strcmp(p->name->name, "init")		&&  Max_Red != 0)			continue;		if (k == Max_Red		&&  strcmp(p->name->name, "init") != 0)			strcpy(curnm, "accept_");		else			sprintf(curnm, "T%d_", k);		strcat(curnm, p->name->name);		fsm_trans(p, k, curnm);	}	fsm_print();}static Symbol *dupSlist(Symbol *s){	Symbol *p1, *p2, *p3, *d = ZS;	for (p1 = s; p1; p1 = p1->next)	{	for (p3 = d; p3; p3 = p3->next)		{	if (!strcmp(p3->name, p1->name))				break;		}		if (p3) continue;	/* a duplicate */		p2 = getsym(p1);		p2->next = d;		d = p2;	}	return d;}static Symbol *catSlist(Symbol *a, Symbol *b){	Symbol *p1, *p2, *p3, *tmp;	/* remove duplicates from b */	for (p1 = a; p1; p1 = p1->next)	{	p3 = ZS;		for (p2 = b; p2; p2 = p2->next)		{	if (strcmp(p1->name, p2->name))			{	p3 = p2;				continue;			}			tmp = p2->next;			tfree((void *) p2);			if (p3)				p3->next = tmp;			else				b = tmp;	}	}	if (!a) return b;	if (!b) return a;	if (!b->next)	{	b->next = a;		return b;	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产免费成人在线视频| 亚洲精品一区二区三区99| 美女一区二区久久| 亚洲欧洲日产国产综合网| 欧美精品日韩综合在线| 成人不卡免费av| 精品在线一区二区| 亚洲成年人网站在线观看| 亚洲欧洲色图综合| 国产欧美日韩激情| 亚洲精品一线二线三线| 欧美日韩亚洲综合一区 | 中文字幕 久热精品 视频在线| 国产亚洲欧洲997久久综合 | 一色屋精品亚洲香蕉网站| 日韩欧美你懂的| 在线亚洲免费视频| 99久久精品免费精品国产| 国产黄色91视频| 国产麻豆91精品| 美女视频网站黄色亚洲| 午夜精品久久久久久久99樱桃 | 男男gaygay亚洲| 一区二区三区在线视频免费| 国产精品久久久久久久久久久免费看 | 午夜精品成人在线| 亚洲自拍偷拍麻豆| 亚洲在线观看免费视频| 亚洲激情图片qvod| 亚洲欧美一区二区三区极速播放| 国产人久久人人人人爽| 欧美不卡123| 精品国产一区二区三区不卡| 日韩一区二区在线播放| 4hu四虎永久在线影院成人| 欧美日韩综合在线| 欧美日韩卡一卡二| 欧美精品tushy高清| 欧美三级日韩三级国产三级| 欧美日韩性生活| 欧美日韩国产大片| 欧美一级欧美三级| 日韩一区二区精品在线观看| 日韩一级高清毛片| 精品国产91洋老外米糕| 久久精品在线观看| 国产精品二区一区二区aⅴ污介绍| 国产欧美视频一区二区| 欧美国产日本视频| 自拍偷拍亚洲激情| 亚洲国产aⅴ天堂久久| 午夜影视日本亚洲欧洲精品| 日韩成人免费在线| 国产麻豆精品theporn| 国产白丝网站精品污在线入口| 国产成人aaa| 91精品福利视频| 欧美美女喷水视频| 亚洲精品在线观| 中文字幕视频一区二区三区久| 一区二区高清在线| 奇米精品一区二区三区在线观看| 麻豆一区二区在线| 成人一区在线观看| 日本高清成人免费播放| 日韩一区二区麻豆国产| 国产视频不卡一区| 亚洲一区中文在线| 精品亚洲porn| 91在线视频在线| 制服丝袜成人动漫| 国产丝袜美腿一区二区三区| 亚洲精品成a人| 欧美男女性生活在线直播观看| 欧美一区二区三区男人的天堂| 久久精品视频免费观看| 一片黄亚洲嫩模| 久久国产精品72免费观看| 成人性视频免费网站| 欧美日韩国产一级| 久久久久97国产精华液好用吗| 综合分类小说区另类春色亚洲小说欧美 | 欧美精品少妇一区二区三区| 久久久久97国产精华液好用吗| 亚洲永久精品国产| 国产精品888| 欧美日韩国产系列| 国产情人综合久久777777| 亚洲123区在线观看| 国产高清不卡一区二区| 欧美日本在线看| 日本一区二区三级电影在线观看| 婷婷久久综合九色综合绿巨人| 成人黄色国产精品网站大全在线免费观看| 欧美色偷偷大香| 国产精品无人区| 久久精品国产亚洲高清剧情介绍| 一本久久a久久免费精品不卡| 欧美r级在线观看| 亚洲电影在线免费观看| 国产91精品精华液一区二区三区| 91精品国产色综合久久不卡蜜臀| 日本一区二区三区在线观看| 久久精品噜噜噜成人88aⅴ| 欧美性受xxxx黑人xyx性爽| 国产情人综合久久777777| 日韩主播视频在线| 欧美日精品一区视频| 自拍av一区二区三区| 国产91精品欧美| 日韩美一区二区三区| 肉色丝袜一区二区| 在线视频欧美区| 日韩一区欧美小说| 国产成人一级电影| 欧美不卡一区二区三区| 日本成人超碰在线观看| 欧美日韩夫妻久久| 亚洲国产精品麻豆| 欧美午夜电影网| 亚洲一区在线电影| 日本高清不卡aⅴ免费网站| 中文字幕亚洲欧美在线不卡| 国产成人亚洲综合色影视| 精品国产99国产精品| 久久国产麻豆精品| 欧美电影免费观看高清完整版在| 天使萌一区二区三区免费观看| 色一区在线观看| 亚洲精品老司机| 在线国产电影不卡| 亚洲已满18点击进入久久| 欧洲亚洲精品在线| 午夜精品久久久久影视| 欧美高清你懂得| 日本欧洲一区二区| 日韩免费看的电影| 精品一区二区免费视频| 久久综合色8888| 国产成人免费在线观看| 国产精品久久毛片| 99久久精品99国产精品| 亚洲精品国产一区二区精华液| 91视频免费看| 亚洲国产成人精品视频| 欧美日韩激情在线| 久久精品噜噜噜成人av农村| 美女一区二区在线观看| 久久久久久久综合狠狠综合| 国产精品456露脸| 亚洲欧美在线视频观看| 97久久人人超碰| 亚洲午夜久久久久久久久电影网| 欧美日韩一区二区三区免费看| 天堂精品中文字幕在线| 精品国产乱码久久久久久蜜臀| 国产成人精品一区二区三区网站观看| 中文字幕不卡在线播放| 色婷婷综合久久久久中文| 亚洲成av人片| 久久久蜜臀国产一区二区| 白白色 亚洲乱淫| 亚洲国产精品影院| 久久午夜免费电影| 91在线一区二区| 日韩av网站免费在线| 国产丝袜在线精品| 在线免费视频一区二区| 美女任你摸久久| 中日韩免费视频中文字幕| 欧美色精品天天在线观看视频| 久久国产精品色婷婷| 国产精品盗摄一区二区三区| 欧美日韩一区不卡| 国产精品亚洲人在线观看| 亚洲精品成人精品456| 欧美不卡一二三| 色噜噜久久综合| 国产一区二区导航在线播放| 亚洲乱码国产乱码精品精的特点| 欧美一区二区三区成人| aaa欧美大片| 国产综合一区二区| 亚洲一区二区三区四区不卡| 日韩精品一区二区在线| 色综合天天综合网国产成人综合天 | 欧美精品电影在线播放| 成人免费视频app| 污片在线观看一区二区| 国产精品国产三级国产普通话蜜臀 | 99久久精品国产麻豆演员表| 免费看黄色91| 最新不卡av在线| 久久精品这里都是精品| 91精品国产综合久久精品麻豆| 成人精品在线视频观看| 美女www一区二区| 亚洲大片精品永久免费| 国产精品久久毛片| 久久久久久久久97黄色工厂|