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

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

?? intexpr.c

?? C語言編譯器的源代碼
?? C
字號:
/*
 * 68K/386 32-bit C compiler.
 *
 * copyright (c) 1997, David Lindauer
 * 
 * This compiler is intended for educational use.  It may not be used
 * for profit without the express written consent of the author.
 *
 * It may be freely redistributed, as long as this notice remains intact
 * and either the original sources or derived sources 
 * are distributed along with any executables derived from the originals.
 *
 * The author is not responsible for any damages that may arise from use
 * of this software, either idirect or consequential.
 *
 * v1.35 March 1997
 * David Lindauer, gclind01@starbase.spd.louisville.edu
 *
 * Credits to Mathew Brandt for original K&R C compiler
 *
 */
/*
 * Evaluate an expression which should be known at compile time.
 * This uses recursive descent.  It is roughly analogous to the
 * primary expression handler except it returns a value rather than
 * an enode list
 */
#include        <stdio.h>
#include        "expr.h"
#include        "c.h"
#include				"errors.h"

extern enum e_sym lastst;
extern char lastid[];
extern long ival;
extern TABLE defsyms;
extern TYP stdint, stdchar,stduns, stdunsigned, stdlong, *head;
extern int prm_cmangle;
static long ieprimary(TYP **tp)   
/*
 * PRimary integer
 *    defined(MACRO)
 *    id
 *    iconst
 *    (cast )intexpr
 *    (intexpr)
 */
{       long     temp=0;
        SYM     *sp;
				if (tp)
					*tp = &stdint;
        if(lastst == id) {
					char *lid = lastid;
					if (prm_cmangle)
						lid++;
                	sp = gsearch(lastid);
                	if(sp == NULL) {
												gensymerror(ERR_UNDEFINED,lastid);
                        getsym();
                        return 0;
                        }
                	if(sp->storage_class != sc_const && sp->tp->type != bt_enum) {
                        generror(ERR_NEEDCONST,0,0);
                        getsym();
                        return 0;
                        }
                	getsym();
                	return sp->value.i;
        }
        else if(lastst == iconst) {
                temp = ival;
                getsym();
                return temp;
                }
        else if(lastst == lconst) {
								if (tp)
									*tp = &stdlong;
                temp = ival;
                getsym();
                return temp;
                }
        else if(lastst == iuconst) {
								if (tp)
									*tp = &stduns;
                temp = ival;
                getsym();
                return temp;
                }
        else if(lastst == luconst) {
								if (tp)
									*tp = &stdunsigned;
                temp = ival;
                getsym();
                return temp;
                }
        else if(lastst == cconst) {
								if (tp)
									*tp = &stdchar;
                temp = ival;
                getsym();
                return temp;
                }
				else if (lastst == openpa) {
					getsym();
					if (castbegin(lastst)) {
						decl(0);
						decl1();
						needpunc(closepa,0);
						if (tp)
						  *tp = head;
						return intexpr(0);
					}
					else {
				  	temp = intexpr(tp);
						return(temp);
					}
				}
        getsym();
        generror(ERR_NEEDCONST,0,0);
        return 0;
}
/*
 * Integer unary
 *   - unary
 *   ! unary
 *   ~unary
 *   primary
 */
static long ieunary(TYP **tp)
{
	long temp;
	switch (lastst) {
		case minus:
				getsym();
				temp = -ieunary(tp);
				break;
		case not:
				getsym();
				temp = !ieunary(tp);
				break;
		case compl:
				getsym();
				temp = ~ieunary(tp);
				break;
		default:
				temp = ieprimary(tp);
				break;
	}
	return(temp);
}
static long iemultops(TYP **tp)
/* Multiply ops */
{
	long val1 = ieunary(tp),val2;
	while (lastst == star || lastst == divide || lastst == modop) {
		TYP *tp1;
		long oper = lastst;
		getsym();
		val2 = ieunary(&tp1);
		switch(oper) {
			case star:
					val1 = val1 * val2;
					break;
			case divide:
					val1 = val1 / val2;
					break;
			case modop:
					val1 = val1 % val2;
					break;
		}
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ieaddops(TYP **tp)
/* Add ops */
{
	long val1 = iemultops(tp),val2;
	while (lastst == plus || lastst == minus)	{
		long oper = lastst;
		TYP *tp1;
		getsym();
		val2 = iemultops(&tp1);
		if (oper == plus) 
			val1 = val1 + val2;
		else
			val1 = val1 - val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ieshiftops(TYP **tp)
/* Shift ops */
{
	long val1 = ieaddops(tp), val2;
	while (lastst == lshift || lastst == rshift) {
		long oper = lastst;
		TYP *tp1;
		getsym();
		val2 = ieaddops(&tp1);
		if (oper == lshift)
			val1 <<= val2;
		else
			val1 >>= val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ierelation(TYP **tp)
/* non-eq relations */
{
	long val1 = ieshiftops(tp), val2;
	while (lastst == lt || lastst == gt || lastst == leq || lastst == geq) {
		long oper = lastst;
		TYP *tp1;
		getsym();
		val2 = ieshiftops(&tp1);
		switch(oper) {
			case lt:
					val1 = val1 < val2;
					break;
			case gt:
					val1 = val1 > val2;
					break;
			case leq:
					val1 = val1 <= val2;
					break;
			case geq:
					val1 = val1 >= val2;
					break;
		}
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ieequalops(TYP **tp)
/* eq relations */
{
	long val1 = ierelation(tp),val2;
	while (lastst == eq || lastst == neq) {
		long oper = lastst;
		TYP *tp1;
		getsym();
		val2 = ierelation(&tp1);
		if (oper == neq)
			val1 = val1 != val2;
		else
			val1 = val1 == val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ieandop(TYP **tp)
/* and op */
{
	long val1 = ieequalops(tp),val2;
	while (lastst == and) {
		TYP *tp1;
		getsym();
		val2 = ieequalops(&tp1);
		val1 = val1 & val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long iexorop(TYP **tp)
/* xor op */
{
	long val1 = ieandop(tp),val2;
	while (lastst == uparrow) {
		TYP *tp1;
		getsym();
		val2 = ieandop(&tp1);
		val1 = val1 ^ val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}         
	return(val1);
}
static long ieorop(TYP **tp)
/* or op */
{
	long val1 = iexorop(tp),val2;
	while (lastst == or) {
		TYP *tp1;
		getsym();
		val2 = iexorop(&tp1);
		val1 = val1 | val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ielandop(TYP **tp)
/* logical and op */
{
	long val1 = ieorop(tp),val2;
	while (lastst == land) {
		TYP *tp1;
		getsym();
		val2 = ieorop(&tp1);
		val1 = val1 && val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long ielorop(TYP **tp)
/* logical or op */
{
	long val1 = ielandop(tp),val2;
	while (lastst == lor) {
		TYP *tp1;
		getsym();
		val2 = ielandop(&tp1);
		val1 = val1 || val2;
		if (tp)
			*tp = maxsize(*tp,tp1);
	}
	return(val1);
}
static long iecondop(TYP **tp)
/* Hook op */
{
	long val1 = ielorop(tp),val2, val3;
		if (lastst == hook) {
			TYP *tp1, *tp2;
			getsym();
			val2 = iecondop(&tp1);
			needpunc(colon,0);
			val3 = iecondop(&tp2);
			if (val1)
				val1 = val2;
			else
				val1 = val3;
		if (tp)
			*tp = maxsize(tp2,tp1);
		}
	return(val1);
}
long intexpr(TYP **tp)
/* Integer expressions */
{
	return(iecondop(tp));
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品秋霞影院| 日本韩国一区二区三区视频| 天天综合天天综合色| 亚洲美女视频在线| 亚洲日本电影在线| 一区二区三区国产豹纹内裤在线 | 日韩av二区在线播放| 亚洲国产精品久久不卡毛片 | 一区二区在线看| 中文字幕一区二区三区不卡 | 麻豆精品国产传媒mv男同| 性做久久久久久久久| 午夜精品福利一区二区三区蜜桃| 亚洲第一二三四区| 日本aⅴ亚洲精品中文乱码| 男人操女人的视频在线观看欧美| 免费观看一级欧美片| 久久99日本精品| 国产91精品欧美| 99精品欧美一区二区蜜桃免费| 色综合天天综合网天天看片| 一本一本大道香蕉久在线精品| 欧美性欧美巨大黑白大战| 欧美日韩精品系列| 久久蜜臀精品av| 国产精品久久久久久久浪潮网站| 一区二区三区美女视频| 免费人成在线不卡| 国产成人免费视频精品含羞草妖精 | 黄页网站大全一区二区| 成人a免费在线看| 欧美视频三区在线播放| 欧美成人vr18sexvr| 中文字幕亚洲一区二区av在线| 一区二区三区中文字幕精品精品 | 婷婷激情综合网| 国产精品一二三区在线| 一本色道久久综合亚洲91| 欧美日韩国产bt| 日本一区二区三区电影| 性久久久久久久| 成人午夜又粗又硬又大| 91精品国产麻豆| 国产精品超碰97尤物18| 精品一区二区三区香蕉蜜桃| 欧美三级在线视频| 久久久精品天堂| 亚洲综合一区在线| 成人午夜私人影院| 日韩免费看的电影| 亚洲在线观看免费| 粉嫩av一区二区三区在线播放| 色婷婷国产精品| 国产欧美日韩三级| 日韩av一区二区在线影视| 91在线观看一区二区| 欧美成人精品二区三区99精品| 国产精品情趣视频| 精东粉嫩av免费一区二区三区| 欧美色图在线观看| 亚洲人吸女人奶水| 天堂影院一区二区| 久久精品在线免费观看| 一区二区三区**美女毛片| 国产激情一区二区三区桃花岛亚洲| 欧美在线三级电影| 国产精品每日更新| 国产传媒一区在线| ww久久中文字幕| 久久精品国产色蜜蜜麻豆| 8x8x8国产精品| 国产一级精品在线| 欧美一区二区三区日韩| 午夜伦理一区二区| 欧美日韩一区中文字幕| 亚洲无人区一区| 欧美三级乱人伦电影| 亚洲综合无码一区二区| 91成人免费电影| 亚洲精品v日韩精品| 色悠久久久久综合欧美99| 亚洲欧美国产毛片在线| 日本精品免费观看高清观看| 18欧美亚洲精品| 91在线国产观看| 亚洲乱码国产乱码精品精98午夜| 91麻豆免费观看| 一区二区久久久久久| 欧美欧美欧美欧美| 青青草成人在线观看| 日韩女同互慰一区二区| 精品中文字幕一区二区| 久久精品男人的天堂| 不卡一区在线观看| 亚洲激情在线激情| 欧美一区二区三区公司| 国产高清在线观看免费不卡| 国产精品福利电影一区二区三区四区| 99在线精品免费| 洋洋av久久久久久久一区| 正在播放亚洲一区| 国产一区免费电影| 亚洲日本青草视频在线怡红院| 在线观看中文字幕不卡| 婷婷夜色潮精品综合在线| 久久综合久久综合亚洲| 色综合天天综合给合国产| 奇米影视一区二区三区小说| 久久久精品2019中文字幕之3| 99久久免费视频.com| 天天综合网天天综合色| 国产欧美日韩综合| 在线观看不卡视频| 国内精品国产成人国产三级粉色 | 国产一区二区调教| 樱桃国产成人精品视频| 日韩欧美一级二级三级| 91小视频在线免费看| 美女高潮久久久| 怡红院av一区二区三区| 欧美精品一区二区不卡 | 天天av天天翘天天综合网| 欧美精品一区二| 欧美日韩亚洲综合在线| 成人一道本在线| 免费观看一级特黄欧美大片| 亚洲欧美激情插| 久久久99精品免费观看| 337p亚洲精品色噜噜狠狠| 91在线看国产| 成人一区二区视频| 日本不卡123| 亚洲第一狼人社区| 亚洲色图制服诱惑 | 伊人婷婷欧美激情| 久久久精品日韩欧美| 日韩视频一区二区三区在线播放| 99热精品一区二区| 国产精品一区二区久激情瑜伽| 亚洲成人第一页| 亚洲美女区一区| 国产精品久99| 国产精品午夜在线观看| 久久综合九色综合欧美98| 日韩欧美中文一区二区| 欧美日韩视频在线第一区| 色婷婷精品久久二区二区蜜臀av | 精品av久久707| 欧美一区二区三区视频| 欧美在线观看视频在线| 91影视在线播放| 日本高清免费不卡视频| 91在线观看视频| 色哟哟一区二区三区| 99久久婷婷国产| 色婷婷亚洲综合| 色欧美片视频在线观看 | 久久国产日韩欧美精品| 捆绑紧缚一区二区三区视频| 秋霞午夜鲁丝一区二区老狼| 日本在线播放一区二区三区| 石原莉奈在线亚洲三区| 日韩avvvv在线播放| 免费久久精品视频| 久久99精品久久久久| 国内成人免费视频| 国产成人亚洲精品青草天美| 国产成人亚洲精品青草天美| 成人午夜av影视| jiyouzz国产精品久久| 91在线视频观看| 欧美情侣在线播放| 久久亚洲二区三区| 国产三级精品在线| 中文字幕一区二区三区视频 | 男女性色大片免费观看一区二区| 日韩av二区在线播放| 激情小说亚洲一区| 成人一级片在线观看| 日本精品视频一区二区| 欧美一区二区三区人| 中文字幕第一页久久| 亚洲综合在线电影| 免费成人深夜小野草| 国产成人久久精品77777最新版本| 成人综合激情网| 欧美人与禽zozo性伦| 久久久高清一区二区三区| 亚洲精品va在线观看| 麻豆一区二区三| 9色porny自拍视频一区二区| 欧美人牲a欧美精品| 精品国产一区二区三区不卡| 亚洲欧洲成人自拍| 蜜臀久久99精品久久久久宅男| 成人性色生活片免费看爆迷你毛片| 色婷婷狠狠综合| 国产精品美女www爽爽爽| 亚洲成人动漫av| 不卡av在线免费观看|