From 119e478c4430a281b79683ac8545e6236aa3d6c0 Mon Sep 17 00:00:00 2001 From: helly Date: Tue, 17 Jan 2006 19:34:51 +0000 Subject: [PATCH] - Applied #1408278 readsome with MSVC --- CHANGELOG | 1 + bootstrap/scanner.cc | 199 ++++++++++++++++++++++--------------------- scanner.re | 3 +- 3 files changed, 103 insertions(+), 100 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ada71428..cf4954f2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ Version 0.10.0 (????-??-??) - Added support for DOS line endings. - Added experimental unicode support. - Added config_w32.h to build out of the box on windows (using msvc 2002+). +- Applied #1408278 readsome with MSVC. - Applied #1307467 Unicode patch for 0.9.7. Version 0.9.12 (2005-12-28) diff --git a/bootstrap/scanner.cc b/bootstrap/scanner.cc index 47127b93..c50b2b3a 100644 --- a/bootstrap/scanner.cc +++ b/bootstrap/scanner.cc @@ -1,4 +1,4 @@ -/* Generated by re2c 0.10.0.dev on Mon Jan 2 12:03:02 2006 */ +/* Generated by re2c 0.10.0.dev on Tue Jan 17 20:32:59 2006 */ #line 1 "scanner.re" /* $Id$ */ #include @@ -62,7 +62,8 @@ char *Scanner::fill(char *cursor) delete [] bot; bot = buf; } - if((cnt = in.readsome((char*) lim, BSIZE)) != BSIZE) + in.read(lim, BSIZE); + if ((cnt = in.gcount()) != BSIZE ) { eof = &lim[cnt]; *eof++ = '\0'; } @@ -71,7 +72,7 @@ char *Scanner::fill(char *cursor) return cursor; } -#line 90 "scanner.re" +#line 91 "scanner.re" int Scanner::echo(std::ostream &out){ @@ -87,7 +88,7 @@ int Scanner::echo(std::ostream &out){ tok = cursor; echo: -#line 91 "scanner.cc" +#line 92 "scanner.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -111,11 +112,11 @@ yy2: if(yych == '*') goto yy12; goto yy3; yy3: -#line 136 "scanner.re" +#line 137 "scanner.re" { goto echo; } -#line 119 "scanner.cc" +#line 120 "scanner.cc" yy4: yych = *++YYCURSOR; if(yych == '/') goto yy10; @@ -124,25 +125,25 @@ yy5: ++YYCURSOR; goto yy6; yy6: -#line 125 "scanner.re" +#line 126 "scanner.re" { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok)); tok = pos = cursor; cline++; oline++; goto echo; } -#line 134 "scanner.cc" +#line 135 "scanner.cc" yy7: ++YYCURSOR; goto yy8; yy8: -#line 130 "scanner.re" +#line 131 "scanner.re" { out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok) - 1); // -1 so we don't write out the \0 if(cursor == eof) { RETURN(0); } } -#line 146 "scanner.cc" +#line 147 "scanner.cc" yy9: yych = *++YYCURSOR; goto yy3; @@ -150,7 +151,7 @@ yy10: ++YYCURSOR; goto yy11; yy11: -#line 116 "scanner.re" +#line 117 "scanner.re" { if (ignore_eoc) { ignore_eoc = false; @@ -160,7 +161,7 @@ yy11: tok = pos = cursor; goto echo; } -#line 164 "scanner.cc" +#line 165 "scanner.cc" yy12: yych = *++YYCURSOR; if(yych == '!') goto yy14; @@ -195,13 +196,13 @@ yy19: ++YYCURSOR; goto yy20; yy20: -#line 105 "scanner.re" +#line 106 "scanner.re" { out.write((const char*)(tok), (const char*)(&cursor[-7]) - (const char*)(tok)); tok = cursor; RETURN(1); } -#line 205 "scanner.cc" +#line 206 "scanner.cc" yy21: yych = *++YYCURSOR; if(yych != 'x') goto yy13; @@ -230,16 +231,16 @@ yy27: ++YYCURSOR; goto yy28; yy28: -#line 110 "scanner.re" +#line 111 "scanner.re" { out << "#define YYMAXFILL " << maxFill << std::endl; tok = pos = cursor; ignore_eoc = true; goto echo; } -#line 241 "scanner.cc" +#line 242 "scanner.cc" } -#line 139 "scanner.re" +#line 140 "scanner.re" } @@ -262,7 +263,7 @@ scan: goto value; } -#line 266 "scanner.cc" +#line 267 "scanner.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -341,46 +342,46 @@ yy31: goto yy32; } yy32: -#line 161 "scanner.re" +#line 162 "scanner.re" { depth = 1; goto code; } -#line 349 "scanner.cc" +#line 350 "scanner.cc" yy33: ++YYCURSOR; if((yych = *YYCURSOR) == '*') goto yy92; goto yy34; yy34: -#line 191 "scanner.re" +#line 192 "scanner.re" { RETURN(*tok); } -#line 357 "scanner.cc" +#line 358 "scanner.cc" yy35: ++YYCURSOR; if((yych = *YYCURSOR) == '/') goto yy90; goto yy36; yy36: -#line 193 "scanner.re" +#line 194 "scanner.re" { yylval.op = *tok; RETURN(CLOSE); } -#line 366 "scanner.cc" +#line 367 "scanner.cc" yy37: yyaccept = 1; yych = *(YYMARKER = ++YYCURSOR); if(yych != 0x0A) goto yy86; goto yy38; yy38: -#line 178 "scanner.re" +#line 179 "scanner.re" { fatal("unterminated string constant (missing \")"); } -#line 375 "scanner.cc" +#line 376 "scanner.cc" yy39: yyaccept = 2; yych = *(YYMARKER = ++YYCURSOR); if(yych != 0x0A) goto yy81; goto yy40; yy40: -#line 179 "scanner.re" +#line 180 "scanner.re" { fatal("unterminated string constant (missing ')"); } -#line 384 "scanner.cc" +#line 385 "scanner.cc" yy41: yyaccept = 3; yych = *(YYMARKER = ++YYCURSOR); @@ -388,9 +389,9 @@ yy41: if(yych == '^') goto yy72; goto yy71; yy42: -#line 189 "scanner.re" +#line 190 "scanner.re" { fatal("unterminated range (missing ])"); } -#line 394 "scanner.cc" +#line 395 "scanner.cc" yy43: yych = *++YYCURSOR; goto yy34; @@ -402,11 +403,11 @@ yy45: if((yych = *YYCURSOR) == 'e') goto yy62; goto yy61; yy46: -#line 220 "scanner.re" +#line 221 "scanner.re" { cur = cursor; yylval.symbol = Symbol::find(token()); return ID; } -#line 410 "scanner.cc" +#line 411 "scanner.cc" yy47: yych = *++YYCURSOR; goto yy61; @@ -414,36 +415,36 @@ yy48: ++YYCURSOR; goto yy49; yy49: -#line 224 "scanner.re" +#line 225 "scanner.re" { cur = cursor; yylval.regexp = mkDot(); return RANGE; } -#line 423 "scanner.cc" +#line 424 "scanner.cc" yy50: ++YYCURSOR; yych = *YYCURSOR; goto yy59; yy51: -#line 229 "scanner.re" +#line 230 "scanner.re" { goto scan; } -#line 431 "scanner.cc" +#line 432 "scanner.cc" yy52: ++YYCURSOR; goto yy53; yy53: -#line 231 "scanner.re" +#line 232 "scanner.re" { if(cursor == eof) RETURN(0); pos = cursor; cline++; goto scan; } -#line 441 "scanner.cc" +#line 442 "scanner.cc" yy54: ++YYCURSOR; if((yych = *YYCURSOR) == 0x0A) goto yy57; goto yy55; yy55: -#line 236 "scanner.re" +#line 237 "scanner.re" { std::cerr << "line " << tline << ", column " << (tchar + 1) << ": unexpected character: "; if (isprint(*tok)) @@ -456,7 +457,7 @@ yy55: } goto scan; } -#line 460 "scanner.cc" +#line 461 "scanner.cc" yy56: yych = *++YYCURSOR; goto yy55; @@ -548,14 +549,14 @@ yy68: } } yy69: -#line 213 "scanner.re" +#line 214 "scanner.re" { cur = cursor; tok+= 5; /* skip "re2c:" */ iscfg = 1; yylval.str = new Str(token()); return CONFIG; } -#line 559 "scanner.cc" +#line 560 "scanner.cc" yy70: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -594,11 +595,11 @@ yy75: ++YYCURSOR; goto yy76; yy76: -#line 185 "scanner.re" +#line 186 "scanner.re" { cur = cursor; yylval.regexp = ranToRE(token()); return RANGE; } -#line 602 "scanner.cc" +#line 603 "scanner.cc" yy77: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -609,11 +610,11 @@ yy78: ++YYCURSOR; goto yy79; yy79: -#line 181 "scanner.re" +#line 182 "scanner.re" { cur = cursor; yylval.regexp = invToRE(token()); return RANGE; } -#line 617 "scanner.cc" +#line 618 "scanner.cc" yy80: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -638,11 +639,11 @@ yy83: ++YYCURSOR; goto yy84; yy84: -#line 174 "scanner.re" +#line 175 "scanner.re" { cur = cursor; yylval.regexp = strToCaseInsensitiveRE(token()); return STRING; } -#line 646 "scanner.cc" +#line 647 "scanner.cc" yy85: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -667,27 +668,27 @@ yy88: ++YYCURSOR; goto yy89; yy89: -#line 170 "scanner.re" +#line 171 "scanner.re" { cur = cursor; yylval.regexp = strToRE(token()); return STRING; } -#line 675 "scanner.cc" +#line 676 "scanner.cc" yy90: ++YYCURSOR; goto yy91; yy91: -#line 167 "scanner.re" +#line 168 "scanner.re" { tok = cursor; RETURN(0); } -#line 683 "scanner.cc" +#line 684 "scanner.cc" yy92: ++YYCURSOR; goto yy93; yy93: -#line 164 "scanner.re" +#line 165 "scanner.re" { depth = 1; goto comment; } -#line 691 "scanner.cc" +#line 692 "scanner.cc" yy94: yych = *++YYCURSOR; if(yych == ',') goto yy108; @@ -710,18 +711,18 @@ yy97: ++YYCURSOR; goto yy98; yy98: -#line 211 "scanner.re" +#line 212 "scanner.re" { fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); } -#line 716 "scanner.cc" +#line 717 "scanner.cc" yy99: ++YYCURSOR; goto yy100; yy100: -#line 199 "scanner.re" +#line 200 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = atoi((char *)tok+1); RETURN(CLOSESIZE); } -#line 725 "scanner.cc" +#line 726 "scanner.cc" yy101: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); @@ -733,11 +734,11 @@ yy102: ++YYCURSOR; goto yy103; yy103: -#line 207 "scanner.re" +#line 208 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = -1; RETURN(CLOSESIZE); } -#line 741 "scanner.cc" +#line 742 "scanner.cc" yy104: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -752,11 +753,11 @@ yy106: ++YYCURSOR; goto yy107; yy107: -#line 203 "scanner.re" +#line 204 "scanner.re" { yylval.extop.minsize = atoi((char *)tok+1); yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1)); RETURN(CLOSESIZE); } -#line 760 "scanner.cc" +#line 761 "scanner.cc" yy108: yyaccept = 6; yych = *(YYMARKER = ++YYCURSOR); @@ -768,17 +769,17 @@ yy109: ++YYCURSOR; goto yy110; yy110: -#line 196 "scanner.re" +#line 197 "scanner.re" { yylval.op = '*'; RETURN(CLOSE); } -#line 775 "scanner.cc" +#line 776 "scanner.cc" } -#line 248 "scanner.re" +#line 249 "scanner.re" code: -#line 782 "scanner.cc" +#line 783 "scanner.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -809,39 +810,39 @@ yy113: ++YYCURSOR; goto yy114; yy114: -#line 252 "scanner.re" +#line 253 "scanner.re" { if(--depth == 0){ cur = cursor; yylval.token = new Token(token(), tline); return CODE; } goto code; } -#line 820 "scanner.cc" +#line 821 "scanner.cc" yy115: ++YYCURSOR; goto yy116; yy116: -#line 258 "scanner.re" +#line 259 "scanner.re" { ++depth; goto code; } -#line 828 "scanner.cc" +#line 829 "scanner.cc" yy117: ++YYCURSOR; goto yy118; yy118: -#line 260 "scanner.re" +#line 261 "scanner.re" { if(cursor == eof) fatal("missing '}'"); pos = cursor; cline++; goto code; } -#line 838 "scanner.cc" +#line 839 "scanner.cc" yy119: ++YYCURSOR; goto yy120; yy120: -#line 264 "scanner.re" +#line 265 "scanner.re" { goto code; } -#line 845 "scanner.cc" +#line 846 "scanner.cc" yy121: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -898,12 +899,12 @@ yy129: if(yych == 0x0A) goto yy125; goto yy127; } -#line 265 "scanner.re" +#line 266 "scanner.re" comment: -#line 907 "scanner.cc" +#line 908 "scanner.cc" { YYCTYPE yych; goto yy130; @@ -924,9 +925,9 @@ yy132: if((yych = *YYCURSOR) == '/') goto yy140; goto yy133; yy133: -#line 280 "scanner.re" +#line 281 "scanner.re" { goto comment; } -#line 930 "scanner.cc" +#line 931 "scanner.cc" yy134: yych = *++YYCURSOR; if(yych == '*') goto yy138; @@ -935,12 +936,12 @@ yy135: ++YYCURSOR; goto yy136; yy136: -#line 276 "scanner.re" +#line 277 "scanner.re" { if(cursor == eof) RETURN(0); tok = pos = cursor; cline++; goto comment; } -#line 944 "scanner.cc" +#line 945 "scanner.cc" yy137: yych = *++YYCURSOR; goto yy133; @@ -948,28 +949,28 @@ yy138: ++YYCURSOR; goto yy139; yy139: -#line 273 "scanner.re" +#line 274 "scanner.re" { ++depth; fatal("ambiguous /* found"); goto comment; } -#line 956 "scanner.cc" +#line 957 "scanner.cc" yy140: ++YYCURSOR; goto yy141; yy141: -#line 269 "scanner.re" +#line 270 "scanner.re" { if(--depth == 0) goto scan; else goto comment; } -#line 966 "scanner.cc" +#line 967 "scanner.cc" } -#line 281 "scanner.re" +#line 282 "scanner.re" config: -#line 973 "scanner.cc" +#line 974 "scanner.cc" { YYCTYPE yych; goto yy142; @@ -990,27 +991,27 @@ yy144: yych = *YYCURSOR; goto yy153; yy145: -#line 285 "scanner.re" +#line 286 "scanner.re" { goto config; } -#line 996 "scanner.cc" +#line 997 "scanner.cc" yy146: ++YYCURSOR; yych = *YYCURSOR; goto yy151; yy147: -#line 286 "scanner.re" +#line 287 "scanner.re" { iscfg = 2; cur = cursor; RETURN('='); } -#line 1007 "scanner.cc" +#line 1008 "scanner.cc" yy148: ++YYCURSOR; goto yy149; yy149: -#line 290 "scanner.re" +#line 291 "scanner.re" { fatal("missing '='"); } -#line 1014 "scanner.cc" +#line 1015 "scanner.cc" yy150: ++YYCURSOR; if(YYLIMIT == YYCURSOR) YYFILL(1); @@ -1030,12 +1031,12 @@ yy153: if(yych == ' ') goto yy152; goto yy145; } -#line 291 "scanner.re" +#line 292 "scanner.re" value: -#line 1039 "scanner.cc" +#line 1040 "scanner.cc" { YYCTYPE yych; unsigned int yyaccept = 0; @@ -1075,13 +1076,13 @@ yy154: } } yy156: -#line 300 "scanner.re" +#line 301 "scanner.re" { cur = cursor; yylval.str = new Str(token()); iscfg = 0; return VALUE; } -#line 1085 "scanner.cc" +#line 1086 "scanner.cc" yy157: ++YYCURSOR; if((yych = *YYCURSOR) <= 0x0D) { @@ -1099,13 +1100,13 @@ yy157: } } yy158: -#line 295 "scanner.re" +#line 296 "scanner.re" { cur = cursor; yylval.number = atoi(token().to_string().c_str()); iscfg = 0; return NUMBER; } -#line 1109 "scanner.cc" +#line 1110 "scanner.cc" yy159: yych = *++YYCURSOR; if(yych <= '0') goto yy163; @@ -1304,7 +1305,7 @@ yy177: if(yych == 0x0A) goto yy170; goto yy174; } -#line 305 "scanner.re" +#line 306 "scanner.re" } diff --git a/scanner.re b/scanner.re index ebe5da12..2d1f4e27 100644 --- a/scanner.re +++ b/scanner.re @@ -60,7 +60,8 @@ char *Scanner::fill(char *cursor) delete [] bot; bot = buf; } - if((cnt = in.readsome((char*) lim, BSIZE)) != BSIZE) + in.read(lim, BSIZE); + if ((cnt = in.gcount()) != BSIZE ) { eof = &lim[cnt]; *eof++ = '\0'; } -- 2.40.0