-/* Generated by re2c 0.10.2.dev on Sun Apr 16 18:19:25 2006 */
+/* Generated by re2c 0.10.2.dev on Sun Apr 16 20:12:14 2006 */
#line 1 "scanner.re"
/* $Id$ */
#include <stdlib.h>
{
char *cursor = cur;
bool ignore_eoc = false;
+ int ignore_cnt = 0;
if (eof && cursor == eof) // Catch EOF
{
tok = cursor;
echo:
-#line 96 "scanner.cc"
+#line 97 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == '*') goto yy16;
yy3:
-#line 172 "scanner.re"
+#line 184 "scanner.re"
{
goto echo;
}
-#line 119 "scanner.cc"
+#line 120 "scanner.cc"
yy4:
yych = *++YYCURSOR;
if(yych == '/') goto yy10;
goto yy3;
yy5:
++YYCURSOR;
-#line 157 "scanner.re"
+#line 167 "scanner.re"
{
- if (!ignore_eoc) {
+ if (ignore_eoc) {
+ ignore_cnt++;
+ } else {
out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
}
tok = pos = cursor; cline++;
goto echo;
}
-#line 134 "scanner.cc"
+#line 137 "scanner.cc"
yy7:
++YYCURSOR;
-#line 164 "scanner.re"
+#line 176 "scanner.re"
{
if (!ignore_eoc) {
out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok) - 1); // -1 so we don't write out the \0
RETURN(0);
}
}
-#line 146 "scanner.cc"
+#line 149 "scanner.cc"
yy9:
yych = *++YYCURSOR;
goto yy3;
if(yych == 0x0A) goto yy14;
if(yych == 0x0D) goto yy12;
yy11:
-#line 148 "scanner.re"
+#line 154 "scanner.re"
{
if (ignore_eoc) {
+ if (ignore_cnt) {
+ out << "\n" << sourceFileInfo;
+ }
ignore_eoc = false;
+ ignore_cnt = 0;
} else {
out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
}
tok = pos = cursor;
goto echo;
}
-#line 166 "scanner.cc"
+#line 173 "scanner.cc"
yy12:
yych = *++YYCURSOR;
if(yych == 0x0A) goto yy14;
}
yy14:
++YYCURSOR;
-#line 139 "scanner.re"
+#line 140 "scanner.re"
{
+ cline++;
if (ignore_eoc) {
+ if (ignore_cnt) {
+ out << sourceFileInfo;
+ }
ignore_eoc = false;
+ ignore_cnt = 0;
} else {
out.write((const char*)(tok), (const char*)(cursor) - (const char*)(tok));
}
- tok = pos = cursor; cline++;
+ tok = pos = cursor;
goto echo;
}
-#line 188 "scanner.cc"
+#line 200 "scanner.cc"
yy16:
yych = *++YYCURSOR;
if(yych != '!') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 110 "scanner.re"
+#line 111 "scanner.re"
{
if (bUsedYYMaxFill && bSinglePass) {
fatal("found scanner block after YYMAXFILL declaration");
tok = cursor;
RETURN(1);
}
-#line 229 "scanner.cc"
+#line 241 "scanner.cc"
yy26:
yych = *++YYCURSOR;
if(yych != 'x') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 118 "scanner.re"
+#line 119 "scanner.re"
{
if (bUsedYYMaxFill) {
fatal("cannot generate YYMAXFILL twice");
bUsedYYMaxFill = true;
goto echo;
}
-#line 255 "scanner.cc"
+#line 267 "scanner.cc"
yy34:
yych = *++YYCURSOR;
if(yych != 't') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 128 "scanner.re"
+#line 129 "scanner.re"
{
tok = pos = cursor;
genGetState(out, topIndent, 0);
ignore_eoc = true;
goto echo;
}
-#line 287 "scanner.cc"
+#line 299 "scanner.cc"
yy47:
yych = *++YYCURSOR;
if(yych != 'n') goto yy13;
yych = *++YYCURSOR;
if(yych != 'c') goto yy13;
++YYCURSOR;
-#line 134 "scanner.re"
+#line 135 "scanner.re"
{
tok = pos = cursor;
ignore_eoc = true;
goto echo;
}
-#line 314 "scanner.cc"
+#line 326 "scanner.cc"
}
-#line 175 "scanner.re"
+#line 187 "scanner.re"
}
goto value;
}
-#line 339 "scanner.cc"
+#line 351 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
if(yych <= '9') goto yy124;
}
yy61:
-#line 197 "scanner.re"
+#line 209 "scanner.re"
{ depth = 1;
goto code;
}
-#line 417 "scanner.cc"
+#line 429 "scanner.cc"
yy62:
++YYCURSOR;
if((yych = *YYCURSOR) == '*') goto yy121;
yy63:
-#line 227 "scanner.re"
+#line 239 "scanner.re"
{ RETURN(*tok); }
-#line 424 "scanner.cc"
+#line 436 "scanner.cc"
yy64:
++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy119;
yy65:
-#line 229 "scanner.re"
+#line 241 "scanner.re"
{ yylval.op = *tok;
RETURN(CLOSE); }
-#line 432 "scanner.cc"
+#line 444 "scanner.cc"
yy66:
yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy115;
yy67:
-#line 214 "scanner.re"
+#line 226 "scanner.re"
{ fatal("unterminated string constant (missing \")"); }
-#line 440 "scanner.cc"
+#line 452 "scanner.cc"
yy68:
yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy110;
yy69:
-#line 215 "scanner.re"
+#line 227 "scanner.re"
{ fatal("unterminated string constant (missing ')"); }
-#line 448 "scanner.cc"
+#line 460 "scanner.cc"
yy70:
yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == '^') goto yy101;
goto yy100;
yy71:
-#line 225 "scanner.re"
+#line 237 "scanner.re"
{ fatal("unterminated range (missing ])"); }
-#line 458 "scanner.cc"
+#line 470 "scanner.cc"
yy72:
yych = *++YYCURSOR;
goto yy63;
if((yych = *YYCURSOR) == 'e') goto yy91;
goto yy90;
yy75:
-#line 256 "scanner.re"
+#line 268 "scanner.re"
{ cur = cursor;
yylval.symbol = Symbol::find(token());
return ID; }
-#line 474 "scanner.cc"
+#line 486 "scanner.cc"
yy76:
yych = *++YYCURSOR;
goto yy90;
yy77:
++YYCURSOR;
-#line 260 "scanner.re"
+#line 272 "scanner.re"
{ cur = cursor;
yylval.regexp = mkDot();
return RANGE;
}
-#line 485 "scanner.cc"
+#line 497 "scanner.cc"
yy79:
++YYCURSOR;
yych = *YYCURSOR;
goto yy88;
yy80:
-#line 265 "scanner.re"
+#line 277 "scanner.re"
{ goto scan; }
-#line 493 "scanner.cc"
+#line 505 "scanner.cc"
yy81:
++YYCURSOR;
yy82:
-#line 267 "scanner.re"
+#line 279 "scanner.re"
{ if(cursor == eof) RETURN(0);
pos = cursor; cline++;
goto scan;
}
-#line 502 "scanner.cc"
+#line 514 "scanner.cc"
yy83:
++YYCURSOR;
if((yych = *YYCURSOR) == 0x0A) goto yy86;
yy84:
-#line 272 "scanner.re"
+#line 284 "scanner.re"
{ std::ostringstream msg;
msg << "unexpected character: ";
prtChOrHex(msg, *tok);
fatal(msg.str().c_str());
goto scan;
}
-#line 514 "scanner.cc"
+#line 526 "scanner.cc"
yy85:
yych = *++YYCURSOR;
goto yy84;
}
}
yy98:
-#line 249 "scanner.re"
+#line 261 "scanner.re"
{ cur = cursor;
tok+= 5; /* skip "re2c:" */
iscfg = 1;
yylval.str = new Str(token());
return CONFIG;
}
-#line 599 "scanner.cc"
+#line 611 "scanner.cc"
yy99:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy99;
yy104:
++YYCURSOR;
-#line 221 "scanner.re"
+#line 233 "scanner.re"
{ cur = cursor;
yylval.regexp = ranToRE(token());
return RANGE; }
-#line 637 "scanner.cc"
+#line 649 "scanner.cc"
yy106:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy101;
yy107:
++YYCURSOR;
-#line 217 "scanner.re"
+#line 229 "scanner.re"
{ cur = cursor;
yylval.regexp = invToRE(token());
return RANGE; }
-#line 650 "scanner.cc"
+#line 662 "scanner.cc"
yy109:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy109;
yy112:
++YYCURSOR;
-#line 210 "scanner.re"
+#line 222 "scanner.re"
{ cur = cursor;
yylval.regexp = strToCaseInsensitiveRE(token());
return STRING; }
-#line 674 "scanner.cc"
+#line 686 "scanner.cc"
yy114:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
goto yy114;
yy117:
++YYCURSOR;
-#line 206 "scanner.re"
+#line 218 "scanner.re"
{ cur = cursor;
yylval.regexp = strToRE(token());
return STRING; }
-#line 698 "scanner.cc"
+#line 710 "scanner.cc"
yy119:
++YYCURSOR;
-#line 203 "scanner.re"
+#line 215 "scanner.re"
{ tok = cursor;
RETURN(0); }
-#line 704 "scanner.cc"
+#line 716 "scanner.cc"
yy121:
++YYCURSOR;
-#line 200 "scanner.re"
+#line 212 "scanner.re"
{ depth = 1;
goto comment; }
-#line 710 "scanner.cc"
+#line 722 "scanner.cc"
yy123:
yych = *++YYCURSOR;
if(yych == ',') goto yy137;
yy126:
++YYCURSOR;
yy127:
-#line 247 "scanner.re"
+#line 259 "scanner.re"
{ fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }
-#line 733 "scanner.cc"
+#line 745 "scanner.cc"
yy128:
++YYCURSOR;
-#line 235 "scanner.re"
+#line 247 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = atoi((char *)tok+1);
RETURN(CLOSESIZE); }
-#line 740 "scanner.cc"
+#line 752 "scanner.cc"
yy130:
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9') goto yy133;
if(yych != '}') goto yy127;
++YYCURSOR;
-#line 243 "scanner.re"
+#line 255 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = -1;
RETURN(CLOSESIZE); }
-#line 752 "scanner.cc"
+#line 764 "scanner.cc"
yy133:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
if(yych <= '9') goto yy133;
if(yych != '}') goto yy95;
++YYCURSOR;
-#line 239 "scanner.re"
+#line 251 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
RETURN(CLOSESIZE); }
-#line 765 "scanner.cc"
+#line 777 "scanner.cc"
yy137:
yyaccept = 6;
yych = *(YYMARKER = ++YYCURSOR);
if(yych <= '9') goto yy133;
if(yych != '}') goto yy127;
++YYCURSOR;
-#line 232 "scanner.re"
+#line 244 "scanner.re"
{ yylval.op = '*';
RETURN(CLOSE); }
-#line 776 "scanner.cc"
+#line 788 "scanner.cc"
}
-#line 278 "scanner.re"
+#line 290 "scanner.re"
code:
-#line 783 "scanner.cc"
+#line 795 "scanner.cc"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
}
++YYCURSOR;
-#line 282 "scanner.re"
+#line 294 "scanner.re"
{ if(--depth == 0){
cur = cursor;
yylval.token = new Token(token(), tline);
return CODE;
}
goto code; }
-#line 813 "scanner.cc"
+#line 825 "scanner.cc"
yy144:
++YYCURSOR;
-#line 288 "scanner.re"
+#line 300 "scanner.re"
{ ++depth;
goto code; }
-#line 819 "scanner.cc"
+#line 831 "scanner.cc"
yy146:
++YYCURSOR;
-#line 290 "scanner.re"
+#line 302 "scanner.re"
{ if(cursor == eof) fatal("missing '}'");
pos = cursor; cline++;
goto code;
}
-#line 827 "scanner.cc"
+#line 839 "scanner.cc"
yy148:
++YYCURSOR;
yy149:
-#line 294 "scanner.re"
+#line 306 "scanner.re"
{ goto code; }
-#line 833 "scanner.cc"
+#line 845 "scanner.cc"
yy150:
yych = *(YYMARKER = ++YYCURSOR);
if(yych == 0x0A) goto yy149;
if(yych == 0x0A) goto yy154;
goto yy156;
}
-#line 295 "scanner.re"
+#line 307 "scanner.re"
comment:
-#line 886 "scanner.cc"
+#line 898 "scanner.cc"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy169;
yy162:
-#line 310 "scanner.re"
+#line 322 "scanner.re"
{ if(cursor == eof) RETURN(0);
goto comment; }
-#line 906 "scanner.cc"
+#line 918 "scanner.cc"
yy163:
yych = *++YYCURSOR;
if(yych == '*') goto yy167;
goto yy162;
yy164:
++YYCURSOR;
-#line 306 "scanner.re"
+#line 318 "scanner.re"
{ if(cursor == eof) RETURN(0);
tok = pos = cursor; cline++;
goto comment;
}
-#line 918 "scanner.cc"
+#line 930 "scanner.cc"
yy166:
yych = *++YYCURSOR;
goto yy162;
yy167:
++YYCURSOR;
-#line 303 "scanner.re"
+#line 315 "scanner.re"
{ ++depth;
fatal("ambiguous /* found");
goto comment; }
-#line 928 "scanner.cc"
+#line 940 "scanner.cc"
yy169:
++YYCURSOR;
-#line 299 "scanner.re"
+#line 311 "scanner.re"
{ if(--depth == 0)
goto scan;
else
goto comment; }
-#line 936 "scanner.cc"
+#line 948 "scanner.cc"
}
-#line 312 "scanner.re"
+#line 324 "scanner.re"
config:
-#line 943 "scanner.cc"
+#line 955 "scanner.cc"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy182;
yy174:
-#line 316 "scanner.re"
+#line 328 "scanner.re"
{ goto config; }
-#line 962 "scanner.cc"
+#line 974 "scanner.cc"
yy175:
++YYCURSOR;
yych = *YYCURSOR;
goto yy180;
yy176:
-#line 317 "scanner.re"
+#line 329 "scanner.re"
{ iscfg = 2;
cur = cursor;
RETURN('=');
}
-#line 973 "scanner.cc"
+#line 985 "scanner.cc"
yy177:
++YYCURSOR;
-#line 321 "scanner.re"
+#line 333 "scanner.re"
{ fatal("missing '='"); }
-#line 978 "scanner.cc"
+#line 990 "scanner.cc"
yy179:
++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
if(yych == ' ') goto yy181;
goto yy174;
}
-#line 322 "scanner.re"
+#line 334 "scanner.re"
value:
-#line 1001 "scanner.cc"
+#line 1013 "scanner.cc"
{
YYCTYPE yych;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
}
}
yy185:
-#line 331 "scanner.re"
+#line 343 "scanner.re"
{ cur = cursor;
yylval.str = new Str(token());
iscfg = 0;
return VALUE;
}
-#line 1040 "scanner.cc"
+#line 1052 "scanner.cc"
yy186:
++YYCURSOR;
if((yych = *YYCURSOR) <= 0x0D) {
}
}
yy187:
-#line 326 "scanner.re"
+#line 338 "scanner.re"
{ cur = cursor;
yylval.number = atoi(token().to_string().c_str());
iscfg = 0;
return NUMBER;
}
-#line 1061 "scanner.cc"
+#line 1073 "scanner.cc"
yy188:
yych = *++YYCURSOR;
if(yych <= '0') goto yy192;
if(yych == 0x0A) goto yy199;
goto yy203;
}
-#line 336 "scanner.re"
+#line 348 "scanner.re"
}