⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ediflex.c

📁 主要用于大规模的测试生成方法
💻 C
字号:
# include "stdio.h"# define U(x) x# define NLSTATE yy_create_edf_previous=YYNEWLINE# define BEGIN yy_create_edf_bgin = yy_create_edf_svec + 1 +# define INITIAL 0# define YYLERR yy_create_edf_svec# define YYSTATE (yy_create_edf_estate-yy_create_edf_svec-1)# define YYOPTIM 1# define YYLMAX BUFSIZ# define output(c) putc(c,yy_create_edf_out)# define input() (((yy_create_edf_tchar=yy_create_edf_sptr>yy_create_edf_sbuf?U(*--yy_create_edf_sptr):getc(yy_create_edf_in))==10?(yy_create_edf_lineno++,yy_create_edf_tchar):yy_create_edf_tchar)==EOF?0:yy_create_edf_tchar)# define unput(c) {yy_create_edf_tchar= (c);if(yy_create_edf_tchar=='\n')yy_create_edf_lineno--;*yy_create_edf_sptr++=yy_create_edf_tchar;}# define yy_create_edf_more() (yy_create_edf_morfg=1)# define ECHO fprintf(yy_create_edf_out, "%s",yy_create_edf_text)# define REJECT { nstr = yy_create_edf_reject(); goto yy_create_edf_fussy;}int yy_create_edf_leng; extern char yy_create_edf_text[];int yy_create_edf_morfg;extern char *yy_create_edf_sptr, yy_create_edf_sbuf[];int yy_create_edf_tchar;FILE *yy_create_edf_in = {stdin}, *yy_create_edf_out = {stdout};extern int yy_create_edf_lineno;struct yy_create_edf_svf { 	struct yy_create_edf_work *yy_create_edf_stoff;	struct yy_create_edf_svf *yy_create_edf_other;	int *yy_create_edf_stops;};struct yy_create_edf_svf *yy_create_edf_estate;extern struct yy_create_edf_svf yy_create_edf_svec[], *yy_create_edf_bgin;#include <stdio.h>#undef YYLMAX#include "defines.h"extern int err_count;extern FILE *edifp;#undef input#define input() (((yy_create_edf_tchar=yy_create_edf_sptr>yy_create_edf_sbuf?U(*--yy_create_edf_sptr):toupper(getc(edifp)))==10?(yy_create_edf_lineno++,yy_create_edf_tchar):yy_create_edf_tchar)==EOF?0:yy_create_edf_tchar)# define KEY 2# define STR 4# define YYNEWLINE 10yy_create_edf_lex(){int nstr; extern int yy_create_edf_previous;while((nstr = yy_create_edf_look()) >= 0)yy_create_edf_fussy: switch(nstr){case 0:if(yy_create_edf_wrap()) return(0); break;case 1:;break;case 2:{ BEGIN 0; return( KEYWORD);}break;case 3:{ fprintf( stderr,			"Line %d: '%c' illegal after '('!\n",			yy_create_edf_lineno, yy_create_edf_text[0]); BEGIN 0; err_count++;		}break;case 4:	BEGIN KEY;break;case 5:	return( IDENT);break;case 6:return( NUMBER);break;case 7:       return( STRING);break;case 8:	return( ENDLIST);break;case 9:	{ fprintf( stderr,"Line %d: Illegal character '%c'!\n",			yy_create_edf_lineno, yy_create_edf_text[0]); err_count++;		}break;case 10:	{ fprintf( stderr, "Line %d: Illegal character octal %o!\n",			   yy_create_edf_lineno, yy_create_edf_text[0]); err_count++;		}break;case -1:break;default:fprintf(yy_create_edf_out,"bad switch yy_create_edf_look %d",nstr);} return(0); }/* end of yy_create_edf_lex */static int yy_create_edf_wrap() { return(1);}int yy_create_edf_vstop[] = {0,10,0,1,10,0,1,0,9,10,0,9,10,0,5,9,10,0,4,9,10,0,8,9,10,0,9,10,0,6,10,0,5,10,0,3,9,10,0,3,9,10,0,2,3,5,9,10,0,3,4,9,10,0,3,8,9,10,0,3,9,10,0,3,6,10,0,2,5,10,0,7,0,5,0,6,0,2,5,0,0};# define YYTYPE charstruct yy_create_edf_work { YYTYPE verify, advance; } yy_create_edf_crank[] = {0,0,	0,0,	1,7,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	1,8,	1,9,	0,0,	8,9,	8,9,	0,0,	0,0,	8,9,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	1,10,	1,11,	8,9,	0,0,	1,7,	1,12,	0,0,	1,13,	1,14,	0,0,	1,15,	2,13,	2,14,	3,18,	3,19,	1,16,	5,13,	5,14,	3,20,	0,0,	3,21,	3,22,	0,0,	3,23,	6,13,	6,14,	4,18,	4,19,	3,24,	0,0,	0,0,	4,20,	1,17,	4,21,	4,22,	0,0,	4,23,	0,0,	0,0,	0,0,	0,0,	4,24,	0,0,	0,0,	0,0,	3,25,	15,29,	15,29,	15,29,	15,29,	15,29,	15,29,	15,29,	15,29,	15,29,	15,29,	0,0,	0,0,	4,25,	0,0,	0,0,	0,0,	1,10,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	3,18,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,26,	11,26,	11,0,	11,0,	4,18,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	11,0,	0,0,	11,26,	11,27,	0,0,	0,0,	11,26,	11,26,	0,0,	0,0,	0,0,	0,0,	11,26,	0,0,	0,0,	0,0,	0,0,	11,26,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	11,26,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	0,0,	0,0,	0,0,	11,26,	12,28,	0,0,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	12,28,	0,0,	0,0,	0,0,	11,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	0,0,	0,0,	19,0,	19,0,	0,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	19,0,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	0,0,	0,0,	0,0,	0,0,	20,30,	0,0,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	20,30,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	0,0,	0,0,	26,0,	26,0,	19,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	26,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	0,0,	26,0,	0,0,	0,0,	0,0};struct yy_create_edf_svf yy_create_edf_svec[] = {0,	0,	0,yy_create_edf_crank+-1,	0,		0,	yy_create_edf_crank+-5,	yy_create_edf_svec+1,	0,	yy_create_edf_crank+-14,	yy_create_edf_svec+1,	0,	yy_create_edf_crank+-27,	yy_create_edf_svec+1,	0,	yy_create_edf_crank+-10,	yy_create_edf_svec+1,	0,	yy_create_edf_crank+-18,	yy_create_edf_svec+1,	0,	yy_create_edf_crank+0,	0,		yy_create_edf_vstop+1,yy_create_edf_crank+4,	0,		yy_create_edf_vstop+3,yy_create_edf_crank+0,	yy_create_edf_svec+8,	yy_create_edf_vstop+6,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+8,yy_create_edf_crank+-109,	0,		yy_create_edf_vstop+11,yy_create_edf_crank+110,	0,		yy_create_edf_vstop+14,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+18,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+22,yy_create_edf_crank+32,	0,		yy_create_edf_vstop+26,yy_create_edf_crank+0,	yy_create_edf_svec+15,	yy_create_edf_vstop+29,yy_create_edf_crank+0,	yy_create_edf_svec+12,	yy_create_edf_vstop+32,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+35,yy_create_edf_crank+-236,	yy_create_edf_svec+11,	yy_create_edf_vstop+39,yy_create_edf_crank+220,	0,		yy_create_edf_vstop+43,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+49,yy_create_edf_crank+0,	0,		yy_create_edf_vstop+54,yy_create_edf_crank+0,	yy_create_edf_svec+15,	yy_create_edf_vstop+59,yy_create_edf_crank+0,	yy_create_edf_svec+15,	yy_create_edf_vstop+63,yy_create_edf_crank+0,	yy_create_edf_svec+20,	yy_create_edf_vstop+67,yy_create_edf_crank+-350,	yy_create_edf_svec+11,	0,	yy_create_edf_crank+0,	0,		yy_create_edf_vstop+71,yy_create_edf_crank+0,	yy_create_edf_svec+12,	yy_create_edf_vstop+73,yy_create_edf_crank+0,	yy_create_edf_svec+15,	yy_create_edf_vstop+75,yy_create_edf_crank+0,	yy_create_edf_svec+20,	yy_create_edf_vstop+77,0,	0,	0};struct yy_create_edf_work *yy_create_edf_top = yy_create_edf_crank+477;struct yy_create_edf_svf *yy_create_edf_bgin = yy_create_edf_svec+1;char yy_create_edf_match[] = {00  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,011 ,012 ,01  ,01  ,011 ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,01  ,011 ,'!' ,'"' ,'!' ,'!' ,'%' ,'&' ,'!' ,'!' ,'!' ,'!' ,'+' ,'!' ,'+' ,'!' ,'!' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'!' ,'!' ,'!' ,'!' ,'!' ,'!' ,'!' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'!' ,'!' ,'!' ,'!' ,'_' ,'!' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'A' ,'!' ,'!' ,'!' ,'!' ,01  ,0};char yy_create_edf_extra[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};#ifndef lintstatic	char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */#endifint yy_create_edf_lineno =1;# define YYU(x) x# define NLSTATE yy_create_edf_previous=YYNEWLINEchar yy_create_edf_text[YYLMAX];struct yy_create_edf_svf *yy_create_edf_lstate [YYLMAX], **yy_create_edf_lsp, **yy_create_edf_olsp;char yy_create_edf_sbuf[YYLMAX];char *yy_create_edf_sptr = yy_create_edf_sbuf;int *yy_create_edf_fnd;extern struct yy_create_edf_svf *yy_create_edf_estate;int yy_create_edf_previous = YYNEWLINE;yy_create_edf_look(){	register struct yy_create_edf_svf *yy_create_edf_state, **lsp;	register struct yy_create_edf_work *yy_create_edf_t;	struct yy_create_edf_svf *yy_create_edf_z;	int yy_create_edf_ch, yy_create_edf_first;	struct yy_create_edf_work *yy_create_edf_r;# ifdef LEXDEBUG	int debug;# endif	char *yy_create_edf_lastch;	/* start off machines */# ifdef LEXDEBUG	debug = 0;# endif	yy_create_edf_first=1;	if (!yy_create_edf_morfg)		yy_create_edf_lastch = yy_create_edf_text;	else {		yy_create_edf_morfg=0;		yy_create_edf_lastch = yy_create_edf_text+yy_create_edf_leng;		}	for(;;){		lsp = yy_create_edf_lstate;		yy_create_edf_estate = yy_create_edf_state = yy_create_edf_bgin;		if (yy_create_edf_previous==YYNEWLINE) yy_create_edf_state++;		for (;;){# ifdef LEXDEBUG			if(debug)fprintf(yy_create_edf_out,"state %d\n",yy_create_edf_state-yy_create_edf_svec-1);# endif			yy_create_edf_t = yy_create_edf_state->yy_create_edf_stoff;			if(yy_create_edf_t == yy_create_edf_crank && !yy_create_edf_first){  /* may not be any transitions */				yy_create_edf_z = yy_create_edf_state->yy_create_edf_other;				if(yy_create_edf_z == 0)break;				if(yy_create_edf_z->yy_create_edf_stoff == yy_create_edf_crank)break;				}			*yy_create_edf_lastch++ = yy_create_edf_ch = input();			yy_create_edf_first=0;		tryagain:# ifdef LEXDEBUG			if(debug){				fprintf(yy_create_edf_out,"char ");				allprint(yy_create_edf_ch);				putchar('\n');				}# endif			yy_create_edf_r = yy_create_edf_t;			if ( (int)yy_create_edf_t > (int)yy_create_edf_crank){				yy_create_edf_t = yy_create_edf_r + yy_create_edf_ch;				if (yy_create_edf_t <= yy_create_edf_top && yy_create_edf_t->verify+yy_create_edf_svec == yy_create_edf_state){					if(yy_create_edf_t->advance+yy_create_edf_svec == YYLERR)	/* error transitions */						{unput(*--yy_create_edf_lastch);break;}					*lsp++ = yy_create_edf_state = yy_create_edf_t->advance+yy_create_edf_svec;					goto contin;					}				}# ifdef YYOPTIM			else if((int)yy_create_edf_t < (int)yy_create_edf_crank) {		/* r < yy_create_edf_crank */				yy_create_edf_t = yy_create_edf_r = yy_create_edf_crank+(yy_create_edf_crank-yy_create_edf_t);# ifdef LEXDEBUG				if(debug)fprintf(yy_create_edf_out,"compressed state\n");# endif				yy_create_edf_t = yy_create_edf_t + yy_create_edf_ch;				if(yy_create_edf_t <= yy_create_edf_top && yy_create_edf_t->verify+yy_create_edf_svec == yy_create_edf_state){					if(yy_create_edf_t->advance+yy_create_edf_svec == YYLERR)	/* error transitions */						{unput(*--yy_create_edf_lastch);break;}					*lsp++ = yy_create_edf_state = yy_create_edf_t->advance+yy_create_edf_svec;					goto contin;					}				yy_create_edf_t = yy_create_edf_r + YYU(yy_create_edf_match[yy_create_edf_ch]);# ifdef LEXDEBUG				if(debug){					fprintf(yy_create_edf_out,"try fall back character ");					allprint(YYU(yy_create_edf_match[yy_create_edf_ch]));					putchar('\n');					}# endif				if(yy_create_edf_t <= yy_create_edf_top && yy_create_edf_t->verify+yy_create_edf_svec == yy_create_edf_state){					if(yy_create_edf_t->advance+yy_create_edf_svec == YYLERR)	/* error transition */						{unput(*--yy_create_edf_lastch);break;}					*lsp++ = yy_create_edf_state = yy_create_edf_t->advance+yy_create_edf_svec;					goto contin;					}				}			if ((yy_create_edf_state = yy_create_edf_state->yy_create_edf_other) && (yy_create_edf_t= yy_create_edf_state->yy_create_edf_stoff) != yy_create_edf_crank){# ifdef LEXDEBUG				if(debug)fprintf(yy_create_edf_out,"fall back to state %d\n",yy_create_edf_state-yy_create_edf_svec-1);# endif				goto tryagain;				}# endif			else				{unput(*--yy_create_edf_lastch);break;}		contin:# ifdef LEXDEBUG			if(debug){				fprintf(yy_create_edf_out,"state %d char ",yy_create_edf_state-yy_create_edf_svec-1);				allprint(yy_create_edf_ch);				putchar('\n');				}# endif			;			}# ifdef LEXDEBUG		if(debug){			fprintf(yy_create_edf_out,"stopped at %d with ",*(lsp-1)-yy_create_edf_svec-1);			allprint(yy_create_edf_ch);			putchar('\n');			}# endif		while (lsp-- > yy_create_edf_lstate){			*yy_create_edf_lastch-- = 0;			if (*lsp != 0 && (yy_create_edf_fnd= (*lsp)->yy_create_edf_stops) && *yy_create_edf_fnd > 0){				yy_create_edf_olsp = lsp;				if(yy_create_edf_extra[*yy_create_edf_fnd]){		/* must backup */					while(yy_create_edf_back((*lsp)->yy_create_edf_stops,-*yy_create_edf_fnd) != 1 && lsp > yy_create_edf_lstate){						lsp--;						unput(*yy_create_edf_lastch--);						}					}				yy_create_edf_previous = YYU(*yy_create_edf_lastch);				yy_create_edf_lsp = lsp;				yy_create_edf_leng = yy_create_edf_lastch-yy_create_edf_text+1;				yy_create_edf_text[yy_create_edf_leng] = 0;# ifdef LEXDEBUG				if(debug){					fprintf(yy_create_edf_out,"\nmatch ");					sprint(yy_create_edf_text);					fprintf(yy_create_edf_out," action %d\n",*yy_create_edf_fnd);					}# endif				return(*yy_create_edf_fnd++);				}			unput(*yy_create_edf_lastch);			}		if (yy_create_edf_text[0] == 0  /* && feof(yy_create_edf_in) */)			{			yy_create_edf_sptr=yy_create_edf_sbuf;			return(0);			}		yy_create_edf_previous = yy_create_edf_text[0] = input();		if (yy_create_edf_previous>0)			output(yy_create_edf_previous);		yy_create_edf_lastch=yy_create_edf_text;# ifdef LEXDEBUG		if(debug)putchar('\n');# endif		}	}yy_create_edf_back(p, m)	int *p;{if (p==0) return(0);while (*p)	{	if (*p++ == m)		return(1);	}return(0);}	/* the following are only used in the lex library */yy_create_edf_input(){	return(input());	}yy_create_edf_output(c)  int c; {	output(c);	}yy_create_edf_unput(c)   int c; {	unput(c);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -