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

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

?? preproc.c

?? C語言編譯器的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        --global_flag;
        return incldepth == 0;
}
/*
 * Undefine
 */
int doundef(void)
{
	getsym();
	if (!ifskip)
		undef2();
	return(incldepth == 0);
}
int undef2(void)
{
	if (lastst != id) 
    generror(ERR_IDEXPECT,0,0);
	else {
		SYM **p = (SYM **)LookupHash(unmangid,defhash,HASHTABLESIZE);
		if (p) {
			*p = (*p)->next;
		}
	}
}
void getdefsym(void)
{
				if (backupchar != -1) {
					lastst = backupchar;
					backupchar = -1;
					return;
				}
restart:        /* we come back here after comments */
        while(iswhitespacechar(lastch))
                getch();
        if( lastch == -1)
                lastst = eof;
        else if(isdigit(lastch))
                getnum();
        else if(isstartchar(lastch)) {
								lptr--;
                defid(unmangid,&lptr,0);	
								lastch = *lptr++;
								lastst = id;
				}
        else if (getsym2())
					goto restart;
}
int defid(short *name, short **p, char *q)
/*
 * Get an identifier during macro replacement
 */
{
	int count = 0,i=0;
			while (issymchar(**p)) {
				if (count < 100) {
					name[count++] = *(*p);
					if (q)
						i+=installphichar(*(*p),q,i);
				}
				(*p)++;
			}
			if (q) {
				if ((q[i-1] & 0xf0) == 0x90)
					q[i-1] = 0x90;
    	  q[i] = '\0';
			}
	name[count] = 0;
	return(count);
}
/* 
 * Insert a replacement string
 */
int definsert(short *end, short *begin, short * text, int len, int replen)
{
	short *q;
	int i,p, r;
	int val;
	if (begin != inputline) 
		if (*(begin-1) == '#') {
			if (*(begin-2) != '#') {
				begin--;
				replen++;
				r = pstrlen(text);
			
				text[r++] = '\"';
				text[r] = 0;
				for (i=r; i >= 0; i--)
					text[i+1] = text[i];
				*text = '\"';
			}
		}
	p = pstrlen(text);
	val = p - replen;
	r = pstrlen(begin);
	if (val + strlen(begin) >= len-1) {
		generror(ERR_MACROSUBS,0,0);
		return(-8000);
	}
	if (val > 0)
		for (q = begin + r+1; q >= end; q--)
			*(q+val) = *q;
	else
		if (val < 0) {
			r = pstrlen(end)+1;
			for (q = end; q < end+r; q++ )
				*(q+val) = *q;
		}
	for (i=0; i < p; i++)
		begin[i] = text[i]; 
	return(val);
}
/* replace macro args */	
int defreplace(short *macro, int count, short **oldargs, short **newargs)
{
	int i,rv;
	int instring = 0;
	short narg[1024];
	short name[100];
	short *p=macro,*q;
	while (*p) {
		if (*p == instring)
			instring = 0;
		else if (*p == '\'' || *p == '"')
			instring = *p;
		else if (!instring && isstartchar(*p)) {
			q = p;
			defid(name,&p,0);
			for (i=0; i < count; i++)
				if (!pstrcmp(name,oldargs[i])) {
					pstrcpy(narg,newargs[i]);
					if ((rv = definsert(p,q,narg,1024-(q-macro),p-q)) == -8000)
						return(FALSE);
					else {
						p += rv;
						break;
					}
				}
		}
		p++;
	}
	return(TRUE);
}
/* Handlers for default macros */
void cnvt(short *out,char *in)
{
	while (*in) 
		*out++=*in++;
	*out = 0;
}
void filemac(short *string)
{
	char str1[40];
	sprintf(str1,"\"%s\"",infile);
	cnvt(string,str1);
}
void datemac(short *string)
{
	char str1[40];
	struct tm *t1;
	time_t t2;
	time(&t2);
	t1 = localtime(&t2);
 	strftime(str1,40,"\"%b %d %Y\"",t1);
	cnvt(string,str1);
}
void timemac(short *string)
{
	char str1[40];
	struct tm *t1;
	time_t t2;
	time(&t2);
	t1 = localtime(&t2);
	str1[0] = '"';
 	strftime(str1,40,"\"%X\"",t1);
	cnvt(string,str1);
}
void linemac(short *string)
{
	char str1[40];
	sprintf(str1,"%d",lineno);
	cnvt(string,str1);
}
/* Scan for default macros and replace them */
void defmacroreplace(short *macro, short *name)
{
	int i;
	macro[0] = 0;
	for (i=0; i < INGROWNMACROS; i++)
		if (!strcmp(name,ingrownmacros[i].s)) {
			(ingrownmacros[i].func)(macro);
			break;
		}
}
/* Scan line for macros and do replacements */
void defcheck(short *line)
{
	short macro[1024];
	short name[100];
	short *args[40];
	char ascii[60];
	int tryagain = TRUE, changed = FALSE, waiting = FALSE,rv;
	short *p = line,*q;
	SYM *sp;
	while (tryagain) {
		p = line;
		tryagain = FALSE;
		while(*p) {
			q = p;
			if (*p == '"') {
				waiting = !waiting;
				p++;
			}
			else if (waiting)
				p++;
			else if (isstartchar(*p)) {
				defid(name,&p,ascii);
				if ((sp = search(ascii,&defsyms)) != 0) {
					DEFSTRUCT *def = sp->value.s;
					pstrcpy(macro,def->string);
					if (def->argcount) {
						int count = 0;
						short *q = p;
							while (iswhitespacechar(*q))
								q++;
						if (*q++ != '(')
							goto join;
						p = q;
						if (def->argcount > 1) {
							do {
								short *nm = name;
								int nestedparen = 0;
								while (((*p != ',' && *p != ')') || nestedparen) && *p != '\n') {
										if (*p == '(')
											nestedparen++;
										if (*p == ')' && nestedparen)
											nestedparen--;
										*nm++ = *p++;
								}
								while (iswhitespacechar(*(nm-1)))
									nm--;
								*nm = 0;
								nm = name;
								while (iswhitespacechar(*nm))
									nm++;
								args[count++] = plitlate(nm);
							} while (*p++ == ',');
						}
						else while (iswhitespacechar(*p++));
						if (*(p-1) != ')' || count != def->argcount-1) {
							generror(ERR_MACROSUBS,0,0);
							return;
						}
						/* Can't replace if tokenizing next */
						if (*p == '#' && *(p+1) == '#')
							continue;
						if (count == 0)
							goto insert;
						if (!defreplace(macro,count,def->args,args))
							return;
					}
insert:
					if ((rv=definsert(p,q,macro,4096-(q-line),p-q))==-8000)
						return;
					p+=rv;
					changed = tryagain = TRUE;
				}
				else {
join:
					defmacroreplace(macro,ascii);
					if (macro[0]) {
						if ((rv=definsert(p,q,macro,4096-(q-line),p-q))==-8000)
							return;
						p += rv;
						changed = TRUE;
					}
				}
			}
			else p++;
		}
	}
	/* Token pasting */
	if (changed) {
		p = q = line;
		while (*p) {
			if (*p == '#' && *(p+1) == '#')
				p+=2;
			else
				*q++ = *p++;
		}
		*q = 0;
	}
}
static void repdefines(short *lptr)
/*
 * replace 'defined' keyword in #IF and #ELIF statements
 */
{
	short *q = lptr;
	short name[40];
	char ascii[60];
	while (*lptr) {
		if (!pstrncmp(lptr,defkw,7)) {
			lptr +=7;
			if (*lptr == '(') 
				lptr++;
			else 
		 		expecttoken(openpa,0);
      while(iswhitespacechar(*lptr))
              lptr++;
			defid(name,&lptr,ascii);
      while(iswhitespacechar(*lptr))
              lptr++;
			if (*lptr == ')')
				lptr++;
			else
				expecttoken(closepa,0);
			if (search(ascii,&defsyms) != 0)
				*q++ = '1';
			else
				*q++ = '0';
			*q++ = ' ';
				
		}
		else {
			*q++ = *lptr++;
		}
	}
  *q = 0;
}
void pushif(void)
/* Push an if context */
{
	IFSTRUCT *p;
	global_flag++;
	p = xalloc(sizeof(IFSTRUCT));
	global_flag--;
	p->link = ifs;
	p->iflevel = ifskip;
	p->elsetaken = elsetaken;
	elsetaken = FALSE;
	ifs = p;
}
void popif(void)
/* Pop an if context */
{
	if (ifs) {
		ifskip = ifs->iflevel;
		elsetaken = ifs->elsetaken;
		ifs = ifs->link;
	}
	else {
		ifskip = 0;
		elsetaken = 0;
	}
}	
void ansieol(void)
{
	if (prm_ansi) {
		while (iswhitespacechar(*lptr))
			lptr++;
		if (*lptr) {
			lastch = *lptr;
			lastst = kw_if;
			generror(ERR_UNEXPECT,0,0);
		}
	}
}
int doifdef (int flag)
/* Handle IFDEF */
{
	SYM *sp;
	getch();
	while(isspace(lastch))
		getch();
	if (!isstartchar(lastch)) {
    generror(ERR_IDEXPECT,0,0);
    return incldepth == 0;
	}
	else
		getid();
 	sp = search(unmangid,&defsyms);
  pushif();
	if (sp && !flag || !sp && flag)
		ifskip = TRUE;
	ansieol();
	return(incldepth == 0);
}
int doif(int flag)
/* Handle #if */
{
	getsym();
  pushif();
	cantnewline = TRUE;
	if (!intexpr(0))
		ifskip = TRUE;
	cantnewline = FALSE;
	ansieol();
	return(incldepth == 0);
}
int doelif(void)
/* Handle #elif */
{
	int is;
	getsym();
	cantnewline = TRUE;
	is = !intexpr(0);
	cantnewline = FALSE;
	if (ifs) {
		if (!ifs->iflevel)
			ifskip = !ifskip || is || elsetaken;
			if (!ifskip)
				elsetaken = TRUE;
	}
	else
		generror(ERR_PREPROCMATCH,0,0);
	ansieol();
	return(incldepth == 0);
}
/* handle else */
int doelse(void)
{
	if (ifs) {
		if (!ifs->iflevel)
			ifskip = !ifskip || elsetaken;
	}
	else
		generror(ERR_PREPROCMATCH,0,0);
	ansieol();
	return(incldepth == 0);
}
/* HAndle endif */
int doendif(void)
{
	if (!ifs)
		generror(ERR_PREPROCMATCH,0,0);
	popif();
	ansieol();
	return(incldepth == 0);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线一区二区| 美女mm1313爽爽久久久蜜臀| 欧美亚洲国产一区二区三区va| 日韩福利电影在线| 国产精品久久久久久久第一福利| 欧美日韩美女一区二区| av综合在线播放| 久久国产精品99精品国产 | 国产精品伊人色| 一区二区三区在线影院| 久久人人爽爽爽人久久久| 欧美日韩亚洲综合一区二区三区| 国产99久久久久久免费看农村| 亚洲电影在线播放| 国产精品你懂的| 欧美v国产在线一区二区三区| 欧美性三三影院| 成人激情文学综合网| 国产一区免费电影| 日日嗨av一区二区三区四区| 亚洲欧美另类久久久精品| 久久久久99精品一区| 欧美成人r级一区二区三区| 欧美三级中文字幕在线观看| 99精品偷自拍| 成人av小说网| 丰满少妇久久久久久久| 国产一区二区电影| 精品中文字幕一区二区| 日日夜夜精品视频天天综合网| 一区二区免费在线| 亚洲免费在线电影| 中文字幕在线不卡| 国产精品美女久久久久aⅴ| 久久无码av三级| 精品福利一二区| 精品国产伦一区二区三区免费| 91麻豆精品国产无毒不卡在线观看 | 欧美精选一区二区| 欧美视频自拍偷拍| 欧美日韩亚洲高清一区二区| 欧美色男人天堂| 在线电影一区二区三区| 欧美剧情片在线观看| 欧美日韩国产小视频在线观看| 欧美性猛交xxxxxx富婆| 欧美系列亚洲系列| 69堂精品视频| 日韩一区二区精品| 久久综合色婷婷| 国产性色一区二区| 中文字幕欧美一区| 一区二区三区影院| 亚洲一区自拍偷拍| 日韩精品成人一区二区三区| 视频在线观看91| 久久国产精品99久久久久久老狼| 久色婷婷小香蕉久久| 国产一区二区三区四区五区美女 | 一区二区三区毛片| 日韩1区2区日韩1区2区| 玖玖九九国产精品| 成人午夜免费av| 日本韩国一区二区三区视频| 欧美日韩国产综合一区二区| 欧美xxxxxxxxx| 国产精品素人一区二区| 亚洲精品老司机| 青青草国产精品97视觉盛宴| 国产曰批免费观看久久久| 成人免费视频视频| 欧美在线免费视屏| 欧美成人性战久久| 中文字幕一区二区5566日韩| 亚洲午夜私人影院| 精品在线播放免费| av亚洲精华国产精华精| 欧美日韩精品一区二区三区四区| 欧美成人aa大片| 最新国产成人在线观看| 日本不卡一二三区黄网| 成人综合在线网站| 这里只有精品99re| 综合在线观看色| 久久精品国内一区二区三区| 成人的网站免费观看| 欧美日韩久久一区二区| 亚洲国产精品传媒在线观看| 亚洲成人av福利| 国产成人精品1024| 91麻豆精品国产91久久久久| 国产精品久久久久久久久免费桃花| 亚洲国产欧美日韩另类综合 | 国产精品国产a级| 视频精品一区二区| 91在线视频免费91| 欧美精品一区二区在线观看| 亚洲国产精品麻豆| 不卡高清视频专区| 欧美mv日韩mv亚洲| 亚洲电影你懂得| 99re6这里只有精品视频在线观看| 欧美一区二区三区影视| 亚洲人一二三区| 国产精品1024| 日韩精品在线一区| 日韩色视频在线观看| 丝袜美腿亚洲一区二区图片| 国产精品亚洲专一区二区三区 | 制服.丝袜.亚洲.中文.综合| 国产精品亲子伦对白| 久久精品99国产精品日本| 欧美在线看片a免费观看| 欧美经典一区二区| 精品一区二区三区久久久| 欧美在线色视频| 亚洲精选视频在线| av亚洲精华国产精华精| 国产欧美一区二区精品婷婷| 久久精品噜噜噜成人88aⅴ| 在线不卡的av| 亚洲成人久久影院| 日本丶国产丶欧美色综合| 国产精品萝li| 国产成人aaa| 国产午夜一区二区三区| 精品一区二区影视| 欧美xxxxx牲另类人与| 美腿丝袜在线亚洲一区| 91精品国产综合久久久久久漫画 | 中国av一区二区三区| 日韩成人午夜电影| 91久久国产最好的精华液| 国产精品久久久久影院| 国产成人精品亚洲午夜麻豆| 精品国产一区二区亚洲人成毛片| 日本在线不卡视频一二三区| 欧美老肥妇做.爰bbww视频| 亚洲6080在线| 欧洲av一区二区嗯嗯嗯啊| 一片黄亚洲嫩模| 欧美日韩一二三| 视频一区二区欧美| 日韩美一区二区三区| 久久99精品国产麻豆婷婷| 欧美草草影院在线视频| 精品欧美一区二区久久| 亚洲精品成人精品456| 99久久综合99久久综合网站| 中文av一区特黄| 91蜜桃婷婷狠狠久久综合9色| 国产精品久久久久久户外露出| 99亚偷拍自图区亚洲| 亚洲美女免费视频| 欧美日韩一区二区三区四区五区| 亚洲成国产人片在线观看| 69堂国产成人免费视频| 看电影不卡的网站| 国产精品嫩草99a| 日本高清视频一区二区| 肉丝袜脚交视频一区二区| 精品动漫一区二区三区在线观看| 国产成人精品一区二区三区网站观看| 国产精品盗摄一区二区三区| 在线亚洲欧美专区二区| 视频一区视频二区中文字幕| 久久天天做天天爱综合色| 国产91精品久久久久久久网曝门| 亚洲私人黄色宅男| 欧美日韩大陆在线| 国产经典欧美精品| 日韩电影在线观看一区| 欧美精品第1页| 国精产品一区一区三区mba桃花| 亚洲视频在线一区| 91精品国模一区二区三区| 国产一区二区精品久久91| 亚洲欧美日韩一区二区| 在线播放中文一区| 福利视频网站一区二区三区| 一区二区三区精品在线| 久久综合狠狠综合| 日本精品视频一区二区三区| 久久精品999| 亚洲色图一区二区三区| 欧美电影免费观看高清完整版在线观看 | 久久综合五月天婷婷伊人| 色哟哟国产精品免费观看| 精品综合免费视频观看| 玉足女爽爽91| 久久精品无码一区二区三区| 在线观看一区日韩| 春色校园综合激情亚洲| 日韩电影在线免费看| 日韩码欧中文字| 久久久久久久久久电影| 在线不卡免费av| 在线欧美日韩国产| 国产成人超碰人人澡人人澡| 奇米影视一区二区三区|