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

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

?? c03.c

?? unix v7是最后一個廣泛發(fā)布的研究型UNIX版本
?? C
字號:
#/* * C compiler, phase 1 * * * Handles processing of declarations, * except for top-level processing of * externals. */#include "c0.h"/* * Process a sequence of declaration statements */declist(sclass){	register sc, offset;	struct hshtab typer;	offset = 0;	sc = sclass;	while (getkeywords(&sclass, &typer)) {		offset = declare(sclass, &typer, offset);		sclass = sc;	}	return(offset+align(INT, offset, 0));}/* * Read the keywords introducing a declaration statement * Store back the storage class, and fill in the type * entry, which looks like a hash table entry. */getkeywords(scptr, tptr)int *scptr;struct hshtab *tptr;{	register skw, tkw, longf;	int o, isadecl, ismos, unsignf;	isadecl = 0;	longf = 0;	unsignf = 0;	tptr->htype = INT;	tptr->hstrp = NULL;	tptr->hsubsp = NULL;	tkw = -1;	skw = *scptr;	ismos = skw==MOS||skw==MOU;	for (;;) {		mosflg = ismos && isadecl;		o = symbol();		if (o==NAME && csym->hclass==TYPEDEF && tkw<0) {			tkw = csym->htype;			tptr->hsubsp = csym->hsubsp;			tptr->hstrp = csym->hstrp;			isadecl++;			continue;		}		switch (o==KEYW? cval: -1) {		case AUTO:		case STATIC:		case EXTERN:		case REG:		case TYPEDEF:			if (skw && skw!=cval) {				if (skw==ARG && cval==REG)					cval = AREG;				else					error("Conflict in storage class");			}			skw = cval;			break;			case UNSIGN:			unsignf++;			break;		case LONG:			longf++;			break;		case ENUM:			strdec(ismos, cval);			cval = INT;			goto types;		case UNION:		case STRUCT:			tptr->hstrp = strdec(ismos, cval);			cval = STRUCT;		case INT:		case CHAR:		case FLOAT:		case DOUBLE:		types:			if (tkw>=0)				error("Type clash");			tkw = cval;			break;			default:			peeksym = o;			if (isadecl==0)				return(0);			if (tkw<0)				tkw = INT;			if (skw==0)				skw = blklev==0? DEFXTRN: AUTO;			if (unsignf) {				if (tkw==INT)					tkw = UNSIGN;				else					error("Misplaced 'unsigned'");			}			if (longf) {				if (tkw==FLOAT)					tkw = DOUBLE;				else if (tkw==INT)					tkw = LONG;				else					error("Misplaced 'long'");			}			*scptr = skw;			tptr->htype = tkw;			return(1);		}		isadecl++;	}}/* * Process a structure, union, or enum declaration; a subroutine * of getkeywords. */struct str *strdec(mosf, kind){	register elsize, o;	register struct hshtab *ssym;	int savebits;	struct hshtab **savememlist;	int savenmems;	struct str *strp;	struct hshtab *ds;	struct hshtab *mems[NMEMS];	struct hshtab typer;	int tagkind;	if (kind!=ENUM) {		tagkind = STRTAG;		mosflg = 1;	} else		tagkind = ENUMTAG;	ssym = 0;	if ((o=symbol())==NAME) {		ssym = csym;		mosflg = mosf;		o = symbol();		if (o==LBRACE && ssym->hblklev<blklev)			pushdecl(ssym);		if (ssym->hclass==0) {			ssym->hclass = tagkind;			ssym->strp = gblock(sizeof(*strp));			funcbase = curbase;			ssym->strp->ssize = 0;			ssym->strp->memlist = NULL;		}		if (ssym->hclass != tagkind)			redec();		strp = ssym->strp;	} else {		strp = gblock(sizeof(*strp));		funcbase = curbase;		strp->ssize = 0;		strp->memlist = NULL;	}	mosflg = 0;	if (o != LBRACE) {		if (ssym==0)			goto syntax;		if (ssym->hclass!=tagkind)			error("Bad structure/union/enum name");		peeksym = o;	} else {		ds = defsym;		mosflg = 0;		savebits = bitoffs;		savememlist = memlist;		savenmems = nmems;		memlist = mems;		nmems = 2;		bitoffs = 0;		if (kind==ENUM) {			typer.htype = INT;			typer.hstrp = strp;			declare(ENUM, &typer, 0);		} else			elsize = declist(kind==UNION?MOU:MOS);		bitoffs = savebits;		defsym = ds;		if (strp->ssize)			error("%.8s redeclared", ssym->name);		strp->ssize = elsize;		*memlist++ = NULL;		strp->memlist = gblock((memlist-mems)*sizeof(*memlist));		funcbase = curbase;		for (o=0; &mems[o] != memlist; o++)			strp->memlist[o] = mems[o];		memlist = savememlist;		nmems = savenmems;		if ((o = symbol()) != RBRACE)			goto syntax;	}	return(strp);   syntax:	decsyn(o);	return(0);}/* * Process a comma-separated list of declarators */declare(askw, tptr, offset)struct hshtab *tptr;{	register int o;	register int skw, isunion;	skw = askw;	isunion = 0;	if (skw==MOU) {		skw = MOS;		isunion++;		mosflg = 1;		if ((peeksym=symbol()) == SEMI) {			o = length(tptr);			if (o>offset)				offset = o;		}	}	do {		if (skw==ENUM && (peeksym=symbol())==RBRACE) {			o = peeksym;			peeksym = -1;			break;		}		o = decl1(skw, tptr, isunion?0:offset, NULL);		if (isunion) {			o =+ align(CHAR, o, 0);			if (o>offset)				offset = o;		} else			offset =+ o;	} while ((o=symbol()) == COMMA);	if (o==RBRACE) {		peeksym = o;		o = SEMI;	}	if (o!=SEMI && (o!=RPARN || skw!=ARG1))		decsyn(o);	return(offset);}/* * Process a single declarator */decl1(askw, atptr, offset, absname)struct hshtab *atptr, *absname;{	int t1, chkoff, a, elsize;	register int skw;	int type;	register struct hshtab *dsym;	register struct hshtab *tptr;	struct tdim dim;	struct field *fldp;	int *dp;	int isinit;	skw = askw;	tptr = atptr;	chkoff = 0;	mosflg = skw==MOS;	dim.rank = 0;	if (((peeksym=symbol())==SEMI || peeksym==RPARN) && absname==NULL)		return(0);	/*	 * Filler field	 */	if (peeksym==COLON && skw==MOS) {		peeksym = -1;		t1 = conexp();		elsize = align(tptr->htype, offset, t1);		bitoffs =+ t1;		return(elsize);	}	t1 = getype(&dim, absname);	if (t1 == -1)		return(0);	if (tptr->hsubsp) {		type = tptr->htype;		for (a=0; type&XTYPE;) {			if ((type&XTYPE)==ARRAY)				dim.dimens[dim.rank++] = tptr->hsubsp[a++];			type =>> TYLEN;		}	}	type = tptr->htype & ~TYPE;	while (t1&XTYPE) {		if (type&BIGTYPE) {			typov();			type = t1 = 0;		}		type = type<<TYLEN | (t1 & XTYPE);		t1 =>> TYLEN;	}	type =| tptr->htype&TYPE;	if (absname)		defsym = absname;	dsym = defsym;	if (dsym->hblklev < blklev)		pushdecl(dsym);	if (dim.rank == 0)		dsym->subsp = NULL;	else {		dp = gblock(dim.rank*sizeof(dim.rank));		funcbase = curbase;		if (skw==EXTERN)			maxdecl = curbase;		for (a=0; a<dim.rank; a++) {			if ((t1 = dp[a] = dim.dimens[a])			 && (dsym->htype&XTYPE) == ARRAY			 && dsym->subsp[a] && t1!=dsym->subsp[a])				redec();		}		dsym->subsp = dp;	}	if ((type&XTYPE) == FUNC) {		if (skw==AUTO)			skw = EXTERN;		if ((skw!=EXTERN && skw!=TYPEDEF) && absname==NULL)			error("Bad func. storage class");	}	if (!(dsym->hclass==0	   || ((skw==ARG||skw==AREG) && dsym->hclass==ARG1)	   || (skw==EXTERN && dsym->hclass==EXTERN && dsym->htype==type)))		if (skw==MOS && dsym->hclass==MOS && dsym->htype==type)			chkoff = 1;		else {			redec();			goto syntax;		}	if (dsym->hclass && (dsym->htype&TYPE)==STRUCT && (type&TYPE)==STRUCT)		if (dsym->hstrp != tptr->hstrp) {			error("Warning: structure redeclaration");			nerror--;		}	dsym->htype = type;	if (tptr->hstrp)		dsym->hstrp = tptr->hstrp;	if (skw==TYPEDEF) {		dsym->hclass = TYPEDEF;		return(0);	}	if (absname)		return(0);	if (skw==ARG1) {		if (paraml==0)			paraml = dsym;		else			parame->hoffset = dsym;		parame = dsym;		dsym->hclass = skw;		return(0);	}	elsize = 0;	if (skw==MOS) {		elsize = length(dsym);		if ((peeksym = symbol())==COLON) {			elsize = 0;			peeksym = -1;			t1 = conexp();			a = align(type, offset, t1);			if (dsym->hflag&FFIELD) {				if (dsym->hstrp->bitoffs!=bitoffs			 	 || dsym->hstrp->flen!=t1)					redec();			} else {				dsym->hstrp = gblock(sizeof(*fldp));				funcbase = curbase;			}			dsym->hflag =| FFIELD;			dsym->hstrp->bitoffs = bitoffs;			dsym->hstrp->flen = t1;			bitoffs =+ t1;		} else			a = align(type, offset, 0);		elsize =+ a;		offset =+ a;		if (++nmems >= NMEMS) {			error("Too many structure members");			nmems =- NMEMS/2;			memlist =- NMEMS/2;		}		if (a)			*memlist++ = &structhole;		if (chkoff && dsym->hoffset != offset)			redec();		dsym->hoffset = offset;		*memlist++ = dsym;	}	if (skw==REG)		if ((dsym->hoffset = goodreg(dsym)) < 0)			skw = AUTO;	dsym->hclass = skw;	isinit = 0;	if ((a=symbol())!=COMMA && a!=SEMI && a!=RBRACE)		isinit++;	if (a!=ASSIGN)		peeksym = a;	if (skw==AUTO) {	/*	if (STAUTO < 0) {	*/			autolen =- rlength(dsym);			dsym->hoffset = autolen;			if (autolen < maxauto)				maxauto = autolen;	/*	} else { 			*/	/*		dsym->hoffset = autolen;	*/	/*		autolen =+ rlength(dsym);	*/	/*		if (autolen > maxauto)		*/	/*			maxauto = autolen;	*/	/*	}			*/		if (isinit)			cinit(dsym, 0, AUTO);	} else if (skw==STATIC) {		dsym->hoffset = isn;		if (isinit) {			outcode("BBN", DATA, LABEL, isn++);			if (cinit(dsym, 1, STATIC) & ALIGN)				outcode("B", EVEN);		} else			outcode("BBNBN", BSS, LABEL, isn++, SSPACE, rlength(dsym));		outcode("B", PROG);	} else if (skw==REG && isinit)		cinit(dsym, 0, REG);	else if (skw==ENUM) {		if (type!=INT)			error("Illegal enumeration %.8s", dsym->name);		dsym->hclass = ENUMCON;		dsym->hoffset = offset;		if (isinit)			cinit(dsym, 0, ENUMCON);		elsize = dsym->hoffset-offset+1;	}	prste(dsym);syntax:	return(elsize);}/* * Push down an outer-block declaration * after redeclaration in an inner block. */pushdecl(asp)struct phshtab *asp;{	register struct phshtab *sp, *nsp;	sp = asp;	nsp = gblock(sizeof(*nsp));	maxdecl = funcbase = curbase;	cpysymb(nsp, sp);	sp->hclass = 0;	sp->hflag =& (FKEYW|FMOS);	sp->htype = 0;	sp->hoffset = 0;	sp->hblklev = blklev;	sp->hpdown = nsp;}/* * Copy the non-name part of a symbol */cpysymb(s1, s2)struct phshtab *s1, *s2;{	register struct phshtab *rs1, *rs2;	rs1 = s1;	rs2 = s2;	rs1->hclass = rs2->hclass;	rs1->hflag = rs2->hflag;	rs1->htype = rs2->htype;	rs1->hoffset = rs2->hoffset;	rs1->hsubsp = rs2->hsubsp;	rs1->hstrp = rs2->hstrp;	rs1->hblklev = rs2->hblklev;	rs1->hpdown = rs2->hpdown;}/* * Read a declarator and get the implied type */getype(adimp, absname)struct tdim *adimp;struct hshtab *absname;{	static struct hshtab argtype;	int type;	register int o;	register struct hshtab *ds;	register struct tdim *dimp;	ds = defsym;	dimp = adimp;	type = 0;	switch(o=symbol()) {	case TIMES:		type = getype(dimp, absname);		if (type==-1)			return(type);		if (type&BIGTYPE) {			typov();			type = 0;		}		return(type<<TYLEN | PTR);	case LPARN:		if (absname==NULL || nextchar()!=')') {			type = getype(dimp, absname);			if (type==-1)				return(type);			ds = defsym;			if ((o=symbol()) != RPARN)				goto syntax;			goto getf;		}	default:		peeksym = o;		if (absname) {			defsym = ds = absname;			absname = NULL;			goto getf;		}		break;	case NAME:		defsym = ds = csym;	getf:		switch(o=symbol()) {		case LPARN:			if (blklev==0) {				blklev++;				ds = defsym;				declare(ARG1, &argtype, 0);				defsym = ds;				blklev--;			} else				if ((o=symbol()) != RPARN)					goto syntax;			if (type&BIGTYPE) {				typov();				type = 0;			}			type = type<<TYLEN | FUNC;			goto getf;		case LBRACK:			if (dimp->rank>=5) {				error("Rank too large");				dimp->rank = 4;			}			if ((o=symbol()) != RBRACK) {				peeksym = o;				cval = conexp();				defsym = ds;				if ((o=symbol())!=RBRACK)					goto syntax;			} else {				if (dimp->rank!=0)					error("Null dimension");				cval = 0;			}			dimp->dimens[dimp->rank++] = cval;			if (type&BIGTYPE) {				typov();				type = 0;			}			type = type<<TYLEN | ARRAY;			goto getf;		}		peeksym = o;		return(type);	}syntax:	decsyn(o);	return(-1);}/* * More bits required for type than allowed. */typov(){	error("Type is too complicated");}/* * Enforce alignment restrictions in structures, * including bit-field considerations. */align(type, offset, aflen){	register a, t, flen;	char *ftl;	flen = aflen;	a = offset;	t = type;	ftl = "Field too long";	if (flen==0) {		a =+ (NBPC+bitoffs-1) / NBPC;		bitoffs = 0;	}	while ((t&XTYPE)==ARRAY)		t = decref(t);	if (t!=CHAR) {		a = (a+ALIGN) & ~ALIGN;		if (a>offset)			bitoffs = 0;	}	if (flen) {		if (type==INT || type==UNSIGN) {			if (flen > NBPW)				error(ftl);			if (flen+bitoffs > NBPW) {				bitoffs = 0;				a =+ NCPW;			}		} else if (type==CHAR) {			if (flen > NBPC)				error(ftl);			if (flen+bitoffs > NBPC) {				bitoffs = 0;				a =+ 1;			}		} else			error("Bad type for field");	}	return(a-offset);}/* * Complain about syntax error in declaration */decsyn(o){	error("Declaration syntax");	errflush(o);}/* * Complain about a redeclaration */redec(){	error("%.8s redeclared", defsym->name);}/* * Determine if a variable is suitable for storage in * a register; if so return the register number */goodreg(hp)struct hshtab *hp;{	int type;	type = hp->htype;	/*	 * Special dispensation for unions	 */	if (type==STRUCT && length(hp)<=SZINT)		type = INT;	if ((type!=INT && type!=CHAR && type!=UNSIGN && (type&XTYPE)==0)	 || (type&XTYPE)>PTR || regvar<3)		return(-1);	return(--regvar);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕在线观看一区| 亚洲欧洲三级电影| 亚洲国产人成综合网站| 国产乱色国产精品免费视频| 欧美亚洲动漫精品| 国产精品三级在线观看| 日韩电影网1区2区| 在线中文字幕一区| 中文字幕一区二区三中文字幕| 美女视频一区在线观看| 日本黄色一区二区| 国产精品久久久久影院色老大| 美国一区二区三区在线播放| 欧美日韩国产天堂| 亚洲精选视频在线| 成人黄色电影在线| 久久婷婷一区二区三区| 日韩国产在线观看一区| 91国内精品野花午夜精品| 欧美经典一区二区三区| 国产一区福利在线| 精品国产91乱码一区二区三区| 日韩中文字幕亚洲一区二区va在线| 色综合久久中文综合久久97| 国产女人水真多18毛片18精品视频| 免费观看一级欧美片| 欧美久久久久中文字幕| 亚洲一区在线视频观看| 一本色道久久加勒比精品| 日韩一区有码在线| 99精品视频一区二区三区| 国产精品乱码一区二区三区软件 | 国产精品久久久久久久岛一牛影视| 另类的小说在线视频另类成人小视频在线| 欧美日韩视频在线一区二区 | 久久先锋影音av鲁色资源网| 麻豆极品一区二区三区| 欧美一区二区美女| 日本91福利区| 欧美一区二区三区思思人| 午夜精品久久久| 欧美高清精品3d| 日韩激情一区二区| 日韩一级完整毛片| 日本少妇一区二区| 日韩一级精品视频在线观看| 免费成人美女在线观看| 欧美www视频| 极品少妇一区二区三区精品视频| 精品久久人人做人人爱| 国产综合久久久久影院| 2023国产精华国产精品| 国产高清久久久| 日本一区二区久久| 91免费观看视频在线| 亚洲一区二区三区四区在线 | 99视频精品免费视频| 亚洲男人的天堂av| 欧美主播一区二区三区| 午夜私人影院久久久久| 91精品国产全国免费观看| 麻豆国产精品视频| 久久久美女艺术照精彩视频福利播放| 国产一区二区三区| 欧美国产97人人爽人人喊| 91免费国产在线| 三级精品在线观看| 亚洲精品一区二区三区99| 成人性视频免费网站| 一区二区三区在线视频观看58| 欧美日韩中文字幕一区二区| 麻豆一区二区99久久久久| 亚洲国产精品黑人久久久| 色94色欧美sute亚洲线路一ni| 视频一区二区欧美| 国产偷国产偷亚洲高清人白洁| 99综合影院在线| 午夜精品久久久久久久| 久久蜜臀精品av| 色综合一个色综合| 免费欧美在线视频| 国产女同性恋一区二区| 在线免费一区三区| 美女视频黄免费的久久| 国产欧美va欧美不卡在线| 色哟哟欧美精品| 免费人成精品欧美精品| 国产精品久久久久久久久久免费看 | 亚洲丝袜另类动漫二区| 91精品国产综合久久精品图片| 国产精品一级片在线观看| 亚洲精品成人在线| 精品国产一区二区亚洲人成毛片| 99精品视频免费在线观看| 日韩精品久久理论片| 国产亚洲福利社区一区| 91啪亚洲精品| 久久精品免费观看| 亚洲激情成人在线| 久久久综合视频| 欧美日韩一区二区三区免费看| 国产一区二区中文字幕| 一区二区三区在线影院| 欧美成人r级一区二区三区| 99久久久久久| 久久丁香综合五月国产三级网站| 亚洲免费在线视频一区 二区| 欧美精品亚洲一区二区在线播放| 成人性生交大片免费看中文网站| 日本最新不卡在线| 樱花影视一区二区| 国产农村妇女精品| 欧美一区二区三区色| 色诱视频网站一区| 国产精品1区二区.| 日韩不卡在线观看日韩不卡视频| 中文字幕一区二区三区四区不卡 | 亚洲精品在线观看网站| 欧美三级在线视频| av一区二区三区黑人| 韩国v欧美v亚洲v日本v| 天天影视色香欲综合网老头| 亚洲少妇30p| 亚洲国产精品精华液2区45| 精品久久久久久最新网址| 欧美色精品天天在线观看视频| 99久久久久久99| 成人在线综合网站| 国产在线视频一区二区三区| 午夜av一区二区三区| 亚洲免费三区一区二区| 中文字幕国产精品一区二区| 欧美大肚乱孕交hd孕妇| 欧美日韩久久久| 色婷婷综合五月| 99riav久久精品riav| 国产99久久久久| 国产一区二区看久久| 蜜桃av一区二区在线观看| 丝袜美腿亚洲一区二区图片| 一区二区三区不卡视频在线观看| 一区在线播放视频| 亚洲国产精品黑人久久久| 国产亚洲1区2区3区| 精品国产一区二区三区久久久蜜月 | 欧美日韩国产综合草草| 91免费在线看| 91免费视频网| 一本久道中文字幕精品亚洲嫩| 91在线免费视频观看| a在线欧美一区| av动漫一区二区| 97精品久久久久中文字幕 | 免费不卡在线观看| 日本美女一区二区| 日本中文字幕一区二区视频| 五月天视频一区| 视频精品一区二区| 青青青伊人色综合久久| 免费成人在线网站| 欧日韩精品视频| 在线观看欧美精品| 欧美午夜精品电影| 欧美日韩亚洲综合一区| 欧美女孩性生活视频| 制服丝袜中文字幕亚洲| 欧美一区二区高清| 欧美电视剧免费观看| 日韩欧美一二区| 亚洲精品一区二区三区福利| 久久综合色播五月| 欧美高清在线精品一区| 国产精品传媒入口麻豆| 亚洲激情在线激情| 午夜精品一区二区三区电影天堂| 青青青爽久久午夜综合久久午夜| 久久成人久久爱| 高清成人免费视频| 色综合久久中文字幕综合网| 欧美日韩一级片网站| 日韩美女主播在线视频一区二区三区| 亚洲精品一区二区三区四区高清| 久久精品人人做人人综合| 国产精品初高中害羞小美女文| 尤物av一区二区| 奇米在线7777在线精品 | 亚洲一区二区三区四区在线| 日韩专区一卡二卡| 国产一区美女在线| 99re这里都是精品| 欧美日韩一二区| 精品欧美一区二区在线观看| 国产欧美日韩卡一| 一区二区三区欧美在线观看| 免费在线观看一区二区三区| 国产精品1024久久| 在线观看网站黄不卡| 日韩精品一区二区三区中文精品| 国产蜜臀av在线一区二区三区| 樱花草国产18久久久久|