]> granicus.if.org Git - re2c/commitdiff
Explicit cast of 'char' to 'unsigned char' in lexer.
authorUlya Trofimovich <skvadrik@gmail.com>
Tue, 11 Aug 2015 13:38:34 +0000 (14:38 +0100)
committerUlya Trofimovich <skvadrik@gmail.com>
Tue, 11 Aug 2015 13:38:34 +0000 (14:38 +0100)
Source code is in ASCII: pointers have type 'char *', but re2c
makes an implicit assumption that YYCTYPE is unsigned when it
generates comparisons.

At first glance making YYCTYPE 'char' instead of 'unsigned char'
seems to fix the problem (no more warnings). But it's only because
re2c-generated lexer happens to make no comparisons with constants
larget than 0x7F. Lexer rules may change a bit and then we'll have
lots of warnings about 'comparison between signed and unsigned
values' and 'case label exceeds maximal value for type', not
mentioning that it may lead to real errors.

Explicit cast makes sure thet all comparisons are between unsigned
values.

re2c/bootstrap/src/parse/scanner_lex.cc
re2c/src/parse/scanner_lex.re

index 05f1c0ba2ca8540677f028e727eae6bc3dc79583..3fa7a10efe6cd6d21e17ca5a49d77d6ac6f8b766 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.14.3 on Thu Aug  6 12:02:24 2015 */
+/* Generated by re2c 0.14.3 on Tue Aug 11 14:37:44 2015 */
 #line 1 "../src/parse/scanner_lex.re"
 #include <stdlib.h>
 #include <string.h>
@@ -30,7 +30,13 @@ extern YYSTYPE yylval;
 namespace re2c
 {
 
-#line 51 "../src/parse/scanner_lex.re"
+// source code is in ASCII: pointers have type 'char *'
+// but re2c makes an implicit assumption that YYCTYPE is unsigned
+// when it generates comparisons
+#line 36 "../src/parse/scanner_lex.re"
+
+
+#line 58 "../src/parse/scanner_lex.re"
 
 
 Scanner::ParseMode Scanner::echo()
@@ -47,7 +53,7 @@ Scanner::ParseMode Scanner::echo()
        tok = cursor;
 echo:
 
-#line 51 "src/parse/scanner_lex.cc"
+#line 57 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -87,7 +93,7 @@ echo:
        };
 
        if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '%') {
                if (yych <= '\t') {
                        if (yych >= 0x01) goto yy4;
@@ -106,7 +112,7 @@ echo:
                }
        }
        ++YYCURSOR;
-#line 191 "../src/parse/scanner_lex.re"
+#line 198 "../src/parse/scanner_lex.re"
        {
                                        if (!(ignore_eoc || DFlag || flag_skeleton))
                                        {
@@ -118,24 +124,24 @@ echo:
                                                RETURN(Stop);
                                        }
                                }
-#line 122 "src/parse/scanner_lex.cc"
+#line 128 "src/parse/scanner_lex.cc"
 yy4:
        ++YYCURSOR;
 yy5:
-#line 202 "../src/parse/scanner_lex.re"
+#line 209 "../src/parse/scanner_lex.re"
        {
                                        goto echo;
                                }
-#line 130 "src/parse/scanner_lex.cc"
+#line 136 "src/parse/scanner_lex.cc"
 yy6:
        yyaccept = 0;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 32) {
                goto yy89;
        }
        if (yych == '#') goto yy91;
 yy7:
-#line 178 "../src/parse/scanner_lex.re"
+#line 185 "../src/parse/scanner_lex.re"
        {
                                        if (ignore_eoc)
                                        {
@@ -149,20 +155,20 @@ yy7:
                                        cline++;
                                        goto echo;
                                }
-#line 153 "src/parse/scanner_lex.cc"
+#line 159 "src/parse/scanner_lex.cc"
 yy8:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '{') goto yy32;
        goto yy5;
 yy9:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '/') goto yy84;
        goto yy5;
 yy10:
        yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych != '*') goto yy5;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '!') goto yy13;
 yy12:
        YYCURSOR = YYMARKER;
@@ -176,7 +182,7 @@ yy12:
                goto yy85;
        }
 yy13:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        switch (yych) {
        case 'g':       goto yy16;
        case 'i':       goto yy15;
@@ -187,53 +193,53 @@ yy13:
        default:        goto yy12;
        }
 yy14:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'y') goto yy74;
        goto yy12;
 yy15:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'g') goto yy63;
        goto yy12;
 yy16:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'e') goto yy50;
        goto yy12;
 yy17:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'a') goto yy42;
        goto yy12;
 yy18:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 's') goto yy34;
        goto yy12;
 yy19:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'e') goto yy20;
        if (yych == 'u') goto yy21;
        goto yy12;
 yy20:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '2') goto yy31;
        goto yy12;
 yy21:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'l') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 's') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 80 "../src/parse/scanner_lex.re"
+#line 87 "../src/parse/scanner_lex.re"
        {
                                        if (rFlag)
                                        {
@@ -246,13 +252,13 @@ yy21:
                                        tok = cursor;
                                        RETURN(Rules);
                                }
-#line 250 "src/parse/scanner_lex.cc"
+#line 256 "src/parse/scanner_lex.cc"
 yy31:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
 yy32:
        ++YYCURSOR;
-#line 68 "../src/parse/scanner_lex.re"
+#line 75 "../src/parse/scanner_lex.re"
        {
                                        if (rFlag)
                                        {
@@ -265,22 +271,22 @@ yy32:
                                        tok = cursor;
                                        RETURN(Parse);
                                }
-#line 269 "src/parse/scanner_lex.cc"
+#line 275 "src/parse/scanner_lex.cc"
 yy34:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 92 "../src/parse/scanner_lex.re"
+#line 99 "../src/parse/scanner_lex.re"
        {
                                        if (!rFlag)
                                        {
@@ -294,22 +300,22 @@ yy34:
                                        tok = cursor;
                                        RETURN(Reuse);
                                }
-#line 298 "src/parse/scanner_lex.cc"
+#line 304 "src/parse/scanner_lex.cc"
 yy42:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'x') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 105 "../src/parse/scanner_lex.re"
+#line 112 "../src/parse/scanner_lex.re"
        {
                                        if (!DFlag)
                                        {
@@ -319,85 +325,85 @@ yy42:
                                        ignore_eoc = true;
                                        goto echo;
                                }
-#line 323 "src/parse/scanner_lex.cc"
+#line 329 "src/parse/scanner_lex.cc"
 yy50:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 't') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 's') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 't') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'a') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 't') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 114 "../src/parse/scanner_lex.re"
+#line 121 "../src/parse/scanner_lex.re"
        {
                                        tok = pos = cursor;
                                        out.insert_state_goto (topIndent);
                                        ignore_eoc = true;
                                        goto echo;
                                }
-#line 355 "src/parse/scanner_lex.cc"
+#line 361 "src/parse/scanner_lex.cc"
 yy63:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'n') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'o') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 120 "../src/parse/scanner_lex.re"
+#line 127 "../src/parse/scanner_lex.re"
        {
                                        tok = pos = cursor;
                                        ignore_eoc = true;
                                        goto echo;
                                }
-#line 382 "src/parse/scanner_lex.cc"
+#line 388 "src/parse/scanner_lex.cc"
 yy74:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'p') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 's') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'r') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy12;
        ++YYCURSOR;
-#line 125 "../src/parse/scanner_lex.re"
+#line 132 "../src/parse/scanner_lex.re"
        {
                                        tok = pos = cursor;
                                        ignore_eoc = true;
@@ -411,14 +417,14 @@ yy74:
                                        }
                                        goto echo;
                                }
-#line 415 "src/parse/scanner_lex.cc"
+#line 421 "src/parse/scanner_lex.cc"
 yy84:
        yyaccept = 2;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '\n') goto yy87;
        if (yych == '\r') goto yy86;
 yy85:
-#line 156 "../src/parse/scanner_lex.re"
+#line 163 "../src/parse/scanner_lex.re"
        {
                                        if (ignore_eoc)
                                        {
@@ -437,13 +443,13 @@ yy85:
                                        tok = pos = cursor;
                                        goto echo;
                                }
-#line 441 "src/parse/scanner_lex.cc"
+#line 447 "src/parse/scanner_lex.cc"
 yy86:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '\n') goto yy12;
 yy87:
        ++YYCURSOR;
-#line 138 "../src/parse/scanner_lex.re"
+#line 145 "../src/parse/scanner_lex.re"
        {
                                        cline++;
                                        if (ignore_eoc)
@@ -462,11 +468,11 @@ yy87:
                                        tok = pos = cursor;
                                        goto echo;
                                }
-#line 466 "src/parse/scanner_lex.cc"
+#line 472 "src/parse/scanner_lex.cc"
 yy89:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 32) {
                goto yy89;
        }
@@ -474,7 +480,7 @@ yy89:
 yy91:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy91;
                goto yy12;
@@ -482,13 +488,13 @@ yy91:
                if (yych <= ' ') goto yy91;
                if (yych != 'l') goto yy12;
        }
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'i') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'n') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy12;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy98;
        if (yych <= '9') goto yy12;
        goto yy98;
@@ -496,7 +502,7 @@ yy97:
        YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy98:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy97;
@@ -509,7 +515,7 @@ yy98:
 yy99:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
                goto yy99;
        }
@@ -525,7 +531,7 @@ yy99:
 yy101:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy101;
                goto yy12;
@@ -537,20 +543,20 @@ yy101:
 yy103:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 174 "../src/parse/scanner_lex.re"
+#line 181 "../src/parse/scanner_lex.re"
        {
                                        set_sourceline(cursor);
                                        goto echo;
                                }
-#line 546 "src/parse/scanner_lex.cc"
+#line 552 "src/parse/scanner_lex.cc"
 yy105:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy103;
        goto yy12;
 yy106:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
                goto yy106;
        }
@@ -558,16 +564,16 @@ yy106:
        if (yych <= '"') goto yy109;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy12;
        goto yy106;
 yy109:
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '\n') goto yy103;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy103;
        if (yych == '\r') goto yy105;
        goto yy12;
 }
-#line 205 "../src/parse/scanner_lex.re"
+#line 212 "../src/parse/scanner_lex.re"
 
 }
 
@@ -590,7 +596,7 @@ scan:
 
 start:
 
-#line 594 "src/parse/scanner_lex.cc"
+#line 600 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -629,7 +635,7 @@ start:
                224, 224, 224, 224, 224, 224, 224, 224, 
        };
        if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '.') {
                if (yych <= '"') {
                        if (yych <= '\f') {
@@ -705,25 +711,25 @@ start:
 yy112:
        ++YYCURSOR;
 yy113:
-#line 436 "../src/parse/scanner_lex.re"
+#line 443 "../src/parse/scanner_lex.re"
        {
                                        fatalf("unexpected character: '%c'", *tok);
                                        goto scan;
                                }
-#line 714 "src/parse/scanner_lex.cc"
+#line 720 "src/parse/scanner_lex.cc"
 yy114:
        ++YYCURSOR;
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        goto yy248;
 yy115:
-#line 420 "../src/parse/scanner_lex.re"
+#line 427 "../src/parse/scanner_lex.re"
        {
                                        goto scan;
                                }
-#line 724 "src/parse/scanner_lex.cc"
+#line 730 "src/parse/scanner_lex.cc"
 yy116:
        yyaccept = 0;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy226;
        } else {
@@ -731,116 +737,116 @@ yy116:
                if (yych == '#') goto yy228;
        }
 yy117:
-#line 429 "../src/parse/scanner_lex.re"
+#line 436 "../src/parse/scanner_lex.re"
        {
                                        if (cursor == eof) RETURN(0);
                                        pos = cursor;
                                        cline++;
                                        goto scan;
                                }
-#line 742 "src/parse/scanner_lex.cc"
+#line 748 "src/parse/scanner_lex.cc"
 yy118:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy225;
        goto yy113;
 yy119:
        yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych != '\n') goto yy221;
 yy120:
-#line 285 "../src/parse/scanner_lex.re"
+#line 292 "../src/parse/scanner_lex.re"
        {
                                        fatal("unterminated string constant (missing \")");
                                }
-#line 756 "src/parse/scanner_lex.cc"
+#line 762 "src/parse/scanner_lex.cc"
 yy121:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '}') goto yy213;
        goto yy113;
 yy122:
        yyaccept = 2;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych != '\n') goto yy216;
 yy123:
-#line 288 "../src/parse/scanner_lex.re"
+#line 295 "../src/parse/scanner_lex.re"
        {
                                        fatal("unterminated string constant (missing ')");
                                }
-#line 770 "src/parse/scanner_lex.cc"
+#line 776 "src/parse/scanner_lex.cc"
 yy124:
        ++YYCURSOR;
 yy125:
-#line 316 "../src/parse/scanner_lex.re"
+#line 323 "../src/parse/scanner_lex.re"
        {
                                        RETURN(*tok);
                                }
-#line 778 "src/parse/scanner_lex.cc"
+#line 784 "src/parse/scanner_lex.cc"
 yy126:
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '/') goto yy213;
-#line 320 "../src/parse/scanner_lex.re"
+       if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy213;
+#line 327 "../src/parse/scanner_lex.re"
        {
                                        yylval.op = *tok;
                                        RETURN(STAR);
                                }
-#line 787 "src/parse/scanner_lex.cc"
+#line 793 "src/parse/scanner_lex.cc"
 yy128:
        ++YYCURSOR;
-#line 324 "../src/parse/scanner_lex.re"
+#line 331 "../src/parse/scanner_lex.re"
        {
                                        yylval.op = *tok;
                                        RETURN(CLOSE);
                                }
-#line 795 "src/parse/scanner_lex.cc"
+#line 801 "src/parse/scanner_lex.cc"
 yy130:
        ++YYCURSOR;
-#line 414 "../src/parse/scanner_lex.re"
+#line 421 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        yylval.regexp = mkDot();
                                        return RANGE;
                                }
-#line 804 "src/parse/scanner_lex.cc"
+#line 810 "src/parse/scanner_lex.cc"
 yy132:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '*') goto yy209;
        if (yych == '/') goto yy211;
        goto yy125;
 yy133:
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy169;
 yy134:
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '=') goto yy205;
        goto yy113;
 yy135:
        yyaccept = 3;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '!') goto yy196;
        if (yych == '>') goto yy198;
        goto yy125;
 yy136:
        yyaccept = 4;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '\n') goto yy137;
        if (yych == '^') goto yy188;
        goto yy187;
 yy137:
-#line 306 "../src/parse/scanner_lex.re"
+#line 313 "../src/parse/scanner_lex.re"
        {
                                        fatal("unterminated range (missing ])");
                                }
-#line 836 "src/parse/scanner_lex.cc"
+#line 842 "src/parse/scanner_lex.cc"
 yy138:
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == 'e') goto yy170;
        goto yy169;
 yy139:
        yyaccept = 5;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '@') {
                if (yych <= '/') {
                        if (yych == ',') goto yy147;
@@ -858,14 +864,14 @@ yy139:
                }
        }
 yy140:
-#line 227 "../src/parse/scanner_lex.re"
+#line 234 "../src/parse/scanner_lex.re"
        {
                                        depth = 1;
                                        goto code;
                                }
-#line 867 "src/parse/scanner_lex.cc"
+#line 873 "src/parse/scanner_lex.cc"
 yy141:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == ',') goto yy160;
        goto yy144;
 yy142:
@@ -902,7 +908,7 @@ yy142:
 yy143:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy144:
        if (yybm[0+yych] & 4) {
                goto yy143;
@@ -926,7 +932,7 @@ yy144:
 yy145:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 8) {
                goto yy145;
        }
@@ -935,14 +941,14 @@ yy145:
 yy147:
        ++YYCURSOR;
 yy148:
-#line 352 "../src/parse/scanner_lex.re"
+#line 359 "../src/parse/scanner_lex.re"
        {
                                        fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
                                }
-#line 943 "src/parse/scanner_lex.cc"
+#line 949 "src/parse/scanner_lex.cc"
 yy149:
        ++YYCURSOR;
-#line 356 "../src/parse/scanner_lex.re"
+#line 363 "../src/parse/scanner_lex.re"
        {
                                        if (!FFlag) {
                                                fatal("curly braces for names only allowed with -F switch");
@@ -951,63 +957,63 @@ yy149:
                                        yylval.str = new std::string (tok + 1, cur - tok - 2);
                                        return ID;
                                }
-#line 955 "src/parse/scanner_lex.cc"
+#line 961 "src/parse/scanner_lex.cc"
 yy151:
        ++YYCURSOR;
-#line 334 "../src/parse/scanner_lex.re"
+#line 341 "../src/parse/scanner_lex.re"
        {
                                        yylval.extop.minsize = atoi((char *)tok+1);
                                        yylval.extop.maxsize = atoi((char *)tok+1);
                                        RETURN(CLOSESIZE);
                                }
-#line 964 "src/parse/scanner_lex.cc"
+#line 970 "src/parse/scanner_lex.cc"
 yy153:
        yyaccept = 6;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy148;
        if (yych <= '9') goto yy156;
        if (yych != '}') goto yy148;
        ++YYCURSOR;
-#line 346 "../src/parse/scanner_lex.re"
+#line 353 "../src/parse/scanner_lex.re"
        {
                                        yylval.extop.minsize = atoi((char *)tok+1);
                                        yylval.extop.maxsize = -1;
                                        RETURN(CLOSESIZE);
                                }
-#line 978 "src/parse/scanner_lex.cc"
+#line 984 "src/parse/scanner_lex.cc"
 yy156:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '/') goto yy142;
        if (yych <= '9') goto yy156;
        if (yych != '}') goto yy142;
        ++YYCURSOR;
-#line 340 "../src/parse/scanner_lex.re"
+#line 347 "../src/parse/scanner_lex.re"
        {
                                        yylval.extop.minsize = atoi((char *)tok+1);
                                        yylval.extop.maxsize = MAX(yylval.extop.minsize,atoi(strchr((char *)tok, ',')+1));
                                        RETURN(CLOSESIZE);
                                }
-#line 993 "src/parse/scanner_lex.cc"
+#line 999 "src/parse/scanner_lex.cc"
 yy160:
        yyaccept = 6;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '/') goto yy148;
        if (yych <= '9') goto yy156;
        if (yych != '}') goto yy148;
        ++YYCURSOR;
-#line 329 "../src/parse/scanner_lex.re"
+#line 336 "../src/parse/scanner_lex.re"
        {
                                        yylval.op = '*';
                                        RETURN(CLOSE);
                                }
-#line 1006 "src/parse/scanner_lex.cc"
+#line 1012 "src/parse/scanner_lex.cc"
 yy163:
        ++YYCURSOR;
 yy164:
        YYCURSOR = YYCTXMARKER;
-#line 393 "../src/parse/scanner_lex.re"
+#line 400 "../src/parse/scanner_lex.re"
        {
                                        if (!FFlag) {
                                                cur = cursor;
@@ -1028,26 +1034,26 @@ yy164:
                                                return STRING;
                                        }
                                }
-#line 1032 "src/parse/scanner_lex.cc"
+#line 1038 "src/parse/scanner_lex.cc"
 yy165:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy184;
 yy166:
        ++YYCURSOR;
 yy167:
        YYCURSOR = YYCTXMARKER;
-#line 387 "../src/parse/scanner_lex.re"
+#line 394 "../src/parse/scanner_lex.re"
        {
                                        cur = ptr > tok ? ptr - 1 : cursor;
                                        yylval.str = new std::string (tok, cur - tok);
                                        return ID;
                                }
-#line 1046 "src/parse/scanner_lex.cc"
+#line 1052 "src/parse/scanner_lex.cc"
 yy168:
        YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy169:
        if (yych <= '9') {
                if (yych <= ' ') {
@@ -1078,15 +1084,15 @@ yy169:
        }
 yy170:
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '2') goto yy169;
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'c') goto yy169;
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != ':') goto yy169;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'Z') {
                if (yych <= '/') goto yy164;
                if (yych <= '9') goto yy174;
@@ -1103,7 +1109,7 @@ yy174:
        yyaccept = 7;
        YYMARKER = ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '@') {
                if (yych <= '9') {
                        if (yych >= '0') goto yy174;
@@ -1121,7 +1127,7 @@ yy174:
                }
        }
 yy176:
-#line 365 "../src/parse/scanner_lex.re"
+#line 372 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        tok += 5; /* skip "re2c:" */
@@ -1129,9 +1135,9 @@ yy176:
                                        yylval.str = new std::string (tok, cur - tok);
                                        return CONFIG;
                                }
-#line 1133 "src/parse/scanner_lex.cc"
+#line 1139 "src/parse/scanner_lex.cc"
 yy177:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= 'Z') {
                if (yych <= '/') goto yy142;
                if (yych <= '9') goto yy179;
@@ -1150,7 +1156,7 @@ yy177:
 yy178:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'Z') {
                if (yych <= '/') goto yy142;
                if (yych <= '9') goto yy174;
@@ -1169,7 +1175,7 @@ yy178:
 yy179:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 'Z') {
                if (yych <= '/') goto yy176;
                if (yych <= '9') goto yy179;
@@ -1188,7 +1194,7 @@ yy179:
 yy181:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 373 "../src/parse/scanner_lex.re"
+#line 380 "../src/parse/scanner_lex.re"
        {
                                        cur = ptr > tok ? ptr - 1 : cursor;
                                        yylval.str = new std::string (tok, cur - tok);
@@ -1202,11 +1208,11 @@ yy181:
                                                return ID;
                                        }
                                }
-#line 1206 "src/parse/scanner_lex.cc"
+#line 1212 "src/parse/scanner_lex.cc"
 yy183:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy184:
        if (yybm[0+yych] & 16) {
                goto yy183;
@@ -1215,12 +1221,12 @@ yy184:
        if (yych <= '<') goto yy181;
        if (yych >= '?') goto yy181;
 yy185:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy167;
 yy186:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy187:
        if (yybm[0+yych] & 32) {
                goto yy186;
@@ -1231,7 +1237,7 @@ yy187:
 yy188:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '[') {
                if (yych == '\n') goto yy142;
                goto yy188;
@@ -1243,50 +1249,50 @@ yy188:
 yy190:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy142;
        goto yy186;
 yy191:
        ++YYCURSOR;
-#line 299 "../src/parse/scanner_lex.re"
+#line 306 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        SubStr s (tok, cur - tok);
                                        yylval.regexp = ranToRE (s);
                                        return RANGE;
                                }
-#line 1259 "src/parse/scanner_lex.cc"
+#line 1265 "src/parse/scanner_lex.cc"
 yy193:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy142;
        goto yy188;
 yy194:
        ++YYCURSOR;
-#line 292 "../src/parse/scanner_lex.re"
+#line 299 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        SubStr s (tok, cur - tok);
                                        yylval.regexp = invToRE (s);
                                        return RANGE;
                                }
-#line 1275 "src/parse/scanner_lex.cc"
+#line 1281 "src/parse/scanner_lex.cc"
 yy196:
        ++YYCURSOR;
-#line 313 "../src/parse/scanner_lex.re"
+#line 320 "../src/parse/scanner_lex.re"
        {
                                        RETURN(SETUP);
                                }
-#line 1282 "src/parse/scanner_lex.cc"
+#line 1288 "src/parse/scanner_lex.cc"
 yy198:
        YYCTXMARKER = YYCURSOR + 1;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy200;
 yy199:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy200:
        if (yych <= '9') {
                if (yych <= '\t') {
@@ -1308,65 +1314,65 @@ yy200:
 yy201:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 310 "../src/parse/scanner_lex.re"
+#line 317 "../src/parse/scanner_lex.re"
        {
                                        RETURN(NOCOND);
                                }
-#line 1316 "src/parse/scanner_lex.cc"
+#line 1322 "src/parse/scanner_lex.cc"
 yy203:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '>') goto yy201;
        goto yy142;
 yy204:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '=') goto yy201;
        goto yy142;
 yy205:
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '>') goto yy207;
-#line 236 "../src/parse/scanner_lex.re"
+       if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy207;
+#line 243 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        tok += 2; /* skip ":=" */
                                        depth = 0;
                                        goto code;
                                }
-#line 1335 "src/parse/scanner_lex.cc"
+#line 1341 "src/parse/scanner_lex.cc"
 yy207:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 232 "../src/parse/scanner_lex.re"
+#line 239 "../src/parse/scanner_lex.re"
        {
                                        RETURN(*tok);
                                }
-#line 1343 "src/parse/scanner_lex.cc"
+#line 1349 "src/parse/scanner_lex.cc"
 yy209:
        ++YYCURSOR;
-#line 246 "../src/parse/scanner_lex.re"
+#line 253 "../src/parse/scanner_lex.re"
        {
                                        depth = 1;
                                        goto comment;
                                }
-#line 1351 "src/parse/scanner_lex.cc"
+#line 1357 "src/parse/scanner_lex.cc"
 yy211:
        ++YYCURSOR;
-#line 243 "../src/parse/scanner_lex.re"
+#line 250 "../src/parse/scanner_lex.re"
        {
                                goto nextLine;
                        }
-#line 1358 "src/parse/scanner_lex.cc"
+#line 1364 "src/parse/scanner_lex.cc"
 yy213:
        ++YYCURSOR;
-#line 252 "../src/parse/scanner_lex.re"
+#line 259 "../src/parse/scanner_lex.re"
        {
                                        tok = cursor;
                                        RETURN(0);
                                }
-#line 1366 "src/parse/scanner_lex.cc"
+#line 1372 "src/parse/scanner_lex.cc"
 yy215:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy216:
        if (yybm[0+yych] & 64) {
                goto yy215;
@@ -1375,12 +1381,12 @@ yy216:
        if (yych <= '\'') goto yy218;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy142;
        goto yy215;
 yy218:
        ++YYCURSOR;
-#line 271 "../src/parse/scanner_lex.re"
+#line 278 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        SubStr s (tok + 1, cur - tok - 2);
@@ -1394,11 +1400,11 @@ yy218:
                                        }
                                        return STRING;
                                }
-#line 1398 "src/parse/scanner_lex.cc"
+#line 1404 "src/parse/scanner_lex.cc"
 yy220:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy221:
        if (yybm[0+yych] & 128) {
                goto yy220;
@@ -1407,12 +1413,12 @@ yy221:
        if (yych <= '"') goto yy223;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy142;
        goto yy220;
 yy223:
        ++YYCURSOR;
-#line 257 "../src/parse/scanner_lex.re"
+#line 264 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        SubStr s (tok + 1, cur - tok - 2);
@@ -1426,10 +1432,10 @@ yy223:
                                        }
                                        return STRING;
                                }
-#line 1430 "src/parse/scanner_lex.cc"
+#line 1436 "src/parse/scanner_lex.cc"
 yy225:
        yyaccept = 0;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
                if (yych != '\t') goto yy117;
        } else {
@@ -1440,7 +1446,7 @@ yy225:
 yy226:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy226;
                goto yy142;
@@ -1451,7 +1457,7 @@ yy226:
 yy228:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy228;
                goto yy142;
@@ -1459,13 +1465,13 @@ yy228:
                if (yych <= ' ') goto yy228;
                if (yych != 'l') goto yy142;
        }
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'i') goto yy142;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'n') goto yy142;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy142;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy235;
        if (yych <= '9') goto yy142;
        goto yy235;
@@ -1473,7 +1479,7 @@ yy234:
        YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy235:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy234;
@@ -1486,7 +1492,7 @@ yy235:
 yy236:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych <= 0x08) goto yy142;
@@ -1507,7 +1513,7 @@ yy236:
 yy238:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy238;
                goto yy142;
@@ -1519,20 +1525,20 @@ yy238:
 yy240:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 424 "../src/parse/scanner_lex.re"
+#line 431 "../src/parse/scanner_lex.re"
        {
                                        set_sourceline(cursor);
                                        goto scan;
                                }
-#line 1528 "src/parse/scanner_lex.cc"
+#line 1534 "src/parse/scanner_lex.cc"
 yy242:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy240;
        goto yy142;
 yy243:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
                if (yych == '\n') goto yy142;
                goto yy243;
@@ -1542,66 +1548,66 @@ yy243:
        }
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy142;
        goto yy243;
 yy246:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy240;
        if (yych == '\r') goto yy242;
        goto yy142;
 yy247:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy248:
        if (yych == '\t') goto yy247;
        if (yych == ' ') goto yy247;
        goto yy115;
 }
-#line 440 "../src/parse/scanner_lex.re"
+#line 447 "../src/parse/scanner_lex.re"
 
 
 flex_name:
 
-#line 1568 "src/parse/scanner_lex.cc"
+#line 1574 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy253;
        if (yych == '\r') goto yy255;
        ++YYCURSOR;
 yy252:
-#line 451 "../src/parse/scanner_lex.re"
+#line 458 "../src/parse/scanner_lex.re"
        {
                YYCURSOR = tok;
                goto start;
        }
-#line 1582 "src/parse/scanner_lex.cc"
+#line 1588 "src/parse/scanner_lex.cc"
 yy253:
        ++YYCURSOR;
 yy254:
-#line 445 "../src/parse/scanner_lex.re"
+#line 452 "../src/parse/scanner_lex.re"
        {
                YYCURSOR = tok;
                lexer_state = LEX_NORMAL;
                return FID_END;
        }
-#line 1592 "src/parse/scanner_lex.cc"
+#line 1598 "src/parse/scanner_lex.cc"
 yy255:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '\n') goto yy252;
        ++YYCURSOR;
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        goto yy254;
 }
-#line 455 "../src/parse/scanner_lex.re"
+#line 462 "../src/parse/scanner_lex.re"
 
 
 code:
 
-#line 1605 "src/parse/scanner_lex.cc"
+#line 1611 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        unsigned int yyaccept = 0;
@@ -1640,7 +1646,7 @@ code:
                 48,  48,  48,  48,  48,  48,  48,  48, 
        };
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '&') {
                if (yych <= '\n') {
                        if (yych <= 0x00) goto yy259;
@@ -1662,7 +1668,7 @@ code:
        }
 yy259:
        ++YYCURSOR;
-#line 520 "../src/parse/scanner_lex.re"
+#line 527 "../src/parse/scanner_lex.re"
        {
                                        if (cursor == eof)
                                        {
@@ -1674,19 +1680,19 @@ yy259:
                                        }
                                        goto code;
                                }
-#line 1678 "src/parse/scanner_lex.cc"
+#line 1684 "src/parse/scanner_lex.cc"
 yy261:
        ++YYCURSOR;
 yy262:
-#line 534 "../src/parse/scanner_lex.re"
+#line 541 "../src/parse/scanner_lex.re"
        {
                                        goto code;
                                }
-#line 1686 "src/parse/scanner_lex.cc"
+#line 1692 "src/parse/scanner_lex.cc"
 yy263:
        YYCTXMARKER = YYCURSOR + 1;
        yyaccept = 0;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych >= '\t') goto yy280;
@@ -1702,7 +1708,7 @@ yy263:
                }
        }
 yy264:
-#line 500 "../src/parse/scanner_lex.re"
+#line 507 "../src/parse/scanner_lex.re"
        {
                                        if (depth == 0)
                                        {
@@ -1723,20 +1729,20 @@ yy264:
                                        cline++;
                                        goto code;
                                }
-#line 1727 "src/parse/scanner_lex.cc"
+#line 1733 "src/parse/scanner_lex.cc"
 yy265:
        yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '\n') goto yy262;
        goto yy278;
 yy266:
        yyaccept = 1;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '\n') goto yy262;
        goto yy272;
 yy267:
        ++YYCURSOR;
-#line 472 "../src/parse/scanner_lex.re"
+#line 479 "../src/parse/scanner_lex.re"
        {
                                        if (depth == 0)
                                        {
@@ -1748,10 +1754,10 @@ yy267:
                                        }
                                        goto code;
                                }
-#line 1752 "src/parse/scanner_lex.cc"
+#line 1758 "src/parse/scanner_lex.cc"
 yy269:
        ++YYCURSOR;
-#line 459 "../src/parse/scanner_lex.re"
+#line 466 "../src/parse/scanner_lex.re"
        {
                                        if (depth == 0)
                                        {
@@ -1765,11 +1771,11 @@ yy269:
                                        }
                                        goto code;
                                }
-#line 1769 "src/parse/scanner_lex.cc"
+#line 1775 "src/parse/scanner_lex.cc"
 yy271:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy272:
        if (yybm[0+yych] & 16) {
                goto yy271;
@@ -1791,20 +1797,20 @@ yy273:
 yy274:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy273;
        goto yy271;
 yy275:
        ++YYCURSOR;
-#line 531 "../src/parse/scanner_lex.re"
+#line 538 "../src/parse/scanner_lex.re"
        {
                                        goto code;
                                }
-#line 1804 "src/parse/scanner_lex.cc"
+#line 1810 "src/parse/scanner_lex.cc"
 yy277:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy278:
        if (yybm[0+yych] & 32) {
                goto yy277;
@@ -1813,12 +1819,12 @@ yy278:
        if (yych <= '"') goto yy275;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy273;
        goto yy277;
 yy280:
        yyaccept = 2;
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy302;
        } else {
@@ -1827,7 +1833,7 @@ yy280:
        }
 yy281:
        YYCURSOR = YYCTXMARKER;
-#line 487 "../src/parse/scanner_lex.re"
+#line 494 "../src/parse/scanner_lex.re"
        {
                                        if (depth == 0)
                                        {
@@ -1841,25 +1847,25 @@ yy281:
                                        cline++;
                                        goto code;
                                }
-#line 1845 "src/parse/scanner_lex.cc"
+#line 1851 "src/parse/scanner_lex.cc"
 yy282:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy281;
 yy283:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
                goto yy283;
        }
        if (yych != 'l') goto yy273;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'i') goto yy273;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'n') goto yy273;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy273;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy290;
        if (yych <= '9') goto yy273;
        goto yy290;
@@ -1867,7 +1873,7 @@ yy289:
        YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy290:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy289;
@@ -1880,7 +1886,7 @@ yy290:
 yy291:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
                goto yy291;
        }
@@ -1896,7 +1902,7 @@ yy291:
 yy293:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy293;
                goto yy273;
@@ -1908,20 +1914,20 @@ yy293:
 yy295:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 483 "../src/parse/scanner_lex.re"
+#line 490 "../src/parse/scanner_lex.re"
        {
                                        set_sourceline(cursor);
                                        goto code;
                                }
-#line 1917 "src/parse/scanner_lex.cc"
+#line 1923 "src/parse/scanner_lex.cc"
 yy297:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy295;
        goto yy273;
 yy298:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
                if (yych == '\n') goto yy273;
                goto yy298;
@@ -1931,18 +1937,18 @@ yy298:
        }
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy273;
        goto yy298;
 yy301:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy295;
        if (yych == '\r') goto yy297;
        goto yy273;
 yy302:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy302;
                goto yy273;
@@ -1952,12 +1958,12 @@ yy302:
                goto yy273;
        }
 }
-#line 537 "../src/parse/scanner_lex.re"
+#line 544 "../src/parse/scanner_lex.re"
 
 
 comment:
 
-#line 1961 "src/parse/scanner_lex.cc"
+#line 1967 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -1995,7 +2001,7 @@ comment:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= ')') {
                if (yych == '\n') goto yy308;
        } else {
@@ -2004,7 +2010,7 @@ comment:
        }
        ++YYCURSOR;
 yy307:
-#line 569 "../src/parse/scanner_lex.re"
+#line 576 "../src/parse/scanner_lex.re"
        {
                                        if (cursor == eof)
                                        {
@@ -2012,15 +2018,15 @@ yy307:
                                        }
                                        goto comment;
                                }
-#line 2016 "src/parse/scanner_lex.cc"
+#line 2022 "src/parse/scanner_lex.cc"
 yy308:
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yybm[0+yych] & 32) {
                goto yy316;
        }
        if (yych == '#') goto yy319;
 yy309:
-#line 560 "../src/parse/scanner_lex.re"
+#line 567 "../src/parse/scanner_lex.re"
        {
                                        if (cursor == eof)
                                        {
@@ -2030,25 +2036,25 @@ yy309:
                                        cline++;
                                        goto comment;
                                }
-#line 2034 "src/parse/scanner_lex.cc"
+#line 2040 "src/parse/scanner_lex.cc"
 yy310:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '/') goto yy314;
        goto yy307;
 yy311:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != '*') goto yy307;
        ++YYCURSOR;
-#line 551 "../src/parse/scanner_lex.re"
+#line 558 "../src/parse/scanner_lex.re"
        {
                                        ++depth;
                                        fatal("ambiguous /* found");
                                        goto comment;
                                }
-#line 2049 "src/parse/scanner_lex.cc"
+#line 2055 "src/parse/scanner_lex.cc"
 yy314:
        ++YYCURSOR;
-#line 541 "../src/parse/scanner_lex.re"
+#line 548 "../src/parse/scanner_lex.re"
        {
                                        if (--depth == 0)
                                        {
@@ -2059,11 +2065,11 @@ yy314:
                                                goto comment;
                                        }
                                }
-#line 2063 "src/parse/scanner_lex.cc"
+#line 2069 "src/parse/scanner_lex.cc"
 yy316:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 32) {
                goto yy316;
        }
@@ -2074,7 +2080,7 @@ yy318:
 yy319:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy319;
                goto yy318;
@@ -2082,13 +2088,13 @@ yy319:
                if (yych <= ' ') goto yy319;
                if (yych != 'l') goto yy318;
        }
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'i') goto yy318;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'n') goto yy318;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych != 'e') goto yy318;
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy326;
        if (yych <= '9') goto yy318;
        goto yy326;
@@ -2096,7 +2102,7 @@ yy325:
        YYCTXMARKER = YYCURSOR + 1;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy326:
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy325;
@@ -2109,7 +2115,7 @@ yy326:
 yy327:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
                goto yy327;
        }
@@ -2125,7 +2131,7 @@ yy327:
 yy329:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy329;
                goto yy318;
@@ -2137,20 +2143,20 @@ yy329:
 yy331:
        ++YYCURSOR;
        YYCURSOR = YYCTXMARKER;
-#line 556 "../src/parse/scanner_lex.re"
+#line 563 "../src/parse/scanner_lex.re"
        {
                                        set_sourceline(cursor);
                                        goto comment;
                                }
-#line 2146 "src/parse/scanner_lex.cc"
+#line 2152 "src/parse/scanner_lex.cc"
 yy333:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych == '\n') goto yy331;
        goto yy318;
 yy334:
        ++YYCURSOR;
        if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
                goto yy334;
        }
@@ -2158,37 +2164,37 @@ yy334:
        if (yych <= '"') goto yy337;
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy318;
        goto yy334;
 yy337:
        ++YYCURSOR;
-       if ((yych = *YYCURSOR) == '\n') goto yy331;
+       if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy331;
        if (yych == '\r') goto yy333;
        goto yy318;
 }
-#line 576 "../src/parse/scanner_lex.re"
+#line 583 "../src/parse/scanner_lex.re"
 
 
 nextLine:
 
-#line 2176 "src/parse/scanner_lex.cc"
+#line 2182 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy342;
        ++YYCURSOR;
-#line 587 "../src/parse/scanner_lex.re"
+#line 594 "../src/parse/scanner_lex.re"
        {  if(cursor == eof) {
                   RETURN(0);
                }
                goto nextLine;
             }
-#line 2189 "src/parse/scanner_lex.cc"
+#line 2195 "src/parse/scanner_lex.cc"
 yy342:
        ++YYCURSOR;
-#line 580 "../src/parse/scanner_lex.re"
+#line 587 "../src/parse/scanner_lex.re"
        { if(cursor == eof) {
                   RETURN(0);
                }
@@ -2196,14 +2202,14 @@ yy342:
                cline++;
                goto scan;
             }
-#line 2200 "src/parse/scanner_lex.cc"
+#line 2206 "src/parse/scanner_lex.cc"
 }
-#line 592 "../src/parse/scanner_lex.re"
+#line 599 "../src/parse/scanner_lex.re"
 
 
 config:
 
-#line 2207 "src/parse/scanner_lex.cc"
+#line 2213 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2241,7 +2247,7 @@ config:
                  0,   0,   0,   0,   0,   0,   0,   0, 
        };
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= 0x1F) {
                if (yych == '\t') goto yy348;
        } else {
@@ -2249,37 +2255,37 @@ config:
                if (yych == '=') goto yy350;
        }
        ++YYCURSOR;
-#line 604 "../src/parse/scanner_lex.re"
+#line 611 "../src/parse/scanner_lex.re"
        {
                                        fatal("missing '='");
                                }
-#line 2257 "src/parse/scanner_lex.cc"
+#line 2263 "src/parse/scanner_lex.cc"
 yy348:
        ++YYCURSOR;
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        goto yy355;
 yy349:
-#line 596 "../src/parse/scanner_lex.re"
+#line 603 "../src/parse/scanner_lex.re"
        {
                                        goto config;
                                }
-#line 2267 "src/parse/scanner_lex.cc"
+#line 2273 "src/parse/scanner_lex.cc"
 yy350:
        ++YYCURSOR;
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        goto yy353;
 yy351:
-#line 599 "../src/parse/scanner_lex.re"
+#line 606 "../src/parse/scanner_lex.re"
        {
                                        lexer_state = LEX_CONFIG_VALUE;
                                        cur = cursor;
                                        RETURN('=');
                                }
-#line 2279 "src/parse/scanner_lex.cc"
+#line 2285 "src/parse/scanner_lex.cc"
 yy352:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy353:
        if (yybm[0+yych] & 128) {
                goto yy352;
@@ -2288,18 +2294,18 @@ yy353:
 yy354:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy355:
        if (yych == '\t') goto yy354;
        if (yych == ' ') goto yy354;
        goto yy349;
 }
-#line 607 "../src/parse/scanner_lex.re"
+#line 614 "../src/parse/scanner_lex.re"
 
 
 value:
 
-#line 2303 "src/parse/scanner_lex.cc"
+#line 2309 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2337,7 +2343,7 @@ value:
                248, 248, 248, 248, 248, 248, 248, 248, 
        };
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '&') {
                if (yych <= '\r') {
                        if (yych <= 0x08) goto yy364;
@@ -2366,36 +2372,36 @@ value:
                }
        }
 yy358:
-#line 617 "../src/parse/scanner_lex.re"
+#line 624 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        yylval.str = new std::string (tok, cur - tok);
                                        lexer_state = LEX_NORMAL;
                                        return VALUE;
                                }
-#line 2377 "src/parse/scanner_lex.cc"
+#line 2383 "src/parse/scanner_lex.cc"
 yy359:
        ++YYCURSOR;
-       if (yybm[0+(yych = *YYCURSOR)] & 8) {
+       if (yybm[0+(yych = (YYCTYPE)*YYCURSOR)] & 8) {
                goto yy364;
        }
 yy360:
-#line 611 "../src/parse/scanner_lex.re"
+#line 618 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        yylval.number = atoi(std::string (tok, cur - tok).c_str());
                                        lexer_state = LEX_NORMAL;
                                        return NUMBER;
                                }
-#line 2391 "src/parse/scanner_lex.cc"
+#line 2397 "src/parse/scanner_lex.cc"
 yy361:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        if (yych <= '0') goto yy365;
        if (yych >= ':') goto yy365;
 yy362:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 4) {
                goto yy362;
        }
@@ -2413,7 +2419,7 @@ yy362:
 yy364:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy365:
        if (yybm[0+yych] & 8) {
                goto yy364;
@@ -2422,7 +2428,7 @@ yy365:
 yy366:
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 16) {
                goto yy366;
        }
@@ -2437,7 +2443,7 @@ yy366:
 yy368:
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 32) {
                goto yy368;
        }
@@ -2450,7 +2456,7 @@ yy368:
 yy370:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 64) {
                goto yy370;
        }
@@ -2463,7 +2469,7 @@ yy372:
 yy373:
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych <= 0x08) goto yy368;
@@ -2483,18 +2489,18 @@ yy373:
                }
        }
 yy374:
-       yych = *++YYCURSOR;
+       yych = (YYCTYPE)*++YYCURSOR;
        goto yy358;
 yy375:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy372;
        goto yy370;
 yy376:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yybm[0+yych] & 128) {
                goto yy376;
        }
@@ -2504,7 +2510,7 @@ yy376:
 yy378:
        YYMARKER = ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '\r') {
                if (yych <= '\t') {
                        if (yych <= 0x08) goto yy366;
@@ -2526,11 +2532,11 @@ yy378:
 yy379:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy372;
        goto yy376;
 }
-#line 623 "../src/parse/scanner_lex.re"
+#line 630 "../src/parse/scanner_lex.re"
 
 }
 
@@ -2553,7 +2559,7 @@ void Scanner::set_sourceline(char *& cursor)
 sourceline:
        tok = cursor;
 
-#line 2557 "src/parse/scanner_lex.cc"
+#line 2563 "src/parse/scanner_lex.cc"
 {
        YYCTYPE yych;
        static const unsigned char yybm[] = {
@@ -2591,7 +2597,7 @@ sourceline:
                128, 128, 128, 128, 128, 128, 128, 128, 
        };
        if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych <= '!') {
                if (yych == '\n') goto yy384;
        } else {
@@ -2602,14 +2608,14 @@ sourceline:
 yy382:
        ++YYCURSOR;
 yy383:
-#line 667 "../src/parse/scanner_lex.re"
+#line 674 "../src/parse/scanner_lex.re"
        {
                                        goto sourceline;
                                }
-#line 2610 "src/parse/scanner_lex.cc"
+#line 2616 "src/parse/scanner_lex.cc"
 yy384:
        ++YYCURSOR;
-#line 655 "../src/parse/scanner_lex.re"
+#line 662 "../src/parse/scanner_lex.re"
        {
                                        if (cursor == eof)
                                        {
@@ -2622,27 +2628,27 @@ yy384:
                                        tok = cursor;
                                        return; 
                                }
-#line 2626 "src/parse/scanner_lex.cc"
+#line 2632 "src/parse/scanner_lex.cc"
 yy386:
-       yych = *(YYMARKER = ++YYCURSOR);
+       yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
        if (yych == '\n') goto yy383;
        goto yy392;
 yy387:
        ++YYCURSOR;
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        goto yy390;
 yy388:
-#line 645 "../src/parse/scanner_lex.re"
+#line 652 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        cline = atoi(std::string (tok, cur - tok).c_str());
                                        goto sourceline; 
                                }
-#line 2642 "src/parse/scanner_lex.cc"
+#line 2648 "src/parse/scanner_lex.cc"
 yy389:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy390:
        if (yybm[0+yych] & 64) {
                goto yy389;
@@ -2651,7 +2657,7 @@ yy390:
 yy391:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
 yy392:
        if (yybm[0+yych] & 128) {
                goto yy391;
@@ -2665,20 +2671,20 @@ yy393:
 yy394:
        ++YYCURSOR;
        if (YYLIMIT <= YYCURSOR) YYFILL(1);
-       yych = *YYCURSOR;
+       yych = (YYCTYPE)*YYCURSOR;
        if (yych == '\n') goto yy393;
        goto yy391;
 yy395:
        ++YYCURSOR;
-#line 650 "../src/parse/scanner_lex.re"
+#line 657 "../src/parse/scanner_lex.re"
        {
                                        cur = cursor;
                                        escape (in.file_name, std::string (tok + 1, cur - tok - 2));
                                        goto sourceline; 
                                }
-#line 2680 "src/parse/scanner_lex.cc"
+#line 2686 "src/parse/scanner_lex.cc"
 }
-#line 670 "../src/parse/scanner_lex.re"
+#line 677 "../src/parse/scanner_lex.re"
 
 }
 
index e7032ed50c2be9e4c2436ca7cc2476bdd9ffdb43..ddc97c151765b9b34d256f66714ac16ba42d9a28 100644 (file)
@@ -28,6 +28,13 @@ extern YYSTYPE yylval;
 namespace re2c
 {
 
+// source code is in ASCII: pointers have type 'char *'
+// but re2c makes an implicit assumption that YYCTYPE is unsigned
+// when it generates comparisons
+/*!re2c
+       re2c:yych:conversion = 1;
+*/
+
 /*!re2c
 zero    = "\000";
 dot     = .;