-/* Generated by re2c 0.13.0.dev on Sun May 6 23:11:01 2007 */
-#line 1 "scanner.re"
+/* Generated by re2c 0.13.0.dev on Mon May 7 00:59:10 2007 */
/* $Id$ */
#include <stdlib.h>
#include <string.h>
return cursor;
}
-#line 98 "scanner.re"
int Scanner::echo()
tok = cursor;
echo:
-#line 99 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == '*') goto yy16;
yy3:
-#line 221 "scanner.re"
{
goto echo;
}
-#line 122 "scanner.cc"
yy4:
yych = *++YYCURSOR;
if(yych == '/') goto yy10;
goto yy3;
yy5:
++YYCURSOR;
-#line 197 "scanner.re"
{
if (ignore_eoc)
{
cline++;
goto echo;
}
-#line 143 "scanner.cc"
yy7:
++YYCURSOR;
-#line 210 "scanner.re"
{
if (!ignore_eoc)
{
RETURN(0);
}
}
-#line 158 "scanner.cc"
yy9:
yych = *++YYCURSOR;
goto yy3;
if(yych == 0x0A) goto yy14;
if(yych == 0x0D) goto yy12;
yy11:
-#line 180 "scanner.re"
{
if (ignore_eoc)
{
tok = pos = cursor;
goto echo;
}
-#line 186 "scanner.cc"
yy12:
yych = *++YYCURSOR;
if(yych == 0x0A) goto yy14;
}
yy14:
++YYCURSOR;
-#line 162 "scanner.re"
{
cline++;
if (ignore_eoc)
tok = pos = cursor;
goto echo;
}
-#line 218 "scanner.cc"
yy16:
yych = *++YYCURSOR;
if(yych != '!') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 114 "scanner.re"
{
if (bUsedYYMaxFill && bSinglePass)
{
tok = cursor;
RETURN(1);
}
-#line 265 "scanner.cc"
yy27:
yych = *++YYCURSOR;
if(yych != 'x') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 123 "scanner.re"
{
if (bUsedYYMaxFill)
{
bUsedYYMaxFill = true;
goto echo;
}
-#line 292 "scanner.cc"
yy35:
yych = *++YYCURSOR;
if(yych != 't') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 134 "scanner.re"
{
tok = pos = cursor;
genGetStateGoto(out, topIndent, 0);
ignore_eoc = true;
goto echo;
}
-#line 324 "scanner.cc"
yy48:
yych = *++YYCURSOR;
if(yych != 'n') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 140 "scanner.re"
{
tok = pos = cursor;
ignore_eoc = true;
goto echo;
}
-#line 351 "scanner.cc"
yy59:
yych = *++YYCURSOR;
if(yych != 'p') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 145 "scanner.re"
{
if (bSinglePass)
{
}
goto echo;
}
-#line 388 "scanner.cc"
}
-#line 224 "scanner.re"
}
goto value;
}
-#line 413 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
if(yych <= '9') goto yy145;
}
yy72:
-#line 246 "scanner.re"
{
depth = 1;
goto code;
}
-#line 535 "scanner.cc"
yy73:
++YYCURSOR;
if((yych = *YYCURSOR) == '*') goto yy142;
yy74:
-#line 299 "scanner.re"
{
RETURN(*tok);
}
-#line 544 "scanner.cc"
yy75:
++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy140;
-#line 303 "scanner.re"
{
yylval.op = *tok;
RETURN(STAR);
}
-#line 553 "scanner.cc"
yy77:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy136;
yy78:
-#line 273 "scanner.re"
{
fatal("unterminated string constant (missing \")");
}
-#line 563 "scanner.cc"
yy79:
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy131;
yy80:
-#line 276 "scanner.re"
{
fatal("unterminated string constant (missing ')");
}
-#line 573 "scanner.cc"
yy81:
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == '^') goto yy122;
goto yy121;
yy82:
-#line 292 "scanner.re"
{
fatal("unterminated range (missing ])");
}
-#line 585 "scanner.cc"
yy83:
yyaccept = 4;
yych = *(YYMARKER = ++YYCURSOR);
goto yy74;
yy85:
++YYCURSOR;
-#line 307 "scanner.re"
{
yylval.op = *tok;
RETURN(CLOSE);
}
-#line 601 "scanner.cc"
yy87:
++YYCURSOR;
if((yych = *YYCURSOR) == 'e') goto yy104;
goto yy103;
yy88:
-#line 347 "scanner.re"
{
cur = cursor;
yylval.symbol = Symbol::find(token());
return ID;
}
-#line 613 "scanner.cc"
yy89:
yych = *++YYCURSOR;
goto yy103;
yy90:
++YYCURSOR;
-#line 353 "scanner.re"
{
cur = cursor;
yylval.regexp = mkDot();
return RANGE;
}
-#line 625 "scanner.cc"
yy92:
++YYCURSOR;
yych = *YYCURSOR;
goto yy101;
yy93:
-#line 359 "scanner.re"
{
goto scan;
}
-#line 635 "scanner.cc"
yy94:
++YYCURSOR;
yy95:
-#line 363 "scanner.re"
{
if(cursor == eof) RETURN(0);
pos = cursor;
cline++;
goto scan;
}
-#line 646 "scanner.cc"
yy96:
++YYCURSOR;
if((yych = *YYCURSOR) == 0x0A) goto yy99;
yy97:
-#line 370 "scanner.re"
{
std::ostringstream msg;
msg << "unexpected character: ";
fatal(msg.str().c_str());
goto scan;
}
-#line 659 "scanner.cc"
yy98:
yych = *++YYCURSOR;
goto yy97;
}
}
yy111:
-#line 339 "scanner.re"
{
cur = cursor;
tok+= 5; /* skip "re2c:" */
yylval.str = new Str(token());
return CONFIG;
}
-#line 764 "scanner.cc"
yy112:
yych = *++YYCURSOR;
if(yych <= '^') {
if(yych != '{') goto yy108;
++YYCURSOR;
YYCURSOR = YYCTXMARKER;
-#line 296 "scanner.re"
{
RETURN(NOCOND);
}
-#line 812 "scanner.cc"
yy120:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy120;
yy125:
++YYCURSOR;
-#line 286 "scanner.re"
{
cur = cursor;
yylval.regexp = ranToRE(token());
return RANGE;
}
-#line 850 "scanner.cc"
yy127:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy122;
yy128:
++YYCURSOR;
-#line 280 "scanner.re"
{
cur = cursor;
yylval.regexp = invToRE(token());
return RANGE;
}
-#line 865 "scanner.cc"
yy130:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy130;
yy133:
++YYCURSOR;
-#line 267 "scanner.re"
{
cur = cursor;
yylval.regexp = strToCaseInsensitiveRE(token());
return STRING;
}
-#line 889 "scanner.cc"
yy135:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy135;
yy138:
++YYCURSOR;
-#line 261 "scanner.re"
{
cur = cursor;
yylval.regexp = strToRE(token());
return STRING;
}
-#line 913 "scanner.cc"
yy140:
++YYCURSOR;
-#line 256 "scanner.re"
{
tok = cursor;
RETURN(0);
}
-#line 921 "scanner.cc"
yy142:
++YYCURSOR;
-#line 251 "scanner.re"
{
depth = 1;
goto comment;
}
-#line 929 "scanner.cc"
yy144:
yych = *++YYCURSOR;
if(yych == ',') goto yy158;
yy147:
++YYCURSOR;
yy148:
-#line 335 "scanner.re"
{
fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
}
-#line 952 "scanner.cc"
yy149:
++YYCURSOR;
-#line 317 "scanner.re"
{
yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = atoi((char *)tok+1);
RETURN(CLOSESIZE);
}
-#line 961 "scanner.cc"
yy151:
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9') goto yy154;
if(yych != '}') goto yy148;
++YYCURSOR;
-#line 329 "scanner.re"
{
yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = -1;
RETURN(CLOSESIZE);
}
-#line 975 "scanner.cc"
yy154:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
if(yych <= '9') goto yy154;
if(yych != '}') goto yy108;
++YYCURSOR;
-#line 323 "scanner.re"
{
yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
RETURN(CLOSESIZE);
}
-#line 990 "scanner.cc"
yy158:
yyaccept = 7;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9') goto yy154;
if(yych != '}') goto yy148;
++YYCURSOR;
-#line 312 "scanner.re"
{
yylval.op = '*';
RETURN(CLOSE);
}
-#line 1003 "scanner.cc"
}
-#line 377 "scanner.re"
code:
-#line 1010 "scanner.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
++YYCURSOR;
-#line 381 "scanner.re"
{
if(--depth == 0)
{
}
goto code;
}
-#line 1078 "scanner.cc"
yy165:
++YYCURSOR;
-#line 390 "scanner.re"
{
++depth;
goto code;
}
-#line 1086 "scanner.cc"
yy167:
++YYCURSOR;
-#line 394 "scanner.re"
{
if(cursor == eof)
{
cline++;
goto code;
}
-#line 1099 "scanner.cc"
yy169:
++YYCURSOR;
-#line 403 "scanner.re"
{
if(cursor == eof)
{
}
goto code;
}
-#line 1114 "scanner.cc"
yy171:
++YYCURSOR;
yy172:
-#line 414 "scanner.re"
{
goto code;
}
-#line 1122 "scanner.cc"
yy173:
yych = *(YYMARKER = ++YYCURSOR);
if(yych == 0x0A) goto yy172;
if(yych == 0x0A) goto yy177;
goto yy179;
}
-#line 417 "scanner.re"
comment:
-#line 1172 "scanner.cc"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy192;
yy185:
-#line 445 "scanner.re"
{
if(cursor == eof)
{
}
goto comment;
}
-#line 1197 "scanner.cc"
yy186:
yych = *++YYCURSOR;
if(yych == '*') goto yy190;
goto yy185;
yy187:
++YYCURSOR;
-#line 436 "scanner.re"
{
if(cursor == eof)
{
cline++;
goto comment;
}
-#line 1214 "scanner.cc"
yy189:
yych = *++YYCURSOR;
goto yy185;
yy190:
++YYCURSOR;
-#line 431 "scanner.re"
{
++depth;
fatal("ambiguous /* found");
goto comment;
}
-#line 1226 "scanner.cc"
yy192:
++YYCURSOR;
-#line 421 "scanner.re"
{
if(--depth == 0)
{
goto comment;
}
}
-#line 1240 "scanner.cc"
}
-#line 452 "scanner.re"
config:
-#line 1247 "scanner.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
yych = *YYCURSOR;
goto yy205;
yy197:
-#line 456 "scanner.re"
{
goto config;
}
-#line 1302 "scanner.cc"
yy198:
++YYCURSOR;
yych = *YYCURSOR;
goto yy203;
yy199:
-#line 459 "scanner.re"
{
iscfg = 2;
cur = cursor;
RETURN('=');
}
-#line 1314 "scanner.cc"
yy200:
++YYCURSOR;
-#line 464 "scanner.re"
{
fatal("missing '='");
}
-#line 1321 "scanner.cc"
yy202:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
if(yych == ' ') goto yy204;
goto yy197;
}
-#line 467 "scanner.re"
value:
-#line 1345 "scanner.cc"
{
YYCTYPE yych;
static const unsigned char yybm[] = {
}
}
yy208:
-#line 477 "scanner.re"
{
cur = cursor;
yylval.str = new Str(token());
iscfg = 0;
return VALUE;
}
-#line 1419 "scanner.cc"
yy209:
++YYCURSOR;
if(yybm[0+(yych = *YYCURSOR)] & 8) {
goto yy214;
}
yy210:
-#line 471 "scanner.re"
{
cur = cursor;
yylval.number = atoi(token().to_string().c_str());
iscfg = 0;
return NUMBER;
}
-#line 1433 "scanner.cc"
yy211:
yych = *++YYCURSOR;
if(yych <= '0') goto yy215;
if(yych == 0x0A) goto yy222;
goto yy226;
}
-#line 483 "scanner.re"
}