]> granicus.if.org Git - re2c/commitdiff
- Applied #1408278 readsome with MSVC
authorhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Tue, 17 Jan 2006 19:34:51 +0000 (19:34 +0000)
committerhelly <helly@642ea486-5414-0410-9d7f-a0204ed87703>
Tue, 17 Jan 2006 19:34:51 +0000 (19:34 +0000)
CHANGELOG
bootstrap/scanner.cc
scanner.re

index ada71428fbccb903c72bb8500c86e20530c0ef5f..cf4954f28a6c661c5b40109b926d21f0d9592d31 100644 (file)
--- 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)
index 47127b93a5ab0cff598034f253ffbb22b7a069c9..c50b2b3addc07d28f2d9d12800377f2888bc1ace 100644 (file)
@@ -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 <stdlib.h>
@@ -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"
 
 }
 
index ebe5da12165eebaf4e1ed2a16406414a702b1ab9..2d1f4e279be34ceb4b81dc564c373ead67128798 100644 (file)
@@ -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';
                }