-/* 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>
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';
}
return cursor;
}
-#line 90 "scanner.re"
+#line 91 "scanner.re"
int Scanner::echo(std::ostream &out){
tok = cursor;
echo:
-#line 91 "scanner.cc"
+#line 92 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
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;
++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;
++YYCURSOR;
goto yy11;
yy11:
-#line 116 "scanner.re"
+#line 117 "scanner.re"
{
if (ignore_eoc) {
ignore_eoc = false;
tok = pos = cursor;
goto echo;
}
-#line 164 "scanner.cc"
+#line 165 "scanner.cc"
yy12:
yych = *++YYCURSOR;
if(yych == '!') goto yy14;
++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;
++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"
}
goto value;
}
-#line 266 "scanner.cc"
+#line 267 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
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);
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;
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;
++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))
}
goto scan;
}
-#line 460 "scanner.cc"
+#line 461 "scanner.cc"
yy56:
yych = *++YYCURSOR;
goto yy55;
}
}
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);
++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);
++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);
++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);
++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;
++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);
++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);
++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);
++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;
++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);
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;
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;
++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;
++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;
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);
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;
}
}
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) {
}
}
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;
if(yych == 0x0A) goto yy170;
goto yy174;
}
-#line 305 "scanner.re"
+#line 306 "scanner.re"
}