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

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

?? error.c

?? C編譯器源碼是我到處找來的,看了之后很有收獲
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*
 * 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
 *
 */
/* 
 * error handler
 */
#include        <stdio.h>
#include 				<string.h>
#include        "expr.h"
#include        "c.h"
#include        "errors.h"
#include 				"diag.h"

extern int prm_errfile;
extern FILE *errFile;
extern int global_flag;
extern FILE *listFile;
extern int errlineno;
extern char *errfile;
extern int prm_asmfile;
extern FILE *outputFile;
extern int prm_maxerr;
extern int prm_diag;
extern int prm_listfile;
extern int lastch;
extern enum e_sym lastst;
extern char lastid[];
extern int lineno;
extern FILE            *inclfile[10];  /* shared with preproc */
extern int             incldepth;      /* shared with preproc */
extern char *infile;
extern SYM *currentfunc;
extern int prm_warning,prm_cplusplus;

int diagcount = 0;
ERRORS *errlist = 0;
static ERRORS *errtail = 0;
static ERRORS *curerr = 0; 
static char expectlist[] = { "########################=##############,:;#[]{}()" };
static int errline;

/* table of which warnings are enabled */
char nowarn[ERR_MAX];
/* table of warning keywords for the -w command line option
 */
char warnarray[ERR_MAX][4] = { 
	"all","","","","","","","",
	"","","","","","","","",
	"","","","","","","","",
	"","","","","","","","",
	"","","","","cln","","","",
	"","","","","","","","",
	"","","","","","ret","sun","sud",
	"sas","npo","urc","fun","cno","ieq","","nco",
	"lad","","","zer","dpc","nsf","lun","pro",
	"cnv","","irg","san","ssu","","","",
	"","","tua","","tui","","","",
	"","","","","","","","",
	"","","","","","suz","fsu","lli",
  "","","","","","spc","","",
	"","","","","","","","",
  "","","","","",""
};
int             total_errors = 0;
void initerr(void)
{
                                errlist = errtail = curerr = 0;
        total_errors = 0;
                                diagcount  = 0;                 
	errline = 0;
}
/*
 * handling for warnings on the command line
 */
void warning_setup(char select, char *string)
{
	int bool = FALSE;
	while (*string) {
		int i;
		if (string[0] == '-') {
			bool = TRUE;
			string++;
		}
		else
			if (string[0] == '+')
				string++;
		for (i=0; i < ERR_MAX; i++)
			if (!strncmp(warnarray[i],string,3)) {
				if (i== 0) {
					int j;
					for (j =0; j < ERR_MAX; j++)
						nowarn[j] = (unsigned char)bool;
				}
				else
					nowarn[i] = (unsigned char)bool;
				string += 3;
				break;
			}
		if (i==ERR_MAX) {
			fatal("Invalid warning");
		}
	}
}
#ifdef DIAGNOSTICS
void diag(char *s)
/*
 * internal diags come here
 */
{ 
        diagcount++;
  if (prm_diag) {
                printf("DIAG - %s\n",s);
                if (prm_errfile && errFile)
                        fprintf(errFile,"/*DIAG - %s*/",s);
                if (prm_listfile && listFile)
                        fprintf(listFile,"/*DIAG - %s*/",s);
                if (prm_asmfile)
                        fprintf(outputFile,"DIAG - %s\n",s);
        }
}
#endif
int printerr(char *buf, ERRORS *err)
/*
 * subroutine gets the error code and returns whether it is an error or
 * warning
 */
{
        int errlvl = 0;
        switch (err->errornumber) {
								case ERR_NOCASE:
                        sprintf(buf,"Expected 'case' or 'default'");
                        break;
                case ERR_PUNCT:
                        sprintf(buf,"Expected '%c'",expectlist[(int)err->data]);
                        break;
                case ERR_INSERT:
                        sprintf(buf,"Inserted '%c'",expectlist[(int)err->data]);
                        break;
                case ERR_NEEDCHAR:
                        sprintf(buf,"Expected '%c'",(char)err->data);
                        break;
                case ERR_ILLCHAR:
                        sprintf(buf,"Illegal character '%c'",(char)err->data);
                        break;
                case ERR_NEEDCONST:
                        sprintf(buf,"Constant value expected");
                        break;
                case ERR_UNDEFINED:
                        sprintf(buf,"Undefined symbol '%s'", (char *)err->data);
                        break;
                case ERR_DUPSYM:
                        sprintf(buf,"Duplicate symbol '%s'", (char *)err->data);
                        break;
                case ERR_IDENTEXPECT:
                        sprintf(buf,"Expected '%s'",(char *)err->data);
                        break;
                case ERR_IDEXPECT:
                        sprintf(buf,"Identifier expected");
                        break;
                case ERR_INITSIZE:
                        sprintf(buf,"Too many initializers");
                        break;
                case ERR_NOINIT:
                        sprintf(buf,"Cannot initialize '%s'",(char *)err->data);
                        break;
                case ERR_PREPROCID:
                        sprintf(buf,"Invalid preprocessor directive '%s'",(char *)err->data);
                        break;
                case ERR_INCLFILE:
                        sprintf(buf,"File name expected in #include directive");
                        break;
                case ERR_CANTOPEN:
                        sprintf(buf,"Cannot open file \"%s\" for read access",(char *)err->data);
                        break;
                case ERR_ILLCLASS:
                        sprintf(buf,"Illegal storage class specifier '%s'",(char *)err->data);
                        break;
                case ERR_ILLCLASS2:
                        sprintf(buf,"Illegal storage class specifier on '%s'",(char *)err->data);
                        break;
                case ERR_DUPCASE:
                        sprintf(buf,"Duplicate case %d",(int)err->data);
                        break;
                case ERR_RETMISMATCH:
                        sprintf(buf,"Type mismatch in return");
                        break;
                case ERR_ARGMISMATCH:
                        sprintf(buf,"Type mismatch in arg '%s'",(char *)err->data);
                        break;
                case ERR_ARGLENSHORT:
                        sprintf(buf,"Argument list too short in redeclaration of function '%s'",(char *)err->data);
                        break;
                case ERR_ARGLENLONG:
                        sprintf(buf,"Argument list too long in redeclaration of function '%s'",(char*)err->data);
                        break;
                case ERR_DECLMISMATCH:
                        sprintf(buf,"Type mismatch in redeclaration of '%s'",(char *)err->data);
                        break;
                case ERR_CALLMISMATCH:
                        sprintf(buf,"Type mismatch in arg %s",(char *)err->data);
                        break;
                case ERR_CALLLENSHORT:
                        sprintf(buf,"Argument list too short %s",(char *)err->data);
                        break;
                case ERR_CALLLENLONG:
                        sprintf(buf,"Argument list too long %s",(char *)err->data);
                        errlvl = 1;
                        break;
                case ERR_LABEL:
                        sprintf(buf,"'%s' is not a label",(char *)err->data);
                        break;
                case ERR_NOPOINTER:
                        sprintf(buf,"Pointer type expected");
                        break;
                case ERR_LVALUE:
                        sprintf(buf,"Lvalue expected");
                        break;
                case ERR_NOFUNC:
                        sprintf(buf,"'%s' is not a function",(char *)err->data);
                        break;
                case ERR_MISMATCH:
                        sprintf(buf,"Type mismatch");
                        break;
                case ERR_ELSE:
                        sprintf(buf,"Misplaced else");
                        break;
                case ERR_EXPREXPECT:
                        sprintf(buf,"Expression expected");
                        break;
                case ERR_DEREF:
                        sprintf(buf,"Illegal pointer");
                        break;
                case ERR_UNEXPECT:
                        if (lastst == id)
                                sprintf(buf,"Unexpected '%s'",lastid);
                        else
                                sprintf(buf,"Unexpected '%c'",lastch);
                        break;
                case ERR_ILLTYPE:
                        sprintf(buf,"Illegal typedef of '%s'",(char *)err->data);
                        break;
                case ERR_ARRAYMISMATCH:
                        sprintf(buf,"Non-scalar array index");
                        break;
                case ERR_PREPROCMATCH:
                        sprintf(buf,"Unbalanced preprocessor directives");
                        break;
                case ERR_MACROSUBS:
                        sprintf(buf,"Macro substitution error");
                        break;
                case ERR_DECLEXPECT:
                        sprintf(buf,"Declaration expected");
                        break;
                case ERR_INVFLOAT:
                        sprintf(buf,"Invalid floating point");
                        break;
                case ERR_INVTRAP:
                        sprintf(buf,"Invalid trap id");
                        break;
                case ERR_BFILLEGAL:
                        sprintf(buf,"Cannot use bit field as a non-member");
                        break;
                case ERR_BFTOOBIG:
                        sprintf(buf,"Bit field too big");
                        break;
                case ERR_BFTYPE:
                        sprintf(buf,"Bit field only allowed on scalar types");
                        break;
                case ERR_ERROR:
                        sprintf(buf,"User error: %s",(char *)err->data);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美性色综合网| 亚洲人成亚洲人成在线观看图片| 国产欧美精品日韩区二区麻豆天美| 日本一区二区成人| 亚洲成在人线在线播放| 国产69精品一区二区亚洲孕妇| 欧美在线一区二区三区| 久久久精品2019中文字幕之3| 亚洲狠狠爱一区二区三区| 成人激情动漫在线观看| 日韩一区二区三区视频| 亚洲免费在线视频一区 二区| 玖玖九九国产精品| 欧美日韩精品久久久| 国产精品毛片无遮挡高清| 蓝色福利精品导航| 正在播放亚洲一区| 亚洲乱码国产乱码精品精98午夜| 国模套图日韩精品一区二区| 欧美女孩性生活视频| 亚洲欧美另类小说| 国产成人综合在线| 日韩欧美一区二区免费| 日日噜噜夜夜狠狠视频欧美人| 91在线精品一区二区| 国产精品沙发午睡系列990531| 国内精品国产三级国产a久久| 欧美巨大另类极品videosbest| 亚洲精品视频在线观看网站| 99久久er热在这里只有精品15| 久久久精品一品道一区| 国产成人免费9x9x人网站视频| 欧美日韩不卡一区| 五月激情六月综合| 欧美图区在线视频| 亚洲高清免费视频| 欧美精品自拍偷拍| 日韩成人精品在线观看| 日韩写真欧美这视频| 麻豆成人av在线| 精品国产乱码久久久久久浪潮| 蜜臀久久久99精品久久久久久| 精品久久久网站| 高潮精品一区videoshd| 国产精品盗摄一区二区三区| 99久久伊人精品| 亚洲欧美色综合| 欧美日韩国产高清一区二区| 婷婷丁香激情综合| 精品久久久久久久久久久院品网| 久久成人麻豆午夜电影| www久久久久| 成人av集中营| 亚洲一区二区视频| 日韩免费观看高清完整版 | 1024成人网| 在线观看精品一区| 麻豆91在线播放| 日本一区二区三级电影在线观看| 99久久精品情趣| 亚洲成人av一区二区三区| 日韩精品一区二区三区三区免费 | 国产乱对白刺激视频不卡| 国产精品初高中害羞小美女文| 欧美丝袜第三区| 韩国女主播一区二区三区| 一区精品在线播放| 欧美一区二区国产| 成人免费看视频| 日韩精品一级二级| 国产欧美日韩激情| 欧美疯狂做受xxxx富婆| 国产成人午夜高潮毛片| 亚洲大片精品永久免费| 久久久久9999亚洲精品| 欧美日韩一区二区三区不卡| 国产精品资源在线| 偷拍亚洲欧洲综合| 中文字幕免费观看一区| 欧美一区二区久久久| 99re在线视频这里只有精品| 久久精品国产精品亚洲综合| 亚洲免费av在线| 久久婷婷国产综合精品青草 | 欧美日本国产视频| 成人久久18免费网站麻豆 | 丁香网亚洲国际| 日韩二区三区四区| 一区二区三区在线视频观看| 欧美v日韩v国产v| 69久久夜色精品国产69蝌蚪网| www.综合网.com| 国产精品一区久久久久| 秋霞影院一区二区| 亚洲国产中文字幕| 亚洲欧洲综合另类在线| 国产精品污网站| 欧美va亚洲va在线观看蝴蝶网| 欧美人与z0zoxxxx视频| 色妞www精品视频| 99久久国产免费看| 成人激情av网| 成人一区二区视频| 国产精品 欧美精品| 免费视频一区二区| 麻豆精品一区二区av白丝在线| 亚洲福利视频导航| 亚洲主播在线播放| 亚洲国产精品久久艾草纯爱| 一区二区三区欧美| 伊人婷婷欧美激情| 亚洲精品乱码久久久久久久久 | 波多野结衣中文字幕一区| 国产精品自产自拍| 国产精品538一区二区在线| 秋霞国产午夜精品免费视频| 日韩精品午夜视频| 美女一区二区久久| 久久成人免费电影| 国产一区二区在线看| 国内精品久久久久影院薰衣草 | 日本怡春院一区二区| 青青草国产精品97视觉盛宴| 日本伊人精品一区二区三区观看方式| 午夜av一区二区三区| 日本免费在线视频不卡一不卡二| 天天综合色天天| 精品一区二区免费看| 国产精品系列在线播放| 福利91精品一区二区三区| 懂色av一区二区三区免费看| 不卡的av中国片| 欧美视频日韩视频在线观看| 正在播放一区二区| 久久精品亚洲乱码伦伦中文| 国产欧美一区二区精品仙草咪| 国产精品久线观看视频| 一区二区在线免费| 免费成人美女在线观看| 国产成人精品免费| 91福利社在线观看| 日韩一级成人av| 国产精品素人视频| 亚洲成av人片一区二区三区| 精品午夜一区二区三区在线观看| 国产1区2区3区精品美女| 色综合色狠狠综合色| 91麻豆精品国产91久久久| 久久综合精品国产一区二区三区| 国产精品色呦呦| 日日夜夜一区二区| 国产99久久久国产精品免费看| 色婷婷av一区二区三区之一色屋| 日韩欧美亚洲另类制服综合在线 | 一区二区免费在线播放| 日韩不卡一区二区三区| 成人黄色综合网站| 91精品国产色综合久久ai换脸| 国产欧美一区二区精品忘忧草| 夜色激情一区二区| 国产九色sp调教91| 欧美巨大另类极品videosbest| 国产精品乱码人人做人人爱| 香蕉成人啪国产精品视频综合网| 国产.精品.日韩.另类.中文.在线.播放| 欧美三级视频在线| 中文av一区二区| 蜜桃一区二区三区在线| 色综合中文字幕国产 | 色婷婷激情一区二区三区| 欧美成人video| 亚洲一区二区在线视频| 成人av电影在线播放| 日韩精品中文字幕一区二区三区| 亚洲欧美日韩一区二区三区在线观看| 看国产成人h片视频| 欧美无砖专区一中文字| 国产精品麻豆视频| 国产精品中文字幕一区二区三区| 在线电影国产精品| 亚洲精品国产无天堂网2021| 高清av一区二区| 国产清纯白嫩初高生在线观看91 | 视频在线观看一区| 99re亚洲国产精品| 日本一区二区不卡视频| 激情图区综合网| 日韩欧美电影一二三| 午夜影视日本亚洲欧洲精品| 色一区在线观看| 亚洲日本va午夜在线电影| 国产1区2区3区精品美女| 久久色视频免费观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美精品国产精品| 午夜视频一区二区| 欧美精品一卡两卡| 亚洲成人1区2区| 欧美精品久久一区| 日韩国产成人精品|