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

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

?? regcomp.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
		/* do a bunch of concatenated expressions */		conc = HERE();		while (MORE() && (c = PEEK()) != '|' && c != stop)			p_ere_exp(p);		REQUIRE(HERE() != conc, REG_EMPTY);	/* require nonempty */		if (!EAT('|'))			break;		/* NOTE BREAK OUT */		if (first) {			INSERT(OCH_, conc);	/* offset is wrong */			prevfwd = conc;			prevback = conc;			first = 0;		}		ASTERN(OOR1, prevback);		prevback = THERE();		AHEAD(prevfwd);			/* fix previous offset */		prevfwd = HERE();		EMIT(OOR2, 0);			/* offset is very wrong */	}	if (!first) {		/* tail-end fixups */		AHEAD(prevfwd);		ASTERN(O_CH, prevback);	}	assert(!MORE() || SEE(stop));}/* - p_ere_exp - parse one subERE, an atom possibly followed by a repetition op == static void p_ere_exp(register struct parse *p); */static voidp_ere_exp(p)register struct parse *p;{	register char c;	register sopno pos;	register int count;	register int count2;	register sopno subno;	int wascaret = 0;	assert(MORE());		/* caller should have ensured this */	c = GETNEXT();	pos = HERE();	switch (c) {	case '(':		REQUIRE(MORE(), REG_EPAREN);		p->g->nsub++;		subno = p->g->nsub;		if (subno < NPAREN)			p->pbegin[subno] = HERE();		EMIT(OLPAREN, subno);		if (!SEE(')'))			p_ere(p, ')');		if (subno < NPAREN) {			p->pend[subno] = HERE();			assert(p->pend[subno] != 0);		}		EMIT(ORPAREN, subno);		MUSTEAT(')', REG_EPAREN);		break;#ifndef POSIX_MISTAKE	case ')':		/* happens only if no current unmatched ( */		/*		 * You may ask, why the ifndef?  Because I didn't notice		 * this until slightly too late for 1003.2, and none of the		 * other 1003.2 regular-expression reviewers noticed it at		 * all.  So an unmatched ) is legal POSIX, at least until		 * we can get it fixed.		 */		SETERROR(REG_EPAREN);		break;#endif	case '^':		EMIT(OBOL, 0);		p->g->iflags |= USEBOL;		p->g->nbol++;		wascaret = 1;		break;	case '$':		EMIT(OEOL, 0);		p->g->iflags |= USEEOL;		p->g->neol++;		break;	case '|':		SETERROR(REG_EMPTY);		break;	case '*':	case '+':	case '?':		SETERROR(REG_BADRPT);		break;	case '.':		if (p->g->cflags&REG_NEWLINE)			nonnewline(p);		else			EMIT(OANY, 0);		break;	case '[':		p_bracket(p);		break;	case '\\':		REQUIRE(MORE(), REG_EESCAPE);		c = GETNEXT();		ordinary(p, c);		break;	case '{':		/* okay as ordinary except if digit follows */		REQUIRE(!MORE() || !isdigit(PEEK()), REG_BADRPT);		/* FALLTHROUGH */	default:		ordinary(p, c);		break;	}	if (!MORE())		return;	c = PEEK();	/* we call { a repetition if followed by a digit */	if (!( c == '*' || c == '+' || c == '?' ||				(c == '{' && MORE2() && isdigit(PEEK2())) ))		return;		/* no repetition, we're done */	NEXT();	REQUIRE(!wascaret, REG_BADRPT);	switch (c) {	case '*':	/* implemented as +? */		/* this case does not require the (y|) trick, noKLUDGE */		INSERT(OPLUS_, pos);		ASTERN(O_PLUS, pos);		INSERT(OQUEST_, pos);		ASTERN(O_QUEST, pos);		break;	case '+':		INSERT(OPLUS_, pos);		ASTERN(O_PLUS, pos);		break;	case '?':		/* KLUDGE: emit y? as (y|) until subtle bug gets fixed */		INSERT(OCH_, pos);		/* offset slightly wrong */		ASTERN(OOR1, pos);		/* this one's right */		AHEAD(pos);			/* fix the OCH_ */		EMIT(OOR2, 0);			/* offset very wrong... */		AHEAD(THERE());			/* ...so fix it */		ASTERN(O_CH, THERETHERE());		break;	case '{':		count = p_count(p);		if (EAT(',')) {			if (isdigit(PEEK())) {				count2 = p_count(p);				REQUIRE(count <= count2, REG_BADBR);			} else		/* single number with comma */				count2 = INFINITY;		} else		/* just a single number */			count2 = count;		repeat(p, pos, count, count2);		if (!EAT('}')) {	/* error heuristics */			while (MORE() && PEEK() != '}')				NEXT();			REQUIRE(MORE(), REG_EBRACE);			SETERROR(REG_BADBR);		}		break;	}	if (!MORE())		return;	c = PEEK();	if (!( c == '*' || c == '+' || c == '?' ||				(c == '{' && MORE2() && isdigit(PEEK2())) ) )		return;	SETERROR(REG_BADRPT);}/* - p_str - string (no metacharacters) "parser" == static void p_str(register struct parse *p); */static voidp_str(p)register struct parse *p;{	REQUIRE(MORE(), REG_EMPTY);	while (MORE())		ordinary(p, GETNEXT());}/* - p_bre - BRE parser top level, anchoring and concatenation == static void p_bre(register struct parse *p, register int end1, \ ==	register int end2); * Giving end1 as OUT essentially eliminates the end1/end2 check. * * This implementation is a bit of a kludge, in that a trailing $ is first * taken as an ordinary character and then revised to be an anchor.  The * only undesirable side effect is that '$' gets included as a character * category in such cases.  This is fairly harmless; not worth fixing. * The amount of lookahead needed to avoid this kludge is excessive. */static voidp_bre(p, end1, end2)register struct parse *p;register int end1;		/* first terminating character */register int end2;		/* second terminating character */{	register sopno start = HERE();	register int first = 1;			/* first subexpression? */	register int wasdollar = 0;	if (EAT('^')) {		EMIT(OBOL, 0);		p->g->iflags |= USEBOL;		p->g->nbol++;	}	while (MORE() && !SEETWO(end1, end2)) {		wasdollar = p_simp_re(p, first);		first = 0;	}	if (wasdollar) {	/* oops, that was a trailing anchor */		DROP(1);		EMIT(OEOL, 0);		p->g->iflags |= USEEOL;		p->g->neol++;	}	REQUIRE(HERE() != start, REG_EMPTY);	/* require nonempty */}/* - p_simp_re - parse a simple RE, an atom possibly followed by a repetition == static int p_simp_re(register struct parse *p, int starordinary); */static int			/* was the simple RE an unbackslashed $? */p_simp_re(p, starordinary)register struct parse *p;int starordinary;		/* is a leading * an ordinary character? */{	register int c;	register int count;	register int count2;	register sopno pos;	register int i;	register sopno subno;#	define	BACKSL	(1<<CHAR_BIT)	pos = HERE();		/* repetion op, if any, covers from here */	assert(MORE());		/* caller should have ensured this */	c = GETNEXT();	if (c == '\\') {		REQUIRE(MORE(), REG_EESCAPE);		c = BACKSL | (unsigned char)GETNEXT();	}	switch (c) {	case '.':		if (p->g->cflags&REG_NEWLINE)			nonnewline(p);		else			EMIT(OANY, 0);		break;	case '[':		p_bracket(p);		break;	case BACKSL|'{':		SETERROR(REG_BADRPT);		break;	case BACKSL|'(':		p->g->nsub++;		subno = p->g->nsub;		if (subno < NPAREN)			p->pbegin[subno] = HERE();		EMIT(OLPAREN, subno);		/* the MORE here is an error heuristic */		if (MORE() && !SEETWO('\\', ')'))			p_bre(p, '\\', ')');		if (subno < NPAREN) {			p->pend[subno] = HERE();			assert(p->pend[subno] != 0);		}		EMIT(ORPAREN, subno);		REQUIRE(EATTWO('\\', ')'), REG_EPAREN);		break;	case BACKSL|')':	/* should not get here -- must be user */	case BACKSL|'}':		SETERROR(REG_EPAREN);		break;	case BACKSL|'1':	case BACKSL|'2':	case BACKSL|'3':	case BACKSL|'4':	case BACKSL|'5':	case BACKSL|'6':	case BACKSL|'7':	case BACKSL|'8':	case BACKSL|'9':		i = (c&~BACKSL) - '0';		assert(i < NPAREN);		if (p->pend[i] != 0) {			assert(i <= p->g->nsub);			EMIT(OBACK_, i);			assert(p->pbegin[i] != 0);			assert(OP(p->strip[p->pbegin[i]]) == OLPAREN);			assert(OP(p->strip[p->pend[i]]) == ORPAREN);			(void) dupl(p, p->pbegin[i]+1, p->pend[i]);			EMIT(O_BACK, i);		} else			SETERROR(REG_ESUBREG);		p->g->backrefs = 1;		break;	case '*':		REQUIRE(starordinary, REG_BADRPT);		/* FALLTHROUGH */	default:		ordinary(p, c &~ BACKSL);		break;	}	if (EAT('*')) {		/* implemented as +? */		/* this case does not require the (y|) trick, noKLUDGE */		INSERT(OPLUS_, pos);		ASTERN(O_PLUS, pos);		INSERT(OQUEST_, pos);		ASTERN(O_QUEST, pos);	} else if (EATTWO('\\', '{')) {		count = p_count(p);		if (EAT(',')) {			if (MORE() && isdigit(PEEK())) {				count2 = p_count(p);				REQUIRE(count <= count2, REG_BADBR);			} else		/* single number with comma */				count2 = INFINITY;		} else		/* just a single number */			count2 = count;		repeat(p, pos, count, count2);		if (!EATTWO('\\', '}')) {	/* error heuristics */			while (MORE() && !SEETWO('\\', '}'))				NEXT();			REQUIRE(MORE(), REG_EBRACE);			SETERROR(REG_BADBR);		}	} else if (c == (unsigned char)'$')	/* $ (but not \$) ends it */		return(1);	return(0);}/* - p_count - parse a repetition count == static int p_count(register struct parse *p); */static int			/* the value */p_count(p)register struct parse *p;{	register int count = 0;	register int ndigits = 0;	while (MORE() && isdigit(PEEK()) && count <= DUPMAX) {		count = count*10 + (GETNEXT() - '0');		ndigits++;	}	REQUIRE(ndigits > 0 && count <= DUPMAX, REG_BADBR);	return(count);}/* - p_bracket - parse a bracketed character list == static void p_bracket(register struct parse *p); * * Note a significant property of this code:  if the allocset() did SETERROR, * no set operations are done. */static voidp_bracket(p)register struct parse *p;{	/* register char c; XXX jcf: unused */	register cset *cs = allocset(p);	register int invert = 0;	/* Dept of Truly Sickening Special-Case Kludges */	if (p->next + 5 < p->end && strncmp(p->next, "[:<:]]", 6) == 0) {		EMIT(OBOW, 0);		NEXTn(6);		return;	}	if (p->next + 5 < p->end && strncmp(p->next, "[:>:]]", 6) == 0) {		EMIT(OEOW, 0);		NEXTn(6);		return;	}	if (EAT('^'))		invert++;	/* make note to invert set at end */	if (EAT(']'))		CHadd(cs, ']');	else if (EAT('-'))		CHadd(cs, '-');	while (MORE() && PEEK() != ']' && !SEETWO('-', ']'))		p_b_term(p, cs);	if (EAT('-'))		CHadd(cs, '-');	MUSTEAT(']', REG_EBRACK);	if (p->error != 0)	/* don't mess things up further */		return;	if (p->g->cflags&REG_ICASE) {		register int i;		register int ci;		for (i = p->g->csetsize - 1; i >= 0; i--)			if (CHIN(cs, i) && isalpha(i)) {				ci = othercase(i);				if (ci != i)					CHadd(cs, ci);			}		if (cs->multis != NULL)			mccase(p, cs);	}	if (invert) {		register int i;		for (i = p->g->csetsize - 1; i >= 0; i--)			if (CHIN(cs, i))				CHsub(cs, i);			else				CHadd(cs, i);		if (p->g->cflags&REG_NEWLINE)			CHsub(cs, '\n');		if (cs->multis != NULL)			mcinvert(p, cs);	}	assert(cs->multis == NULL);		/* xxx */	if (nch(p, cs) == 1) {		/* optimize singleton sets */		ordinary(p, firstch(p, cs));		freeset(p, cs);	} else		EMIT(OANYOF, freezeset(p, cs));}/* - p_b_term - parse one term of a bracketed character list == static void p_b_term(register struct parse *p, register cset *cs); */static voidp_b_term(p, cs)register struct parse *p;register cset *cs;{	register char c;	register char start, finish;	register int i;	/* classify what we've got */	switch ((MORE()) ? PEEK() : '\0') {	case '[':		c = (MORE2()) ? PEEK2() : '\0';		break;	case '-':		SETERROR(REG_ERANGE);		return;			/* NOTE RETURN */		break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜久久久久久久久电影网 | 美女一区二区三区| 一区二区三区免费观看| 国产精品亲子伦对白| 久久九九99视频| 国产亚洲一区二区三区四区| 久久精品日韩一区二区三区| 国产亚洲综合在线| 国产精品午夜电影| 中文字幕一区视频| 亚洲女爱视频在线| 一区二区三区久久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲综合男人的天堂| 午夜影院在线观看欧美| 日韩国产在线一| 麻豆成人免费电影| 国产美女av一区二区三区| 国产高清成人在线| 99精品欧美一区二区三区小说| jvid福利写真一区二区三区| 色8久久人人97超碰香蕉987| 精品视频1区2区| 91精品国产综合久久福利| 欧美mv日韩mv国产| 国产精品久久久久四虎| 一区二区成人在线| 日韩黄色免费网站| 国产成人综合自拍| 91免费精品国自产拍在线不卡| 91国内精品野花午夜精品| 在线成人av影院| 久久蜜桃av一区二区天堂| 国产精品第四页| 亚洲成av人片一区二区三区| 久久99热这里只有精品| 成人国产精品免费观看| 欧美日韩国产精选| 国产欧美日韩久久| 亚洲伊人伊色伊影伊综合网| 麻豆精品新av中文字幕| 成人看片黄a免费看在线| 欧美三级日本三级少妇99| 精品少妇一区二区三区日产乱码| 国产精品系列在线| 三级欧美在线一区| 国产成人免费在线| 欧美日韩精品一区二区三区| 久久午夜电影网| 亚洲国产精品一区二区www在线| 久久99精品久久久久久久久久久久| 成人国产精品免费观看动漫| 欧美一区二区三区四区五区| 国产精品美女久久久久久2018| 亚洲影院理伦片| 国产91精品在线观看| 欧美精品777| 国产精品久久久久久久浪潮网站| 日本怡春院一区二区| av亚洲精华国产精华精| 日韩欧美高清dvd碟片| 一区二区三区四区国产精品| 精品亚洲成a人| 欧美色窝79yyyycom| 中文字幕免费观看一区| 日本女人一区二区三区| 91啪在线观看| 久久综合色8888| 日韩国产精品久久| 在线一区二区三区四区五区| 国产亚洲欧美日韩日本| 久久激情五月婷婷| 欧美日韩免费在线视频| 日韩一区欧美一区| 国产福利一区二区三区视频在线 | 91蜜桃网址入口| 欧美精品一区二区蜜臀亚洲| 亚洲成av人综合在线观看| www.99精品| 国产日韩欧美激情| 久久99精品久久久久久国产越南| 欧美老肥妇做.爰bbww视频| 亚洲三级在线看| 成人免费看片app下载| 精品久久久三级丝袜| 日韩二区三区在线观看| 欧美视频一区二区在线观看| 亚洲乱码国产乱码精品精98午夜| 高清不卡在线观看av| 精品人伦一区二区色婷婷| 蜜桃av一区二区在线观看| 欧美久久一区二区| 亚洲观看高清完整版在线观看| 色天天综合久久久久综合片| 一区免费观看视频| www.色综合.com| 国产精品免费久久| zzijzzij亚洲日本少妇熟睡| 国产精品美女一区二区三区 | 欧美一区二区在线观看| 亚洲高清视频在线| 欧美亚洲高清一区二区三区不卡| 亚洲精品乱码久久久久| 99在线精品一区二区三区| 中文子幕无线码一区tr| 国产mv日韩mv欧美| 亚洲欧洲日韩在线| 色欧美日韩亚洲| 亚洲综合久久久| 欧美剧在线免费观看网站 | 欧美日韩国产综合一区二区| 亚洲专区一二三| 欧美情侣在线播放| 久久精品99国产精品日本| 欧美成人bangbros| 国产精品一品二品| 国产精品久久久久影院老司| 91视频精品在这里| 亚洲午夜久久久久| 欧美一区二区视频在线观看2022| 蜜臀久久99精品久久久久宅男| 精品少妇一区二区三区在线视频 | 久久一日本道色综合| 国产电影一区在线| 亚洲人成在线观看一区二区| 91激情五月电影| 琪琪久久久久日韩精品| 久久久久国产精品免费免费搜索| 成人激情黄色小说| 亚洲香肠在线观看| 精品免费一区二区三区| 国产98色在线|日韩| 一区二区三区在线视频播放| 91精品黄色片免费大全| 国产精品18久久久久久久久久久久| 中文字幕第一页久久| 91久久精品一区二区二区| 日本三级亚洲精品| 国产精品毛片高清在线完整版| 色8久久精品久久久久久蜜| 蜜桃av一区二区| 国产精品久久久久久亚洲伦| 欧美精品 日韩| 国产伦精品一区二区三区视频青涩| 国产精品成人一区二区三区夜夜夜| 欧美在线观看一区二区| 精品在线一区二区| 亚洲欧美国产77777| 欧美一区二区三区在| 99视频精品全部免费在线| 午夜精品视频一区| 国产精品素人一区二区| 欧美日韩高清一区二区不卡| 国产一区二区成人久久免费影院| 亚洲综合在线第一页| 2020国产精品自拍| 欧美色中文字幕| 粉嫩13p一区二区三区| 午夜精品久久久久影视| 国产嫩草影院久久久久| 欧美人xxxx| 91免费看片在线观看| 国产麻豆成人传媒免费观看| 午夜精品久久久久久不卡8050| 久久久久99精品国产片| 777xxx欧美| 色乱码一区二区三区88| 国产美女一区二区| 秋霞电影网一区二区| 亚洲人成网站影音先锋播放| 久久伊人蜜桃av一区二区| 欧美精品v日韩精品v韩国精品v| 99国产欧美久久久精品| 狠狠色狠狠色综合日日91app| 亚洲一区二区影院| 国产精品国产馆在线真实露脸 | 国产午夜精品久久| 欧美一区二区网站| 欧美中文字幕一二三区视频| 成人精品免费看| 狠狠色狠狠色综合日日91app| 午夜精品视频在线观看| 夜夜爽夜夜爽精品视频| 日韩美女视频19| 中文字幕国产一区| 久久久亚洲精华液精华液精华液| 在线成人av影院| 欧美日韩激情在线| 在线观看亚洲成人| 91日韩在线专区| www.欧美亚洲| 成人福利视频在线看| 国产成人av自拍| 国产激情一区二区三区| 国产精品一线二线三线| 国产主播一区二区三区| 久久国产精品72免费观看| 六月丁香婷婷色狠狠久久| 日韩一区欧美二区| 日韩中文欧美在线|