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

📄 debug.chk

📁 开放源码的编译器open watcom 1.6.0版的源代码
💻 CHK
字号:
/* Generated by re2c on Wed Jun  8 12:18:40 1994 */
#line 1 "scanner.re"
// $Log:	DEBUG.CHK $
Revision 1.1  94/06/08  12:18:46  Anthony_Scian
.

//Revision 1.1  1994/04/08  15:27:59  peter
//Initial revision
//

#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <unistd.h>
#include "scanner.h"
#include "parser.h"
#include "y.tab.h"

extern YYSTYPE yylval;

#define	BSIZE	8192

#define	YYCTYPE		uchar
#define	YYCURSOR	cursor
#define	YYLIMIT		lim
#define	YYMARKER	ptr
#define	YYFILL(n)	{cursor = fill(cursor);}

#define	RETURN(i)	{cur = cursor; return i;}


Scanner::Scanner(int i) : in(i),
	bot(NULL), tok(NULL), ptr(NULL), cur(NULL), pos(NULL), lim(NULL),
	top(NULL), eof(NULL), tchar(0), tline(0), cline(1) {
    ;
}

uchar *Scanner::fill(uchar *cursor){
    if(!eof){
	uint cnt = tok - bot;
	if(cnt){
	    memcpy(bot, tok, lim - tok);
	    tok = bot;
	    ptr -= cnt;
	    cursor -= cnt;
	    pos -= cnt;
	    lim -= cnt;
	}
	if((top - lim) < BSIZE){
	    uchar *buf = new uchar[(lim - bot) + BSIZE];
	    memcpy(buf, tok, lim - tok);
	    tok = buf;
	    ptr = &buf[ptr - bot];
	    cursor = &buf[cursor - bot];
	    pos = &buf[pos - bot];
	    lim = &buf[lim - bot];
	    top = &lim[BSIZE];
	    delete bot;
	    bot = buf;
	}
	if((cnt = read(in, (char*) lim, BSIZE)) != BSIZE){
	    eof = &lim[cnt]; *eof++ = '\n';
	}
	lim += cnt;
    }
    return cursor;
}

#line 73


int Scanner::echo(ostream &out){
    uchar *cursor = cur;
    tok = cursor;
echo:
{
	YYCTYPE yych;
	unsigned int yyaccept;
	goto yy0;
yy1:	++YYCURSOR;
yy0:
	if((YYLIMIT - YYCURSOR) < 7) YYFILL(7);
	yych = *YYCURSOR;
	if(yych == '\n')	goto yy4;
	if(yych != '/')	goto yy6;
yy2:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych == '*')	goto yy7;
yy3:
#line 87
	{ goto echo; }
yy4:	yych = *++YYCURSOR;
yy5:
#line 83
	{ if(cursor == eof) RETURN(0);
				  out.write(tok, cursor - tok);
				  tok = pos = cursor; cline++;
				  goto echo; }
yy6:	yych = *++YYCURSOR;
	goto yy3;
yy7:	yych = *++YYCURSOR;
	if(yych == '!')	goto yy9;
yy8:	YYCURSOR = YYMARKER;
	switch(yyaccept){
	case 0:	goto yy3;
	}
yy9:	yych = *++YYCURSOR;
	if(yych != 'r')	goto yy8;
yy10:	yych = *++YYCURSOR;
	if(yych != 'e')	goto yy8;
yy11:	yych = *++YYCURSOR;
	if(yych != '2')	goto yy8;
yy12:	yych = *++YYCURSOR;
	if(yych != 'c')	goto yy8;
yy13:	yych = *++YYCURSOR;
yy14:
#line 80
	{ out.write(tok, &cursor[-7] - tok);
				  tok = cursor;
				  RETURN(1); }
}
#line 88

}


int Scanner::scan(){
    uchar *cursor = cur;
    uint depth;

scan:
    tchar = cursor - pos;
    tline = cline;
    tok = cursor;
{
	YYCTYPE yych;
	unsigned int yyaccept;
	static unsigned char yybm[] = {
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 208,   0, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	208, 192,  64, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 192, 192, 192, 192, 192, 192, 
	192, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 192,   0, 128, 192, 192, 
	192, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 224, 224, 224, 224, 224, 
	224, 224, 224, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	};
	goto yy15;
yy16:	++YYCURSOR;
yy15:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= ':'){
		if(yych <= '"'){
			if(yych <= '\n'){
				if(yych <= '\b')	goto yy35;
				if(yych <= '\t')	goto yy31;
				goto yy33;
			} else {
				if(yych == ' ')	goto yy31;
				if(yych <= '!')	goto yy35;
				goto yy23;
			}
		} else {
			if(yych <= '*'){
				if(yych <= '\'')	goto yy35;
				if(yych <= ')')	goto yy27;
				goto yy21;
			} else {
				if(yych <= '+')	goto yy28;
				if(yych == '/')	goto yy19;
				goto yy35;
			}
		}
	} else {
		if(yych <= 'Z'){
			if(yych <= '='){
				if(yych == '<')	goto yy35;
				goto yy27;
			} else {
				if(yych == '?')	goto yy28;
				if(yych <= '@')	goto yy35;
				goto yy29;
			}
		} else {
			if(yych <= '`'){
				if(yych <= '[')	goto yy25;
				if(yych <= '\\')	goto yy27;
				goto yy35;
			} else {
				if(yych <= 'z')	goto yy29;
				if(yych <= '{')	goto yy17;
				if(yych <= '|')	goto yy27;
				goto yy35;
			}
		}
	}
yy17:	yych = *++YYCURSOR;
yy18:
#line 101
	{ depth = 1;
				  goto code;
				}
yy19:	yych = *++YYCURSOR;
	if(yych == '*')	goto yy54;
yy20:
#line 120
	{ RETURN(*tok); }
yy21:	yych = *++YYCURSOR;
	if(yych == '/')	goto yy52;
yy22:
#line 122
	{ yylval.op = *tok;
				  RETURN(CLOSE); }
yy23:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych != '\n')	goto yy48;
yy24:
#line 113
	{ fatal("bad string"); }
yy25:	yyaccept = 1;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych != '\n')	goto yy42;
yy26:
#line 118
	{ fatal("bad character constant"); }
yy27:	yych = *++YYCURSOR;
	goto yy20;
yy28:	yych = *++YYCURSOR;
	goto yy22;
yy29:	yych = *++YYCURSOR;
	goto yy40;
yy30:
#line 125
	{ cur = cursor;
				  yylval.symbol = Symbol::find(token());
				  return ID; }
yy31:	yych = *++YYCURSOR;
	goto yy38;
yy32:
#line 129
	{ goto scan; }
yy33:	yych = *++YYCURSOR;
yy34:
#line 131
	{ if(cursor == eof) RETURN(0);
				  pos = cursor; cline++;
				  goto scan;
	    			}
yy35:	yych = *++YYCURSOR;
yy36:
#line 136
	{ cerr << "unexpected character: " << *tok << endl;
				  goto scan;
				}
yy37:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy38:	if(yybm[0+yych] & 16)	goto yy37;
	goto yy32;
yy39:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy40:	if(yybm[0+yych] & 32)	goto yy39;
	goto yy30;
yy41:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy42:	if(yybm[0+yych] & 64)	goto yy41;
	if(yych <= '[')	goto yy43;
	if(yych <= '\\')	goto yy44;
	goto yy45;
yy43:	YYCURSOR = YYMARKER;
	switch(yyaccept){
	case 0:	goto yy24;
	case 1:	goto yy26;
	}
yy44:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if(yych == '\n')	goto yy43;
	goto yy41;
yy45:	yych = *++YYCURSOR;
yy46:
#line 115
	{ cur = cursor;
				  yylval.regexp = ranToRE(token());
				  return RANGE; }
yy47:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy48:	if(yybm[0+yych] & 128)	goto yy47;
	if(yych <= '!')	goto yy43;
	if(yych <= '"')	goto yy50;
yy49:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if(yych == '\n')	goto yy43;
	goto yy47;
yy50:	yych = *++YYCURSOR;
yy51:
#line 110
	{ cur = cursor;
				  yylval.regexp = strToRE(token());
				  return STRING; }
yy52:	yych = *++YYCURSOR;
yy53:
#line 107
	{ tok = cursor;
				  RETURN(0); }
yy54:	yych = *++YYCURSOR;
yy55:
#line 104
	{ depth = 1;
				  goto comment; }
}
#line 139


code:
{
	YYCTYPE yych;
	unsigned int yyaccept;
	static unsigned char yybm[] = {
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192,   0, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192,  64, 192, 192, 192, 192, 128, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192,   0, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	192, 192, 192, 192, 192, 192, 192, 192, 
	};
	goto yy56;
yy57:	++YYCURSOR;
yy56:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= '&'){
		if(yych <= '\n'){
			if(yych <= '\t')	goto yy64;
			goto yy62;
		} else {
			if(yych == '"')	goto yy66;
			goto yy64;
		}
	} else {
		if(yych <= '{'){
			if(yych <= '\'')	goto yy67;
			if(yych <= 'z')	goto yy64;
			goto yy60;
		} else {
			if(yych != '}')	goto yy64;
		}
	}
yy58:	yych = *++YYCURSOR;
yy59:
#line 143
	{ if(--depth == 0){
					cur = cursor;
					yylval.token = new Token(token(), tline);
					return CODE;
				  }
				  goto code; }
yy60:	yych = *++YYCURSOR;
yy61:
#line 149
	{ ++depth;
				  goto code; }
yy62:	yych = *++YYCURSOR;
yy63:
#line 151
	{ if(cursor == eof) fatal("missing '}'");
				  pos = cursor; cline++;
				  goto code;
				}
yy64:	yych = *++YYCURSOR;
yy65:
#line 155
	{ goto code; }
yy66:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych == '\n')	goto yy65;
	goto yy73;
yy67:	yyaccept = 0;
	yych = *(YYMARKER = ++YYCURSOR);
	if(yych == '\n')	goto yy65;
	goto yy69;
yy68:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy69:	if(yybm[0+yych] & 64)	goto yy68;
	if(yych <= '&')	goto yy70;
	if(yych <= '\'')	goto yy64;
	goto yy71;
yy70:	YYCURSOR = YYMARKER;
	switch(yyaccept){
	case 0:	goto yy65;
	}
yy71:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if(yych == '\n')	goto yy70;
	goto yy68;
yy72:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
yy73:	if(yybm[0+yych] & 128)	goto yy72;
	if(yych <= '!')	goto yy70;
	if(yych <= '"')	goto yy64;
yy74:	++YYCURSOR;
	if(YYLIMIT == YYCURSOR) YYFILL(1);
	yych = *YYCURSOR;
	if(yych == '\n')	goto yy70;
	goto yy72;
}
#line 156


comment:
{
	YYCTYPE yych;
	unsigned int yyaccept;
	goto yy75;
yy76:	++YYCURSOR;
yy75:
	if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
	yych = *YYCURSOR;
	if(yych <= ')'){
		if(yych == '\n')	goto yy80;
		goto yy82;
	} else {
		if(yych <= '*')	goto yy77;
		if(yych == '/')	goto yy79;
		goto yy82;
	}
yy77:	yych = *++YYCURSOR;
	if(yych == '/')	goto yy85;
yy78:
#line 170
	{ goto comment; }
yy79:	yych = *++YYCURSOR;
	if(yych == '*')	goto yy83;
	goto yy78;
yy80:	yych = *++YYCURSOR;
yy81:
#line 166
	{ if(cursor == eof) RETURN(0);
				  tok = pos = cursor; cline++;
				  goto comment;
				}
yy82:	yych = *++YYCURSOR;
	goto yy78;
yy83:	yych = *++YYCURSOR;
yy84:
#line 164
	{ ++depth;
				  goto comment; }
yy85:	yych = *++YYCURSOR;
yy86:
#line 160
	{ if(--depth == 0)
					goto scan;
				    else
					goto comment; }
}
#line 171

}

void Scanner::fatal(char *msg){
    cerr << "line " << tline << ", column " << (tchar + 1) << ": "
	<< msg << endl;
    exit(1);
}

⌨️ 快捷键说明

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