⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 error.c

📁 guide and some example with visualC++
💻 C
字号:
/* error.c * *	(C) Copyright Apr 15 1995, Edmond J. Breen. *		   ALL RIGHTS RESERVED. * This code may be copied for personal, non-profit use only. * */#include <stdio.h>#include <stdlib.h>#include "global.h"#include "lexer.h"#include "xalloc.h"#include "preproc.h"#include "error.h"#include <stdarg.h>int EiC_ParseError, EiC_ErrorRecover;int EiC_errs = 0;static void messageDisplay(char *msg);void (*EiC_messageDisplay)(char *) = messageDisplay;void EiC_setMessageDisplay(void (*t)(char *msg)){    EiC_messageDisplay = t;}               /*CUT match.cut*/int EiC_match(int t, char *m){    extern token_t *token;    int lookahead;    char message[80];    lookahead = EiC_lexan();    if (EiC_ErrorRecover) {		/* error recovery method */	while ((lookahead != t && lookahead != ';') && lookahead != DONE) {	    if(lookahead == STR) 		xfree(token->Val.p.p);	    lookahead = EiC_lexan();	}	if (lookahead == t || lookahead == ';') {	    EiC_ErrorRecover = 0;	    if (lookahead != t)		retractlexan();	    return 1;	} else	    return 0;    }    if (lookahead != t) {	sprintf(message, "Expected %s", m);	EiC_error(message);	return 0;    }    return 1;}              /*END CUT*/void EiC_clear_err_msgs(void){    EiC_errs = 0;}static void messageDisplay(char *msg){    fprintf(stderr,msg);}void EiC_formatMessage(char *msg, ...){    va_list args;    char buff2[1024];    va_start(args,msg);    vsprintf(buff2,msg,args);    EiC_messageDisplay(buff2);    va_end(args);}void EiC_error(char *msg, ...){    char *buff1, *buff2;    va_list args;    int ln;        va_start(args,msg);    ln = strlen(msg);    buff1 = malloc(ln + 256);    buff2 = malloc(ln + 512);        if (!EiC_ErrorRecover) {	EiC_errs++;	EiC_ErrorRecover = EiC_ParseError = 1;	sprintf(buff1,"Error in %s near line %d: %s\n",		CurrentFileName(),		CurrentLineNo(),		msg);	vsprintf(buff2,buff1,args);	EiC_messageDisplay(buff2);    }    free(buff1);    free(buff2);    va_end(args);}void EiC_warningerror(char *msg, ...){    va_list args;    char *buff1, *buff2;    int ln;    va_start(args,msg);    ln = strlen(msg);    buff1 = malloc(ln + 256);    buff2 = malloc(ln + 512);    EiC_errs++;    sprintf(buff1,"Warning: in %s near line %d: %s\n",	    CurrentFileName(),	    CurrentLineNo(),	    msg);    vsprintf(buff2,buff1,args);    EiC_messageDisplay(buff2);    free(buff1);    free(buff2);    va_end(args);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -