-/* Generated by re2c 0.9.12.dev on Tue Dec 27 23:51:46 2005 */
+/* Generated by re2c 0.9.12.dev on Wed Dec 28 00:53:17 2005 */
#line 1 "scanner.re"
/* $Id$ */
#include <stdlib.h>
}
yy31: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych <= '/') goto yy32;
- if(yych <= '0') goto yy84;
- if(yych <= '9') goto yy85;
- goto yy32;
+ if(yych <= '/'){
+ if(yych == ',') goto yy87;
+ goto yy32;
+ } else {
+ if(yych <= '0') goto yy84;
+ if(yych <= '9') goto yy85;
+ goto yy32;
+ }
yy32:
#line 139 "scanner.re"
{ depth = 1;
goto code;
}
-#line 298 "scanner.cc"
+#line 302 "scanner.cc"
yy33: ++YYCURSOR;
if((yych = *YYCURSOR) == '*') goto yy82;
goto yy34;
yy34:
#line 169 "scanner.re"
{ RETURN(*tok); }
-#line 305 "scanner.cc"
+#line 309 "scanner.cc"
yy35: ++YYCURSOR;
if((yych = *YYCURSOR) == '/') goto yy80;
goto yy36;
#line 171 "scanner.re"
{ yylval.op = *tok;
RETURN(CLOSE); }
-#line 313 "scanner.cc"
+#line 317 "scanner.cc"
yy37: yyaccept = 1;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy76;
yy38:
#line 156 "scanner.re"
{ fatal("unterminated string constant (missing \")"); }
-#line 321 "scanner.cc"
+#line 325 "scanner.cc"
yy39: yyaccept = 2;
yych = *(YYMARKER = ++YYCURSOR);
if(yych != 0x0A) goto yy71;
yy40:
#line 157 "scanner.re"
{ fatal("unterminated string constant (missing ')"); }
-#line 329 "scanner.cc"
+#line 333 "scanner.cc"
yy41: yyaccept = 3;
yych = *(YYMARKER = ++YYCURSOR);
if(yych == 0x0A) goto yy42;
yy42:
#line 167 "scanner.re"
{ fatal("unterminated range (missing ])"); }
-#line 338 "scanner.cc"
+#line 342 "scanner.cc"
yy43: yych = *++YYCURSOR;
goto yy34;
yy44: yych = *++YYCURSOR;
yych = *YYCURSOR;
goto yy58;
yy46:
-#line 189 "scanner.re"
+#line 191 "scanner.re"
{ cur = cursor;
yylval.symbol = Symbol::find(token());
return ID; }
-#line 351 "scanner.cc"
+#line 355 "scanner.cc"
yy47: ++YYCURSOR;
goto yy48;
yy48:
-#line 193 "scanner.re"
+#line 195 "scanner.re"
{ cur = cursor;
yylval.regexp = mkDot();
return RANGE;
}
-#line 360 "scanner.cc"
+#line 364 "scanner.cc"
yy49: ++YYCURSOR;
yych = *YYCURSOR;
goto yy56;
yy50:
-#line 198 "scanner.re"
+#line 200 "scanner.re"
{ goto scan; }
-#line 367 "scanner.cc"
+#line 371 "scanner.cc"
yy51: ++YYCURSOR;
goto yy52;
yy52:
-#line 200 "scanner.re"
+#line 202 "scanner.re"
{ if(cursor == eof) RETURN(0);
pos = cursor; cline++;
goto scan;
}
-#line 376 "scanner.cc"
+#line 380 "scanner.cc"
yy53: ++YYCURSOR;
goto yy54;
yy54:
-#line 205 "scanner.re"
+#line 207 "scanner.re"
{ std::cerr << "unexpected character: " << *tok << std::endl;
goto scan;
}
-#line 384 "scanner.cc"
+#line 388 "scanner.cc"
yy55: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
case 1: goto yy38;
case 2: goto yy40;
case 3: goto yy42;
+ case 4: goto yy88;
}
yy62: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
{ cur = cursor;
yylval.regexp = ranToRE(token());
return RANGE; }
-#line 449 "scanner.cc"
+#line 454 "scanner.cc"
yy67: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
{ cur = cursor;
yylval.regexp = invToRE(token());
return RANGE; }
-#line 462 "scanner.cc"
+#line 467 "scanner.cc"
yy70: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
{ cur = cursor;
yylval.regexp = strToCaseInsensitiveRE(token());
return STRING; }
-#line 487 "scanner.cc"
+#line 492 "scanner.cc"
yy75: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
{ cur = cursor;
yylval.regexp = strToRE(token());
return STRING; }
-#line 512 "scanner.cc"
+#line 517 "scanner.cc"
yy80: ++YYCURSOR;
goto yy81;
yy81:
#line 145 "scanner.re"
{ tok = cursor;
RETURN(0); }
-#line 519 "scanner.cc"
+#line 524 "scanner.cc"
yy82: ++YYCURSOR;
goto yy83;
yy83:
#line 142 "scanner.re"
{ depth = 1;
goto comment; }
-#line 526 "scanner.cc"
+#line 531 "scanner.cc"
yy84: yych = *++YYCURSOR;
- if(yych == ',') goto yy96;
+ if(yych == ',') goto yy98;
goto yy86;
yy85: ++YYCURSOR;
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
goto yy86;
yy86: if(yych <= '/'){
- if(yych == ',') goto yy89;
+ if(yych == ',') goto yy91;
goto yy61;
} else {
if(yych <= '9') goto yy85;
- if(yych != '}') goto yy61;
- goto yy87;
+ if(yych == '}') goto yy89;
+ goto yy61;
}
yy87: ++YYCURSOR;
goto yy88;
yy88:
+#line 189 "scanner.re"
+{ fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers"); }
+#line 552 "scanner.cc"
+yy89: ++YYCURSOR;
+ goto yy90;
+yy90:
#line 177 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = atoi((char *)tok+1);
RETURN(CLOSESIZE); }
-#line 549 "scanner.cc"
-yy89: yych = *++YYCURSOR;
- if(yych != '}') goto yy93;
- goto yy90;
-yy90: ++YYCURSOR;
- goto yy91;
-yy91:
+#line 560 "scanner.cc"
+yy91: yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/') goto yy88;
+ if(yych <= '9') goto yy94;
+ if(yych != '}') goto yy88;
+ goto yy92;
+yy92: ++YYCURSOR;
+ goto yy93;
+yy93:
#line 185 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = -1;
RETURN(CLOSESIZE); }
-#line 560 "scanner.cc"
-yy92: ++YYCURSOR;
+#line 574 "scanner.cc"
+yy94: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy93;
-yy93: if(yych <= '/') goto yy61;
- if(yych <= '9') goto yy92;
- if(yych != '}') goto yy61;
- goto yy94;
-yy94: ++YYCURSOR;
goto yy95;
-yy95:
+yy95: if(yych <= '/') goto yy61;
+ if(yych <= '9') goto yy94;
+ if(yych != '}') goto yy61;
+ goto yy96;
+yy96: ++YYCURSOR;
+ goto yy97;
+yy97:
#line 181 "scanner.re"
{ yylval.extop.minsize = atoi((char *)tok+1);
yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
RETURN(CLOSESIZE); }
-#line 576 "scanner.cc"
-yy96: yych = *++YYCURSOR;
- if(yych != '}') goto yy93;
- goto yy97;
-yy97: ++YYCURSOR;
- goto yy98;
-yy98:
+#line 590 "scanner.cc"
+yy98: yyaccept = 4;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if(yych <= '/') goto yy88;
+ if(yych <= '9') goto yy94;
+ if(yych != '}') goto yy88;
+ goto yy99;
+yy99: ++YYCURSOR;
+ goto yy100;
+yy100:
#line 174 "scanner.re"
{ yylval.op = '*';
RETURN(CLOSE); }
-#line 586 "scanner.cc"
+#line 603 "scanner.cc"
}
-#line 208 "scanner.re"
+#line 210 "scanner.re"
code:
-#line 593 "scanner.cc"
+#line 610 "scanner.cc"
{
YYCTYPE yych;
unsigned int yyaccept = 0;
- goto yy99;
+ goto yy101;
++YYCURSOR;
-yy99:
+yy101:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if(yych <= '&'){
if(yych <= 0x0A){
- if(yych <= 0x09) goto yy107;
- goto yy105;
- } else {
- if(yych == '"') goto yy109;
+ if(yych <= 0x09) goto yy109;
goto yy107;
+ } else {
+ if(yych == '"') goto yy111;
+ goto yy109;
}
} else {
if(yych <= '{'){
- if(yych <= '\'') goto yy110;
- if(yych <= 'z') goto yy107;
- goto yy103;
+ if(yych <= '\'') goto yy112;
+ if(yych <= 'z') goto yy109;
+ goto yy105;
} else {
- if(yych != '}') goto yy107;
- goto yy101;
+ if(yych != '}') goto yy109;
+ goto yy103;
}
}
-yy101: ++YYCURSOR;
- goto yy102;
-yy102:
-#line 212 "scanner.re"
+yy103: ++YYCURSOR;
+ goto yy104;
+yy104:
+#line 214 "scanner.re"
{ if(--depth == 0){
cur = cursor;
yylval.token = new Token(token(), tline);
return CODE;
}
goto code; }
-#line 630 "scanner.cc"
-yy103: ++YYCURSOR;
- goto yy104;
-yy104:
-#line 218 "scanner.re"
-{ ++depth;
- goto code; }
-#line 637 "scanner.cc"
+#line 647 "scanner.cc"
yy105: ++YYCURSOR;
goto yy106;
yy106:
#line 220 "scanner.re"
+{ ++depth;
+ goto code; }
+#line 654 "scanner.cc"
+yy107: ++YYCURSOR;
+ goto yy108;
+yy108:
+#line 222 "scanner.re"
{ if(cursor == eof) fatal("missing '}'");
pos = cursor; cline++;
goto code;
}
-#line 646 "scanner.cc"
-yy107: ++YYCURSOR;
- goto yy108;
-yy108:
-#line 224 "scanner.re"
+#line 663 "scanner.cc"
+yy109: ++YYCURSOR;
+ goto yy110;
+yy110:
+#line 226 "scanner.re"
{ goto code; }
-#line 652 "scanner.cc"
-yy109: yyaccept = 0;
+#line 669 "scanner.cc"
+yy111: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 0x0A) goto yy108;
- goto yy116;
-yy110: yyaccept = 0;
+ if(yych == 0x0A) goto yy110;
+ goto yy118;
+yy112: yyaccept = 0;
yych = *(YYMARKER = ++YYCURSOR);
- if(yych == 0x0A) goto yy108;
- goto yy112;
-yy111: ++YYCURSOR;
+ if(yych == 0x0A) goto yy110;
+ goto yy114;
+yy113: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy112;
-yy112: if(yych <= '&'){
- if(yych != 0x0A) goto yy111;
- goto yy113;
+ goto yy114;
+yy114: if(yych <= '&'){
+ if(yych != 0x0A) goto yy113;
+ goto yy115;
} else {
- if(yych <= '\'') goto yy107;
- if(yych == '\\') goto yy114;
- goto yy111;
+ if(yych <= '\'') goto yy109;
+ if(yych == '\\') goto yy116;
+ goto yy113;
}
-yy113: YYCURSOR = YYMARKER;
+yy115: YYCURSOR = YYMARKER;
switch(yyaccept){
- case 0: goto yy108;
+ case 0: goto yy110;
}
-yy114: ++YYCURSOR;
+yy116: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yych == 0x0A) goto yy113;
- goto yy111;
-yy115: ++YYCURSOR;
+ if(yych == 0x0A) goto yy115;
+ goto yy113;
+yy117: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- goto yy116;
-yy116: if(yych <= '!'){
- if(yych == 0x0A) goto yy113;
- goto yy115;
- } else {
- if(yych <= '"') goto yy107;
- if(yych != '\\') goto yy115;
+ goto yy118;
+yy118: if(yych <= '!'){
+ if(yych == 0x0A) goto yy115;
goto yy117;
+ } else {
+ if(yych <= '"') goto yy109;
+ if(yych != '\\') goto yy117;
+ goto yy119;
}
-yy117: ++YYCURSOR;
+yy119: ++YYCURSOR;
if(YYLIMIT == YYCURSOR) YYFILL(1);
yych = *YYCURSOR;
- if(yych == 0x0A) goto yy113;
- goto yy115;
+ if(yych == 0x0A) goto yy115;
+ goto yy117;
}
-#line 225 "scanner.re"
+#line 227 "scanner.re"
comment:
-#line 705 "scanner.cc"
+#line 722 "scanner.cc"
{
YYCTYPE yych;
- goto yy118;
+ goto yy120;
++YYCURSOR;
-yy118:
+yy120:
if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
yych = *YYCURSOR;
if(yych <= ')'){
- if(yych == 0x0A) goto yy123;
- goto yy125;
+ if(yych == 0x0A) goto yy125;
+ goto yy127;
} else {
- if(yych <= '*') goto yy120;
- if(yych == '/') goto yy122;
- goto yy125;
+ if(yych <= '*') goto yy122;
+ if(yych == '/') goto yy124;
+ goto yy127;
}
-yy120: ++YYCURSOR;
- if((yych = *YYCURSOR) == '/') goto yy128;
- goto yy121;
-yy121:
-#line 239 "scanner.re"
+yy122: ++YYCURSOR;
+ if((yych = *YYCURSOR) == '/') goto yy130;
+ goto yy123;
+yy123:
+#line 241 "scanner.re"
{ goto comment; }
-#line 727 "scanner.cc"
-yy122: yych = *++YYCURSOR;
- if(yych == '*') goto yy126;
- goto yy121;
-yy123: ++YYCURSOR;
- goto yy124;
-yy124:
-#line 235 "scanner.re"
+#line 744 "scanner.cc"
+yy124: yych = *++YYCURSOR;
+ if(yych == '*') goto yy128;
+ goto yy123;
+yy125: ++YYCURSOR;
+ goto yy126;
+yy126:
+#line 237 "scanner.re"
{ if(cursor == eof) RETURN(0);
tok = pos = cursor; cline++;
goto comment;
}
-#line 739 "scanner.cc"
-yy125: yych = *++YYCURSOR;
- goto yy121;
-yy126: ++YYCURSOR;
- goto yy127;
-yy127:
-#line 233 "scanner.re"
-{ ++depth;
- goto comment; }
-#line 748 "scanner.cc"
+#line 756 "scanner.cc"
+yy127: yych = *++YYCURSOR;
+ goto yy123;
yy128: ++YYCURSOR;
goto yy129;
yy129:
-#line 229 "scanner.re"
+#line 235 "scanner.re"
+{ ++depth;
+ goto comment; }
+#line 765 "scanner.cc"
+yy130: ++YYCURSOR;
+ goto yy131;
+yy131:
+#line 231 "scanner.re"
{ if(--depth == 0)
goto scan;
else
goto comment; }
-#line 757 "scanner.cc"
+#line 774 "scanner.cc"
}
-#line 240 "scanner.re"
+#line 242 "scanner.re"
}