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

📄 ncform

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻
字号:
#pragma lib	"libl.a"int yylineno =1;# define YYU(x) xchar yytext[YYLMAX];struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;Uchar yysbuf[YYLMAX];Uchar *yysptr = yysbuf;int *yyfnd;extern struct yysvf *yyestate;int yyprevious = YYNEWLINE;# ifdef LEXDEBUGextern void allprint(int);# endifyylook(void){	struct yysvf *yystate, **lsp;	struct yywork *yyt;	struct yysvf *yyz;	int yych;	struct yywork *yyr;# ifdef LEXDEBUG	int debug;# endif	Uchar *yylastch;	/* start off machines */# ifdef LEXDEBUG	debug = 0;# endif	if (!yymorfg)		yylastch = (Uchar*)yytext;	else {		yymorfg=0;		yylastch = (Uchar*)yytext+yyleng;		}	for(;;){		lsp = yylstate;		yyestate = yystate = yybgin;		if (yyprevious==YYNEWLINE) yystate++;		for (;;){# ifdef LEXDEBUG			if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);# endif			yyt = yystate->yystoff;			if(yyt == yycrank){		/* may not be any transitions */				yyz = yystate->yyother;				if(yyz == 0)break;				if(yyz->yystoff == yycrank)break;				}			*yylastch++ = yych = input();		tryagain:# ifdef LEXDEBUG			if(debug){				fprintf(yyout,"char ");				allprint(yych);				putchar('\n');				}# endif			yyr = yyt;			if ( (int)yyt > (int)yycrank){				yyt = yyr + yych;				if (yyt <= yytop && yyt->verify+yysvec == yystate){					if(yyt->advance+yysvec == YYLERR)	/* error transitions */						{unput(*--yylastch);break;}					*lsp++ = yystate = yyt->advance+yysvec;					goto contin;					}				}# ifdef YYOPTIM			else if((int)yyt < (int)yycrank) {		/* r < yycrank */				yyt = yyr = yycrank+(yycrank-yyt);# ifdef LEXDEBUG				if(debug)fprintf(yyout,"compressed state\n");# endif				yyt = yyt + yych;				if(yyt <= yytop && yyt->verify+yysvec == yystate){					if(yyt->advance+yysvec == YYLERR)	/* error transitions */						{unput(*--yylastch);break;}					*lsp++ = yystate = yyt->advance+yysvec;					goto contin;					}				yyt = yyr + YYU(yymatch[yych]);# ifdef LEXDEBUG				if(debug){					fprintf(yyout,"try fall back character ");					allprint(YYU(yymatch[yych]));					putchar('\n');					}# endif				if(yyt <= yytop && yyt->verify+yysvec == yystate){					if(yyt->advance+yysvec == YYLERR)	/* error transition */						{unput(*--yylastch);break;}					*lsp++ = yystate = yyt->advance+yysvec;					goto contin;					}				}			if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){# ifdef LEXDEBUG				if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);# endif				goto tryagain;				}# endif			else				{unput(*--yylastch);break;}		contin:# ifdef LEXDEBUG			if(debug){				fprintf(yyout,"state %d char ",yystate-yysvec-1);				allprint(yych);				putchar('\n');				}# endif			;			}# ifdef LEXDEBUG		if(debug){			fprintf(yyout,"stopped at %d with ",lsp>yylstate?*(lsp-1)-yysvec-1:0);			allprint(yych);			putchar('\n');			}# endif		while (lsp-- > yylstate){			*yylastch-- = 0;			if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){				yyolsp = lsp;				if(yyextra[*yyfnd]){		/* must backup */					while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){						lsp--;						unput(*yylastch--);						}					}				yyprevious = YYU(*yylastch);				yylsp = lsp;				yyleng = yylastch-(Uchar*)yytext+1;				yytext[yyleng] = 0;# ifdef LEXDEBUG				if(debug){					fprintf(yyout,"\nmatch '%s'", yytext);					fprintf(yyout," action %d\n",*yyfnd);					}# endif				return(*yyfnd++);				}			unput(*yylastch);			}		if (yytext[0] == 0  /* && feof(yyin) */)			{			yysptr=yysbuf;			return(0);			}		yyprevious = input();		yytext[0] = yyprevious;		if (yyprevious>0)			output(yyprevious);		yylastch = (Uchar*)yytext;# ifdef LEXDEBUG		if(debug)putchar('\n');# endif		}	return(0);	/* shut up the compiler; i have no idea what should be returned */	}yyback(int *p, int m){if (p==0) return(0);while (*p)	{	if (*p++ == m)		return(1);	}return(0);}	/* the following are only used in the lex library */yyinput(void){	return(input());}voidyyoutput(int c){	output(c);}voidyyunput(int c){	unput(c);}

⌨️ 快捷键说明

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