代码拉取完成,页面将自动刷新
同步操作将从 ylyhappy/编译原理虎书代码 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/*
* errormsg.c - functions used in all phases of the compiler to give
* error messages about the Tiger program.
*
*/
#include "errormsg.h"
bool anyErrors= FALSE;
static string fileName = "";
static int lineNum = 1;
int EM_tokPos=0;
extern FILE *yyin;
typedef struct intList {int i; struct intList *rest;} *IntList;
static IntList intList(int i, IntList rest)
{IntList l= checked_malloc(sizeof *l);
l->i=i; l->rest=rest;
return l;
}
static IntList linePos=NULL;
void EM_newline(void)
{lineNum++;
linePos = intList(EM_tokPos, linePos);
}
void EM_error(int pos, char *message,...)
{va_list ap;
IntList lines = linePos;
int num=lineNum;
anyErrors=TRUE;
while (lines && lines->i >= pos)
{lines=lines->rest; num--;}
if (fileName) fprintf(stderr,"%s:",fileName);
if (lines) fprintf(stderr,"%d.%d: ", num, pos-lines->i);
va_start(ap,message);
vfprintf(stderr, message, ap);
va_end(ap);
fprintf(stderr,"\n");
}
void EM_reset(string fname)
{
anyErrors=FALSE; fileName=fname; lineNum=1;
linePos=intList(0,NULL);
yyin = fopen(fname,"r");
if (!yyin) {EM_error(0,"cannot open"); exit(1);}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。