/* Generated by re2c 0.13.5 on Fri May 22 14:32:01 2009 */
#line 1 "cpp.re"
/*=============================================================================
    Boost.Wave: A Standard compliant C++ preprocessor library

    Copyright (c) 2001 Daniel C. Nuffer
    Copyright (c) 2001-2010 Hartmut Kaiser. 
    Distributed under the Boost Software License, Version 1.0. (See accompanying 
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

    This is a lexer conforming to the Standard with a few exceptions.
    So it does allow the '$' to be part of identifiers. If you need strict 
    Standards conforming behaviour, please include the lexer definition 
    provided in the file strict_cpp.re.

    TODO: 
        handle errors better.
=============================================================================*/

#line 40 "cpp.re"



#line 25 "cpp_re.inc"
{
    YYCTYPE yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        /* table 1 .. 8: 0 */
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,  58,  32,  58,  58,  64,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
         58,  58,  50,  58,  62,  58,  58,  56, 
         58,  58, 154,  58,  58,  58,  58,  58, 
         62,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  58,  58,  58,  58,  42,  56, 
         58,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  58,  57,  58,  58,  62, 
         58,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  62,  62,  62,  62,  62, 
         62,  62,  62,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
         58,  58,  58,  58,  58,  58,  58,  58, 
        /* table 9 .. 12: 256 */
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,  48,   0,  48,  48,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
         48,  32,   0,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         96,  96,  96,  96,  96,  96,  96,  96, 
         96,  96,  32,  32,  32,  32,  32, 128, 
         32,  96,  96,  96,  96,  96,  96,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,   0,  32,  32,  32, 
         32,  96,  96,  96,  96,  96,  96,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
         32,  32,  32,  32,  32,  32,  32,  32, 
    };

    if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
    yych = *YYCURSOR;
    switch (yych) {
    case 0x00:    goto yy88;
    case 0x01:
    case 0x02:
    case 0x03:
    case 0x04:
    case 0x05:
    case 0x06:
    case 0x07:
    case 0x08:
    case 0x0E:
    case 0x0F:
    case 0x10:
    case 0x11:
    case 0x12:
    case 0x13:
    case 0x14:
    case 0x15:
    case 0x16:
    case 0x17:
    case 0x18:
    case 0x19:
    case 0x1A:
    case 0x1B:
    case 0x1C:
    case 0x1D:
    case 0x1E:
    case 0x1F:    goto yy91;
    case '\t':
    case '\v':
    case '\f':    goto yy82;
    case '\n':    goto yy85;
    case '\r':    goto yy87;
    case ' ':    goto yy84;
    case '!':    goto yy68;
    case '"':    goto yy81;
    case '#':    goto yy45;
    case '$':
    case 'A':
    case 'B':
    case 'C':
    case 'D':
    case 'E':
    case 'F':
    case 'G':
    case 'H':
    case 'I':
    case 'J':
    case 'K':
    case 'M':
    case 'N':
    case 'O':
    case 'P':
    case 'Q':
    case 'R':
    case 'S':
    case 'T':
    case 'U':
    case 'V':
    case 'W':
    case 'X':
    case 'Y':
    case 'Z':
    case 'h':
    case 'j':
    case 'k':
    case 'q':
    case 'y':
    case 'z':    goto yy76;
    case '%':    goto yy37;
    case '&':    goto yy62;
    case '\'':    goto yy80;
    case '(':    goto yy47;
    case ')':    goto yy49;
    case '*':    goto yy57;
    case '+':    goto yy53;
    case ',':    goto yy74;
    case '-':    goto yy55;
    case '.':    goto yy4;
    case '/':    goto yy2;
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9':    goto yy6;
    case ':':    goto yy43;
    case ';':    goto yy51;
    case '<':    goto yy33;
    case '=':    goto yy70;
    case '>':    goto yy72;
    case '?':    goto yy31;
    case 'L':    goto yy77;
    case '[':    goto yy39;
    case '\\':    goto yy78;
    case ']':    goto yy41;
    case '^':    goto yy59;
    case '_':    goto yy28;
    case 'a':    goto yy8;
    case 'b':    goto yy10;
    case 'c':    goto yy11;
    case 'd':    goto yy12;
    case 'e':    goto yy13;
    case 'f':    goto yy14;
    case 'g':    goto yy15;
    case 'i':    goto yy16;
    case 'l':    goto yy17;
    case 'm':    goto yy18;
    case 'n':    goto yy19;
    case 'o':    goto yy20;
    case 'p':    goto yy21;
    case 'r':    goto yy22;
    case 's':    goto yy23;
    case 't':    goto yy24;
    case 'u':    goto yy25;
    case 'v':    goto yy26;
    case 'w':    goto yy27;
    case 'x':    goto yy61;
    case '{':    goto yy29;
    case '|':    goto yy64;
    case '}':    goto yy35;
    case '~':    goto yy66;
    default:    goto yy90;
    }
yy2:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '.') {
        if (yych == '*') goto yy922;
    } else {
        if (yych <= '/') goto yy920;
        if (yych == '=') goto yy918;
    }
#line 178 "cpp.re"
    { BOOST_WAVE_RET(T_DIVIDE); }
#line 238 "cpp_re.inc"
yy4:
    yyaccept = 0;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '-') {
        if (yych == '*') goto yy912;
    } else {
        if (yych <= '.') goto yy914;
        if (yych <= '/') goto yy5;
        if (yych <= '9') goto yy915;
    }
yy5:
#line 164 "cpp.re"
    { BOOST_WAVE_RET(T_DOT); }
#line 252 "cpp_re.inc"
yy6:
    ++YYCURSOR;
yy7:
#line 45 "cpp.re"
    { goto pp_number; }
#line 258 "cpp_re.inc"
yy8:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'r') {
        if (yych == 'n') goto yy898;
        goto yy195;
    } else {
        if (yych <= 's') goto yy899;
        if (yych == 'u') goto yy900;
        goto yy195;
    }
yy9:
#line 243 "cpp.re"
    { BOOST_WAVE_RET(T_IDENTIFIER); }
#line 273 "cpp_re.inc"
yy10:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'n') {
        if (yych == 'i') goto yy880;
        goto yy195;
    } else {
        if (yych <= 'o') goto yy881;
        if (yych == 'r') goto yy882;
        goto yy195;
    }
yy11:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    switch (yych) {
    case 'a':    goto yy842;
    case 'h':    goto yy843;
    case 'l':    goto yy844;
    case 'o':    goto yy845;
    default:    goto yy195;
    }
yy12:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'n') {
        if (yych == 'e') goto yy811;
        goto yy195;
    } else {
        if (yych <= 'o') goto yy812;
        if (yych == 'y') goto yy814;
        goto yy195;
    }
yy13:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'm') {
        if (yych == 'l') goto yy786;
        goto yy195;
    } else {
        if (yych <= 'n') goto yy787;
        if (yych == 'x') goto yy788;
        goto yy195;
    }
yy14:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    switch (yych) {
    case 'a':    goto yy767;
    case 'l':    goto yy768;
    case 'o':    goto yy769;
    case 'r':    goto yy770;
    default:    goto yy195;
    }
yy15:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy763;
    goto yy195;
yy16:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'l') {
        if (yych == 'f') goto yy747;
        goto yy195;
    } else {
        if (yych <= 'm') goto yy749;
        if (yych <= 'n') goto yy750;
        goto yy195;
    }
yy17:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy743;
    goto yy195;
yy18:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'u') goto yy736;
    goto yy195;
yy19:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'd') {
        if (yych == 'a') goto yy717;
        goto yy195;
    } else {
        if (yych <= 'e') goto yy718;
        if (yych == 'o') goto yy719;
        goto yy195;
    }
yy20:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'p') goto yy703;
    if (yych == 'r') goto yy704;
    goto yy195;
yy21:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'r') goto yy682;
    if (yych == 'u') goto yy683;
    goto yy195;
yy22:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy654;
    goto yy195;
yy23:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 's') {
        if (yych <= 'g') goto yy195;
        if (yych <= 'h') goto yy615;
        if (yych <= 'i') goto yy616;
        goto yy195;
    } else {
        if (yych <= 't') goto yy617;
        if (yych == 'w') goto yy618;
        goto yy195;
    }
yy24:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'h') {
        if (yych == 'e') goto yy578;
        if (yych <= 'g') goto yy195;
        goto yy579;
    } else {
        if (yych <= 'r') {
            if (yych <= 'q') goto yy195;
            goto yy580;
        } else {
            if (yych == 'y') goto yy581;
            goto yy195;
        }
    }
yy25:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy561;
    if (yych == 's') goto yy562;
    goto yy195;
yy26:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy543;
    if (yych == 'o') goto yy544;
    goto yy195;
yy27:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'c') goto yy531;
    if (yych == 'h') goto yy532;
    goto yy195;
yy28:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    switch (yych) {
    case '_':    goto yy442;
    case 'a':    goto yy443;
    case 'b':    goto yy444;
    case 'c':    goto yy445;
    case 'd':    goto yy446;
    case 'f':    goto yy447;
    case 'i':    goto yy448;
    case 's':    goto yy449;
    default:    goto yy195;
    }
yy29:
    ++YYCURSOR;
#line 128 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE); }
#line 446 "cpp_re.inc"
yy31:
    yyaccept = 2;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '?') goto yy407;
yy32:
#line 153 "cpp.re"
    { BOOST_WAVE_RET(T_QUESTION_MARK); }
#line 454 "cpp_re.inc"
yy33:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= ':') {
        if (yych == '%') goto yy403;
        if (yych >= ':') goto yy401;
    } else {
        if (yych <= ';') goto yy34;
        if (yych <= '<') goto yy399;
        if (yych <= '=') goto yy397;
    }
yy34:
#line 194 "cpp.re"
    { BOOST_WAVE_RET(T_LESS); }
#line 468 "cpp_re.inc"
yy35:
    ++YYCURSOR;
#line 131 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE); }
#line 473 "cpp_re.inc"
yy37:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') {
        if (yych == ':') goto yy388;
    } else {
        if (yych <= '=') goto yy390;
        if (yych <= '>') goto yy392;
    }
#line 179 "cpp.re"
    { BOOST_WAVE_RET(T_PERCENT); }
#line 484 "cpp_re.inc"
yy39:
    ++YYCURSOR;
#line 134 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET); }
#line 489 "cpp_re.inc"
yy41:
    ++YYCURSOR;
#line 137 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
#line 494 "cpp_re.inc"
yy43:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == ':') goto yy384;
    if (yych == '>') goto yy386;
#line 151 "cpp.re"
    { BOOST_WAVE_RET(T_COLON); }
#line 501 "cpp_re.inc"
yy45:
    yyaccept = 3;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'c') {
        if (yych <= ' ') {
            if (yych <= '\n') {
                if (yych == '\t') goto yy261;
            } else {
                if (yych <= '\f') goto yy261;
                if (yych >= ' ') goto yy261;
            }
        } else {
            if (yych <= '.') {
                if (yych == '#') goto yy272;
            } else {
                if (yych <= '/') goto yy261;
                if (yych == '?') goto yy271;
            }
        }
    } else {
        if (yych <= 'p') {
            if (yych <= 'i') {
                if (yych <= 'e') goto yy261;
                if (yych >= 'i') goto yy261;
            } else {
                if (yych == 'l') goto yy261;
                if (yych >= 'p') goto yy261;
            }
        } else {
            if (yych <= 't') {
                if (yych == 'r') goto yy261;
            } else {
                if (yych == 'v') goto yy46;
                if (yych <= 'w') goto yy261;
            }
        }
    }
yy46:
#line 140 "cpp.re"
    { BOOST_WAVE_RET(T_POUND); }
#line 542 "cpp_re.inc"
yy47:
    ++YYCURSOR;
#line 148 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTPAREN); }
#line 547 "cpp_re.inc"
yy49:
    ++YYCURSOR;
#line 149 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTPAREN); }
#line 552 "cpp_re.inc"
yy51:
    ++YYCURSOR;
#line 150 "cpp.re"
    { BOOST_WAVE_RET(T_SEMICOLON); }
#line 557 "cpp_re.inc"
yy53:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '+') goto yy256;
    if (yych == '=') goto yy258;
#line 175 "cpp.re"
    { BOOST_WAVE_RET(T_PLUS); }
#line 564 "cpp_re.inc"
yy55:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') {
        if (yych == '-') goto yy250;
    } else {
        if (yych <= '=') goto yy252;
        if (yych <= '>') goto yy248;
    }
#line 176 "cpp.re"
    { BOOST_WAVE_RET(T_MINUS); }
#line 575 "cpp_re.inc"
yy57:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy246;
#line 177 "cpp.re"
    { BOOST_WAVE_RET(T_STAR); }
#line 581 "cpp_re.inc"
yy59:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy244;
#line 180 "cpp.re"
    { BOOST_WAVE_RET(T_XOR); }
#line 587 "cpp_re.inc"
yy61:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy237;
    goto yy195;
yy62:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '&') goto yy233;
    if (yych == '=') goto yy235;
#line 183 "cpp.re"
    { BOOST_WAVE_RET(T_AND); }
#line 599 "cpp_re.inc"
yy64:
    yyaccept = 4;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '>') {
        if (yych == '=') goto yy228;
    } else {
        if (yych <= '?') goto yy225;
        if (yych == '|') goto yy226;
    }
yy65:
#line 185 "cpp.re"
    { BOOST_WAVE_RET(T_OR); }
#line 612 "cpp_re.inc"
yy66:
    ++YYCURSOR;
#line 188 "cpp.re"
    { BOOST_WAVE_RET(T_COMPL); }
#line 617 "cpp_re.inc"
yy68:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy223;
#line 191 "cpp.re"
    { BOOST_WAVE_RET(T_NOT); }
#line 623 "cpp_re.inc"
yy70:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy221;
#line 193 "cpp.re"
    { BOOST_WAVE_RET(T_ASSIGN); }
#line 629 "cpp_re.inc"
yy72:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') goto yy73;
    if (yych <= '=') goto yy215;
    if (yych <= '>') goto yy217;
yy73:
#line 195 "cpp.re"
    { BOOST_WAVE_RET(T_GREATER); }
#line 638 "cpp_re.inc"
yy74:
    ++YYCURSOR;
#line 227 "cpp.re"
    { BOOST_WAVE_RET(T_COMMA); }
#line 643 "cpp_re.inc"
yy76:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    goto yy195;
yy77:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych <= '\'') {
        if (yych == '"') goto yy96;
        if (yych <= '&') goto yy9;
        goto yy214;
    } else {
        if (yych <= '?') {
            if (yych <= '>') goto yy9;
            goto yy197;
        } else {
            if (yych == '\\') goto yy196;
            goto yy9;
        }
    }
yy78:
    yyaccept = 5;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'U') goto yy186;
    if (yych == 'u') goto yy185;
yy79:
#line 299 "cpp.re"
    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
#line 675 "cpp_re.inc"
yy80:
    yyaccept = 5;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '\f') {
        if (yych == '\t') goto yy142;
        if (yych <= '\n') goto yy79;
        goto yy142;
    } else {
        if (yych <= 0x1F) goto yy79;
        if (yych == '\'') goto yy79;
        goto yy142;
    }
yy81:
    yyaccept = 5;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '\n') {
        if (yych == '\t') goto yy97;
        goto yy79;
    } else {
        if (yych <= '\f') goto yy97;
        if (yych <= 0x1F) goto yy79;
        goto yy97;
    }
yy82:
    ++YYCURSOR;
    yych = *YYCURSOR;
    goto yy95;
yy83:
#line 279 "cpp.re"
    { BOOST_WAVE_RET(T_SPACE); }
#line 706 "cpp_re.inc"
yy84:
    yych = *++YYCURSOR;
    goto yy95;
yy85:
    ++YYCURSOR;
yy86:
#line 282 "cpp.re"
    {
        s->line++;
        cursor.column = 1;
        BOOST_WAVE_RET(T_NEWLINE);
    }
#line 719 "cpp_re.inc"
yy87:
    yych = *++YYCURSOR;
    if (yych == '\n') goto yy93;
    goto yy86;
yy88:
    ++YYCURSOR;
#line 289 "cpp.re"
    {
        if (s->eof && cursor != s->eof) 
        {
            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                "invalid character '\\000' in input stream");
        }
        BOOST_WAVE_RET(T_EOF);
    }
#line 736 "cpp_re.inc"
yy90:
    yych = *++YYCURSOR;
    goto yy79;
yy91:
    ++YYCURSOR;
#line 302 "cpp.re"
    {
        // flag the error
        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
            "invalid character '\\%03o' in input stream", *--YYCURSOR);
    }
#line 749 "cpp_re.inc"
yy93:
    yych = *++YYCURSOR;
    goto yy86;
yy94:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy95:
    if (yybm[256+yych] & 16) {
        goto yy94;
    }
    goto yy83;
yy96:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy97:
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy99;
    goto yy100;
yy98:
    YYCURSOR = YYMARKER;
    if (yyaccept <= 51) {
        if (yyaccept <= 25) {
            if (yyaccept <= 12) {
                if (yyaccept <= 6) {
                    if (yyaccept <= 3) {
                        if (yyaccept <= 1) {
                            if (yyaccept <= 0) {
                                goto yy5;
                            } else {
                                goto yy9;
                            }
                        } else {
                            if (yyaccept <= 2) {
                                goto yy32;
                            } else {
                                goto yy46;
                            }
                        }
                    } else {
                        if (yyaccept <= 5) {
                            if (yyaccept <= 4) {
                                goto yy65;
                            } else {
                                goto yy79;
                            }
                        } else {
                            goto yy102;
                        }
                    }
                } else {
                    if (yyaccept <= 9) {
                        if (yyaccept <= 8) {
                            if (yyaccept <= 7) {
                                goto yy152;
                            } else {
                                goto yy239;
                            }
                        } else {
                            goto yy243;
                        }
                    } else {
                        if (yyaccept <= 11) {
                            if (yyaccept <= 10) {
                                goto yy279;
                            } else {
                                goto yy294;
                            }
                        } else {
                            goto yy389;
                        }
                    }
                }
            } else {
                if (yyaccept <= 19) {
                    if (yyaccept <= 16) {
                        if (yyaccept <= 14) {
                            if (yyaccept <= 13) {
                                goto yy417;
                            } else {
                                goto yy421;
                            }
                        } else {
                            if (yyaccept <= 15) {
                                goto yy425;
                            } else {
                                goto yy456;
                            }
                        }
                    } else {
                        if (yyaccept <= 18) {
                            if (yyaccept <= 17) {
                                goto yy462;
                            } else {
                                goto yy470;
                            }
                        } else {
                            goto yy478;
                        }
                    }
                } else {
                    if (yyaccept <= 22) {
                        if (yyaccept <= 21) {
                            if (yyaccept <= 20) {
                                goto yy483;
                            } else {
                                goto yy488;
                            }
                        } else {
                            goto yy491;
                        }
                    } else {
                        if (yyaccept <= 24) {
                            if (yyaccept <= 23) {
                                goto yy501;
                            } else {
                                goto yy507;
                            }
                        } else {
                            goto yy510;
                        }
                    }
                }
            }
        } else {
            if (yyaccept <= 38) {
                if (yyaccept <= 32) {
                    if (yyaccept <= 29) {
                        if (yyaccept <= 27) {
                            if (yyaccept <= 26) {
                                goto yy517;
                            } else {
                                goto yy524;
                            }
                        } else {
                            if (yyaccept <= 28) {
                                goto yy526;
                            } else {
                                goto yy528;
                            }
                        }
                    } else {
                        if (yyaccept <= 31) {
                            if (yyaccept <= 30) {
                                goto yy530;
                            } else {
                                goto yy536;
                            }
                        } else {
                            goto yy542;
                        }
                    }
                } else {
                    if (yyaccept <= 35) {
                        if (yyaccept <= 34) {
                            if (yyaccept <= 33) {
                                goto yy552;
                            } else {
                                goto yy554;
                            }
                        } else {
                            goto yy560;
                        }
                    } else {
                        if (yyaccept <= 37) {
                            if (yyaccept <= 36) {
                                goto yy566;
                            } else {
                                goto yy574;
                            }
                        } else {
                            goto yy577;
                        }
                    }
                }
            } else {
                if (yyaccept <= 45) {
                    if (yyaccept <= 42) {
                        if (yyaccept <= 40) {
                            if (yyaccept <= 39) {
                                goto yy590;
                            } else {
                                goto yy592;
                            }
                        } else {
                            if (yyaccept <= 41) {
                                goto yy595;
                            } else {
                                goto yy598;
                            }
                        }
                    } else {
                        if (yyaccept <= 44) {
                            if (yyaccept <= 43) {
                                goto yy600;
                            } else {
                                goto yy605;
                            }
                        } else {
                            goto yy607;
                        }
                    }
                } else {
                    if (yyaccept <= 48) {
                        if (yyaccept <= 47) {
                            if (yyaccept <= 46) {
                                goto yy614;
                            } else {
                                goto yy623;
                            }
                        } else {
                            goto yy629;
                        }
                    } else {
                        if (yyaccept <= 50) {
                            if (yyaccept <= 49) {
                                goto yy633;
                            } else {
                                goto yy639;
                            }
                        } else {
                            goto yy645;
                        }
                    }
                }
            }
        }
    } else {
        if (yyaccept <= 77) {
            if (yyaccept <= 64) {
                if (yyaccept <= 58) {
                    if (yyaccept <= 55) {
                        if (yyaccept <= 53) {
                            if (yyaccept <= 52) {
                                goto yy649;
                            } else {
                                goto yy653;
                            }
                        } else {
                            if (yyaccept <= 54) {
                                goto yy661;
                            } else {
                                goto yy675;
                            }
                        }
                    } else {
                        if (yyaccept <= 57) {
                            if (yyaccept <= 56) {
                                goto yy681;
                            } else {
                                goto yy688;
                            }
                        } else {
                            goto yy697;
                        }
                    }
                } else {
                    if (yyaccept <= 61) {
                        if (yyaccept <= 60) {
                            if (yyaccept <= 59) {
                                goto yy702;
                            } else {
                                goto yy705;
                            }
                        } else {
                            goto yy709;
                        }
                    } else {
                        if (yyaccept <= 63) {
                            if (yyaccept <= 62) {
                                goto yy716;
                            } else {
                                goto yy721;
                            }
                        } else {
                            goto yy725;
                        }
                    }
                }
            } else {
                if (yyaccept <= 71) {
                    if (yyaccept <= 68) {
                        if (yyaccept <= 66) {
                            if (yyaccept <= 65) {
                                goto yy727;
                            } else {
                                goto yy735;
                            }
                        } else {
                            if (yyaccept <= 67) {
                                goto yy742;
                            } else {
                                goto yy746;
                            }
                        }
                    } else {
                        if (yyaccept <= 70) {
                            if (yyaccept <= 69) {
                                goto yy748;
                            } else {
                                goto yy753;
                            }
                        } else {
                            goto yy757;
                        }
                    }
                } else {
                    if (yyaccept <= 74) {
                        if (yyaccept <= 73) {
                            if (yyaccept <= 72) {
                                goto yy762;
                            } else {
                                goto yy766;
                            }
                        } else {
                            goto yy775;
                        }
                    } else {
                        if (yyaccept <= 76) {
                            if (yyaccept <= 75) {
                                goto yy777;
                            } else {
                                goto yy781;
                            }
                        } else {
                            goto yy785;
                        }
                    }
                }
            }
        } else {
            if (yyaccept <= 90) {
                if (yyaccept <= 84) {
                    if (yyaccept <= 81) {
                        if (yyaccept <= 79) {
                            if (yyaccept <= 78) {
                                goto yy794;
                            } else {
                                goto yy799;
                            }
                        } else {
                            if (yyaccept <= 80) {
                                goto yy804;
                            } else {
                                goto yy807;
                            }
                        }
                    } else {
                        if (yyaccept <= 83) {
                            if (yyaccept <= 82) {
                                goto yy810;
                            } else {
                                goto yy813;
                            }
                        } else {
                            goto yy825;
                        }
                    }
                } else {
                    if (yyaccept <= 87) {
                        if (yyaccept <= 86) {
                            if (yyaccept <= 85) {
                                goto yy830;
                            } else {
                                goto yy836;
                            }
                        } else {
                            goto yy841;
                        }
                    } else {
                        if (yyaccept <= 89) {
                            if (yyaccept <= 88) {
                                goto yy850;
                            } else {
                                goto yy857;
                            }
                        } else {
                            goto yy859;
                        }
                    }
                }
            } else {
                if (yyaccept <= 97) {
                    if (yyaccept <= 94) {
                        if (yyaccept <= 92) {
                            if (yyaccept <= 91) {
                                goto yy865;
                            } else {
                                goto yy869;
                            }
                        } else {
                            if (yyaccept <= 93) {
                                goto yy872;
                            } else {
                                goto yy877;
                            }
                        }
                    } else {
                        if (yyaccept <= 96) {
                            if (yyaccept <= 95) {
                                goto yy879;
                            } else {
                                goto yy886;
                            }
                        } else {
                            goto yy889;
                        }
                    }
                } else {
                    if (yyaccept <= 100) {
                        if (yyaccept <= 99) {
                            if (yyaccept <= 98) {
                                goto yy894;
                            } else {
                                goto yy897;
                            }
                        } else {
                            goto yy903;
                        }
                    } else {
                        if (yyaccept <= 102) {
                            if (yyaccept <= 101) {
                                goto yy905;
                            } else {
                                goto yy907;
                            }
                        } else {
                            goto yy911;
                        }
                    }
                }
            }
        }
    }
yy99:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy112;
yy100:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '`') {
        if (yych <= '7') {
            if (yych <= '&') {
                if (yych == '"') goto yy96;
                goto yy98;
            } else {
                if (yych <= '\'') goto yy96;
                if (yych <= '/') goto yy98;
                goto yy107;
            }
        } else {
            if (yych <= 'T') {
                if (yych == '?') goto yy105;
                goto yy98;
            } else {
                if (yych <= 'U') goto yy104;
                if (yych == '\\') goto yy96;
                goto yy98;
            }
        }
    } else {
        if (yych <= 'r') {
            if (yych <= 'f') {
                if (yych <= 'b') goto yy96;
                if (yych <= 'e') goto yy98;
                goto yy96;
            } else {
                if (yych == 'n') goto yy96;
                if (yych <= 'q') goto yy98;
                goto yy96;
            }
        } else {
            if (yych <= 'u') {
                if (yych <= 's') goto yy98;
                if (yych <= 't') goto yy96;
                goto yy103;
            } else {
                if (yych <= 'v') goto yy96;
                if (yych == 'x') goto yy106;
                goto yy98;
            }
        }
    }
yy101:
    ++YYCURSOR;
yy102:
#line 249 "cpp.re"
    { BOOST_WAVE_RET(T_STRINGLIT); }
#line 1251 "cpp_re.inc"
yy103:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy138;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy138;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy138;
        goto yy98;
    }
yy104:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy131;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy131;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy131;
        goto yy98;
    }
yy105:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy111;
    goto yy100;
yy106:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 64) {
        goto yy109;
    }
    goto yy98;
yy107:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '"') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy96;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy96;
            if (yych <= 0x1F) goto yy98;
            if (yych <= '!') goto yy96;
            goto yy101;
        }
    } else {
        if (yych <= '>') {
            if (yych <= '/') goto yy96;
            if (yych >= '8') goto yy96;
        } else {
            if (yych <= '?') goto yy99;
            if (yych == '\\') goto yy100;
            goto yy96;
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy99;
    goto yy100;
yy109:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 64) {
        goto yy109;
    }
    if (yych <= '!') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy96;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy96;
            if (yych <= 0x1F) goto yy98;
            goto yy96;
        }
    } else {
        if (yych <= '?') {
            if (yych <= '"') goto yy101;
            if (yych <= '>') goto yy96;
            goto yy99;
        } else {
            if (yych == '\\') goto yy100;
            goto yy96;
        }
    }
yy111:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych >= '\\') goto yy100;
yy112:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 128) {
        goto yy112;
    }
    if (yych <= '!') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy96;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy96;
            if (yych <= 0x1F) goto yy98;
            goto yy96;
        }
    } else {
        if (yych <= '/') {
            if (yych <= '"') goto yy101;
            if (yych <= '.') goto yy96;
        } else {
            if (yych == '\\') goto yy100;
            goto yy96;
        }
    }
yy114:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 1) {
        goto yy114;
    }
    if (yych <= '7') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy118;
                if (yych <= '/') goto yy96;
                goto yy107;
            }
        }
    } else {
        if (yych <= 'U') {
            if (yych == '?') goto yy119;
            if (yych <= 'T') goto yy96;
            goto yy117;
        } else {
            if (yych <= 'u') {
                if (yych <= 't') goto yy96;
            } else {
                if (yych == 'x') goto yy109;
                goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
                goto yy128;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
            goto yy128;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych <= 'f') goto yy128;
                goto yy96;
            }
        }
    }
yy117:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
                goto yy121;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
            goto yy121;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych <= 'f') goto yy121;
                goto yy96;
            }
        }
    }
yy118:
    yyaccept = 6;
    YYMARKER = ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy102;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy99;
    goto yy100;
yy119:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych >= '\\') goto yy100;
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 128) {
        goto yy112;
    }
    if (yych <= '!') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy96;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy96;
            if (yych <= 0x1F) goto yy98;
            goto yy96;
        }
    } else {
        if (yych <= '/') {
            if (yych <= '"') goto yy101;
            if (yych <= '.') goto yy96;
            goto yy114;
        } else {
            if (yych == '\\') goto yy100;
            goto yy96;
        }
    }
yy121:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy99;
    goto yy100;
yy128:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy96;
            if (yych <= '\n') goto yy98;
            goto yy96;
        } else {
            if (yych <= '!') {
                if (yych <= 0x1F) goto yy98;
                goto yy96;
            } else {
                if (yych <= '"') goto yy101;
                if (yych <= '/') goto yy96;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy99;
            if (yych <= '@') goto yy96;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy96;
                goto yy100;
            } else {
                if (yych <= '`') goto yy96;
                if (yych >= 'g') goto yy96;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[256+yych] & 32) {
        goto yy96;
    }
    if (yych <= '!') goto yy98;
    if (yych <= '"') goto yy101;
    if (yych <= '[') goto yy99;
    goto yy100;
yy131:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy132;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy132:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy133;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy133:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy134;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy134:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy135;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy135:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy136;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy136:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy137;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy137:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy96;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy96;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy96;
        goto yy98;
    }
yy138:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy139;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy139:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy140;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy140:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy96;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy96;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy96;
        goto yy98;
    }
yy141:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy142:
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych >= '\\') goto yy144;
yy143:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy156;
yy144:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '`') {
        if (yych <= '7') {
            if (yych <= '&') {
                if (yych == '"') goto yy141;
                goto yy98;
            } else {
                if (yych <= '\'') goto yy141;
                if (yych <= '/') goto yy98;
                goto yy149;
            }
        } else {
            if (yych <= 'T') {
                if (yych == '?') goto yy147;
                goto yy98;
            } else {
                if (yych <= 'U') goto yy146;
                if (yych == '\\') goto yy141;
                goto yy98;
            }
        }
    } else {
        if (yych <= 'r') {
            if (yych <= 'f') {
                if (yych <= 'b') goto yy141;
                if (yych <= 'e') goto yy98;
                goto yy141;
            } else {
                if (yych == 'n') goto yy141;
                if (yych <= 'q') goto yy98;
                goto yy141;
            }
        } else {
            if (yych <= 'u') {
                if (yych <= 's') goto yy98;
                if (yych <= 't') goto yy141;
            } else {
                if (yych <= 'v') goto yy141;
                if (yych == 'x') goto yy148;
                goto yy98;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy182;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy182;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy182;
        goto yy98;
    }
yy146:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy175;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy175;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy175;
        goto yy98;
    }
yy147:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy155;
    goto yy144;
yy148:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy153;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy153;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy153;
        goto yy98;
    }
yy149:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\'') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy141;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy141;
            if (yych <= 0x1F) goto yy98;
            if (yych <= '&') goto yy141;
            goto yy151;
        }
    } else {
        if (yych <= '>') {
            if (yych <= '/') goto yy141;
            if (yych >= '8') goto yy141;
        } else {
            if (yych <= '?') goto yy143;
            if (yych == '\\') goto yy144;
            goto yy141;
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy143;
    goto yy144;
yy151:
    ++YYCURSOR;
yy152:
#line 246 "cpp.re"
    { BOOST_WAVE_RET(T_CHARLIT); }
#line 2098 "cpp_re.inc"
yy153:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
                goto yy153;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
            goto yy153;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych <= 'f') goto yy153;
                goto yy141;
            }
        }
    }
yy155:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych >= '\\') goto yy144;
yy156:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\'') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy141;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy141;
            if (yych <= 0x1F) goto yy98;
            if (yych <= '&') goto yy141;
            goto yy151;
        }
    } else {
        if (yych <= '>') {
            if (yych != '/') goto yy141;
        } else {
            if (yych <= '?') goto yy156;
            if (yych == '\\') goto yy144;
            goto yy141;
        }
    }
yy158:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '>') {
        if (yych <= 0x1F) {
            if (yych <= '\t') {
                if (yych <= 0x08) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\n') goto yy98;
                if (yych <= '\f') goto yy141;
                goto yy98;
            }
        } else {
            if (yych <= '\'') {
                if (yych <= '&') goto yy141;
                goto yy162;
            } else {
                if (yych <= '/') goto yy141;
                if (yych <= '7') goto yy149;
                goto yy141;
            }
        }
    } else {
        if (yych <= '\\') {
            if (yych <= 'T') {
                if (yych <= '?') goto yy163;
                goto yy141;
            } else {
                if (yych <= 'U') goto yy161;
                if (yych <= '[') goto yy141;
                goto yy158;
            }
        } else {
            if (yych <= 'u') {
                if (yych <= 't') goto yy141;
            } else {
                if (yych == 'x') goto yy153;
                goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
                goto yy172;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
            goto yy172;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych <= 'f') goto yy172;
                goto yy141;
            }
        }
    }
yy161:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
                goto yy165;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
            goto yy165;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych <= 'f') goto yy165;
                goto yy141;
            }
        }
    }
yy162:
    yyaccept = 7;
    YYMARKER = ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy152;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy143;
    goto yy144;
yy163:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych >= '\\') goto yy144;
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\'') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy141;
            goto yy98;
        } else {
            if (yych <= '\f') goto yy141;
            if (yych <= 0x1F) goto yy98;
            if (yych <= '&') goto yy141;
            goto yy151;
        }
    } else {
        if (yych <= '>') {
            if (yych == '/') goto yy158;
            goto yy141;
        } else {
            if (yych <= '?') goto yy156;
            if (yych == '\\') goto yy144;
            goto yy141;
        }
    }
yy165:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy143;
    goto yy144;
yy172:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych <= '\f') {
            if (yych == '\t') goto yy141;
            if (yych <= '\n') goto yy98;
            goto yy141;
        } else {
            if (yych <= '&') {
                if (yych <= 0x1F) goto yy98;
                goto yy141;
            } else {
                if (yych <= '\'') goto yy151;
                if (yych <= '/') goto yy141;
            }
        }
    } else {
        if (yych <= 'F') {
            if (yych == '?') goto yy143;
            if (yych <= '@') goto yy141;
        } else {
            if (yych <= '\\') {
                if (yych <= '[') goto yy141;
                goto yy144;
            } else {
                if (yych <= '`') goto yy141;
                if (yych >= 'g') goto yy141;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 2) {
        goto yy141;
    }
    if (yych <= '&') goto yy98;
    if (yych <= '\'') goto yy151;
    if (yych <= '[') goto yy143;
    goto yy144;
yy175:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy176;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy176:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy177;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy177:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy178;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy178:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy179;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy179:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy180;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy180:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy181;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy181:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy141;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy141;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy141;
        goto yy98;
    }
yy182:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy183;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy183:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy184;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy184:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy141;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy141;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy141;
        goto yy98;
    }
yy185:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy211;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy211;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy211;
        goto yy98;
    }
yy186:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy187;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy187:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy188;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy188:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy189;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy189:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy190;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy190:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy191;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy191:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy192;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy192:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy193;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy193:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy194;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy194:
    yyaccept = 1;
    YYMARKER = ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy195:
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych != '\\') goto yy9;
yy196:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == 'U') goto yy200;
    if (yych == 'u') goto yy199;
    goto yy98;
yy197:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych != '?') goto yy98;
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == '/') goto yy196;
    goto yy98;
yy199:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy208;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy208;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy208;
        goto yy98;
    }
yy200:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy201;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy201:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy202;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy202:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy203;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy203:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy204;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy204:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy205;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy205:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy206;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy206:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy207;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy207:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy194;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy194;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy194;
        goto yy98;
    }
yy208:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy209;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy209:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy210;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy210:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy194;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy194;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy194;
        goto yy98;
    }
yy211:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy212;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy212:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych >= ':') goto yy98;
    } else {
        if (yych <= 'F') goto yy213;
        if (yych <= '`') goto yy98;
        if (yych >= 'g') goto yy98;
    }
yy213:
    yych = *++YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy98;
        if (yych <= '9') goto yy194;
        goto yy98;
    } else {
        if (yych <= 'F') goto yy194;
        if (yych <= '`') goto yy98;
        if (yych <= 'f') goto yy194;
        goto yy98;
    }
yy214:
    yych = *++YYCURSOR;
    if (yych == '\'') goto yy98;
    goto yy142;
yy215:
    ++YYCURSOR;
#line 217 "cpp.re"
    { BOOST_WAVE_RET(T_GREATEREQUAL); }
#line 3028 "cpp_re.inc"
yy217:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy219;
#line 210 "cpp.re"
    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
#line 3034 "cpp_re.inc"
yy219:
    ++YYCURSOR;
#line 211 "cpp.re"
    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
#line 3039 "cpp_re.inc"
yy221:
    ++YYCURSOR;
#line 213 "cpp.re"
    { BOOST_WAVE_RET(T_EQUAL); }
#line 3044 "cpp_re.inc"
yy223:
    ++YYCURSOR;
#line 214 "cpp.re"
    { BOOST_WAVE_RET(T_NOTEQUAL); }
#line 3049 "cpp_re.inc"
yy225:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy230;
    goto yy98;
yy226:
    ++YYCURSOR;
#line 220 "cpp.re"
    { BOOST_WAVE_RET(T_OROR); }
#line 3058 "cpp_re.inc"
yy228:
    ++YYCURSOR;
#line 206 "cpp.re"
    { BOOST_WAVE_RET(T_ORASSIGN); }
#line 3063 "cpp_re.inc"
yy230:
    yych = *++YYCURSOR;
    if (yych != '!') goto yy98;
    ++YYCURSOR;
#line 222 "cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3070 "cpp_re.inc"
yy233:
    ++YYCURSOR;
#line 218 "cpp.re"
    { BOOST_WAVE_RET(T_ANDAND); }
#line 3075 "cpp_re.inc"
yy235:
    ++YYCURSOR;
#line 204 "cpp.re"
    { BOOST_WAVE_RET(T_ANDASSIGN); }
#line 3080 "cpp_re.inc"
yy237:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 8;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy240;
            if (yych <= '`') goto yy239;
            if (yych <= 'z') goto yy194;
        }
    }
yy239:
#line 182 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
#line 3107 "cpp_re.inc"
yy240:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'q') goto yy195;
    yyaccept = 9;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy243:
#line 202 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
#line 3125 "cpp_re.inc"
yy244:
    ++YYCURSOR;
#line 201 "cpp.re"
    { BOOST_WAVE_RET(T_XORASSIGN); }
#line 3130 "cpp_re.inc"
yy246:
    ++YYCURSOR;
#line 198 "cpp.re"
    { BOOST_WAVE_RET(T_STARASSIGN); }
#line 3135 "cpp_re.inc"
yy248:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '*') goto yy254;
#line 238 "cpp.re"
    { BOOST_WAVE_RET(T_ARROW); }
#line 3141 "cpp_re.inc"
yy250:
    ++YYCURSOR;
#line 226 "cpp.re"
    { BOOST_WAVE_RET(T_MINUSMINUS); }
#line 3146 "cpp_re.inc"
yy252:
    ++YYCURSOR;
#line 197 "cpp.re"
    { BOOST_WAVE_RET(T_MINUSASSIGN); }
#line 3151 "cpp_re.inc"
yy254:
    ++YYCURSOR;
#line 229 "cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_ARROW);
            }
            else {
                BOOST_WAVE_RET(T_ARROWSTAR); 
            }
        }
#line 3164 "cpp_re.inc"
yy256:
    ++YYCURSOR;
#line 225 "cpp.re"
    { BOOST_WAVE_RET(T_PLUSPLUS); }
#line 3169 "cpp_re.inc"
yy258:
    ++YYCURSOR;
#line 196 "cpp.re"
    { BOOST_WAVE_RET(T_PLUSASSIGN); }
#line 3174 "cpp_re.inc"
yy260:
    ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
    yych = *YYCURSOR;
yy261:
    if (yych <= 'h') {
        if (yych <= ' ') {
            if (yych <= '\n') {
                if (yych == '\t') goto yy260;
                goto yy98;
            } else {
                if (yych <= '\f') goto yy260;
                if (yych <= 0x1F) goto yy98;
                goto yy260;
            }
        } else {
            if (yych <= 'c') {
                if (yych != '/') goto yy98;
            } else {
                if (yych <= 'd') goto yy269;
                if (yych <= 'e') goto yy263;
                goto yy98;
            }
        }
    } else {
        if (yych <= 'q') {
            if (yych <= 'l') {
                if (yych <= 'i') goto yy270;
                if (yych <= 'k') goto yy98;
                goto yy267;
            } else {
                if (yych == 'p') goto yy266;
                goto yy98;
            }
        } else {
            if (yych <= 'u') {
                if (yych <= 'r') goto yy264;
                if (yych <= 't') goto yy98;
                goto yy268;
            } else {
                if (yych == 'w') goto yy265;
                goto yy98;
            }
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == '*') goto yy377;
    goto yy98;
yy263:
    yych = *++YYCURSOR;
    if (yych <= 'm') {
        if (yych == 'l') goto yy353;
        goto yy98;
    } else {
        if (yych <= 'n') goto yy354;
        if (yych == 'r') goto yy355;
        goto yy98;
    }
yy264:
    yych = *++YYCURSOR;
    if (yych == 'e') goto yy347;
    goto yy98;
yy265:
    yych = *++YYCURSOR;
    if (yych == 'a') goto yy340;
    goto yy98;
yy266:
    yych = *++YYCURSOR;
    if (yych == 'r') goto yy334;
    goto yy98;
yy267:
    yych = *++YYCURSOR;
    if (yych == 'i') goto yy330;
    goto yy98;
yy268:
    yych = *++YYCURSOR;
    if (yych == 'n') goto yy325;
    goto yy98;
yy269:
    yych = *++YYCURSOR;
    if (yych == 'e') goto yy319;
    goto yy98;
yy270:
    yych = *++YYCURSOR;
    if (yych == 'f') goto yy278;
    if (yych == 'n') goto yy277;
    goto yy98;
yy271:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy274;
    goto yy98;
yy272:
    ++YYCURSOR;
#line 143 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND); }
#line 3272 "cpp_re.inc"
yy274:
    yych = *++YYCURSOR;
    if (yych != '=') goto yy98;
    ++YYCURSOR;
#line 144 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3279 "cpp_re.inc"
yy277:
    yych = *++YYCURSOR;
    if (yych == 'c') goto yy289;
    goto yy98;
yy278:
    yyaccept = 10;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'd') goto yy281;
    if (yych == 'n') goto yy280;
yy279:
#line 261 "cpp.re"
    { BOOST_WAVE_RET(T_PP_IF); }
#line 3292 "cpp_re.inc"
yy280:
    yych = *++YYCURSOR;
    if (yych == 'd') goto yy285;
    goto yy98;
yy281:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'f') goto yy98;
    ++YYCURSOR;
#line 262 "cpp.re"
    { BOOST_WAVE_RET(T_PP_IFDEF); }
#line 3305 "cpp_re.inc"
yy285:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'f') goto yy98;
    ++YYCURSOR;
#line 263 "cpp.re"
    { BOOST_WAVE_RET(T_PP_IFNDEF); }
#line 3314 "cpp_re.inc"
yy289:
    yych = *++YYCURSOR;
    if (yych != 'l') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'u') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'd') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yyaccept = 11;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '_') goto yy295;
    goto yy297;
yy294:
#line 259 "cpp.re"
    { BOOST_WAVE_RET(T_PP_INCLUDE); }
#line 3331 "cpp_re.inc"
yy295:
    yych = *++YYCURSOR;
    if (yych == 'n') goto yy316;
    goto yy98;
yy296:
    yyaccept = 11;
    YYMARKER = ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
yy297:
    if (yych <= ' ') {
        if (yych <= '\n') {
            if (yych == '\t') goto yy296;
            goto yy294;
        } else {
            if (yych <= '\f') goto yy296;
            if (yych <= 0x1F) goto yy294;
            goto yy296;
        }
    } else {
        if (yych <= '.') {
            if (yych == '"') goto yy300;
            goto yy294;
        } else {
            if (yych <= '/') goto yy298;
            if (yych == '<') goto yy299;
            goto yy294;
        }
    }
yy298:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == '*') goto yy309;
    goto yy98;
yy299:
    yych = *++YYCURSOR;
    if (yych == '>') goto yy98;
    goto yy306;
yy300:
    yych = *++YYCURSOR;
    if (yych == '"') goto yy98;
    goto yy302;
yy301:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy302:
    if (yybm[0+yych] & 8) {
        goto yy301;
    }
    if (yych <= '!') goto yy98;
    ++YYCURSOR;
#line 256 "cpp.re"
    { BOOST_WAVE_RET(T_PP_QHEADER); }
#line 3387 "cpp_re.inc"
yy305:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
yy306:
    if (yybm[0+yych] & 16) {
        goto yy305;
    }
    if (yych <= '=') goto yy98;
    ++YYCURSOR;
#line 253 "cpp.re"
    { BOOST_WAVE_RET(T_PP_HHEADER); }
#line 3400 "cpp_re.inc"
yy309:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 32) {
        goto yy309;
    }
    if (yych == '\r') goto yy311;
    if (yych <= ')') goto yy98;
    goto yy313;
yy311:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 32) {
        goto yy309;
    }
    if (yych == '\r') goto yy311;
    if (yych <= ')') goto yy98;
yy313:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 128) {
        goto yy313;
    }
    if (yych <= '\r') {
        if (yych <= 0x08) goto yy98;
        if (yych <= '\f') goto yy309;
    } else {
        if (yych <= 0x1F) goto yy98;
        if (yych == '/') goto yy296;
        goto yy309;
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 32) {
        goto yy309;
    }
    if (yych == '\r') goto yy311;
    if (yych <= ')') goto yy98;
    goto yy313;
yy316:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'x') goto yy98;
    yych = *++YYCURSOR;
    if (yych == 't') goto yy296;
    goto yy98;
yy319:
    yych = *++YYCURSOR;
    if (yych != 'f') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'i') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    ++YYCURSOR;
#line 267 "cpp.re"
    { BOOST_WAVE_RET(T_PP_DEFINE); }
#line 3464 "cpp_re.inc"
yy325:
    yych = *++YYCURSOR;
    if (yych != 'd') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'f') goto yy98;
    ++YYCURSOR;
#line 268 "cpp.re"
    { BOOST_WAVE_RET(T_PP_UNDEF); }
#line 3475 "cpp_re.inc"
yy330:
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    ++YYCURSOR;
#line 269 "cpp.re"
    { BOOST_WAVE_RET(T_PP_LINE); }
#line 3484 "cpp_re.inc"
yy334:
    yych = *++YYCURSOR;
    if (yych != 'a') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'g') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'm') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'a') goto yy98;
    ++YYCURSOR;
#line 271 "cpp.re"
    { BOOST_WAVE_RET(T_PP_PRAGMA); }
#line 3497 "cpp_re.inc"
yy340:
    yych = *++YYCURSOR;
    if (yych != 'r') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'i') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'g') goto yy98;
    ++YYCURSOR;
#line 273 "cpp.re"
    { BOOST_WAVE_RET(T_PP_WARNING); }
#line 3512 "cpp_re.inc"
yy347:
    yych = *++YYCURSOR;
    if (yych != 'g') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'i') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'o') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    ++YYCURSOR;
#line 275 "cpp.re"
    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
#line 3525 "cpp_re.inc"
yy353:
    yych = *++YYCURSOR;
    if (yych == 'i') goto yy371;
    if (yych == 's') goto yy372;
    goto yy98;
yy354:
    yych = *++YYCURSOR;
    if (yych == 'd') goto yy360;
    goto yy98;
yy355:
    yych = *++YYCURSOR;
    if (yych != 'r') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'o') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'r') goto yy98;
    ++YYCURSOR;
#line 270 "cpp.re"
    { BOOST_WAVE_RET(T_PP_ERROR); }
#line 3545 "cpp_re.inc"
yy360:
    yych = *++YYCURSOR;
    if (yych == 'i') goto yy361;
    if (yych == 'r') goto yy362;
    goto yy98;
yy361:
    yych = *++YYCURSOR;
    if (yych == 'f') goto yy369;
    goto yy98;
yy362:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'g') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'i') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'o') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    ++YYCURSOR;
#line 276 "cpp.re"
    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
#line 3569 "cpp_re.inc"
yy369:
    ++YYCURSOR;
#line 266 "cpp.re"
    { BOOST_WAVE_RET(T_PP_ENDIF); }
#line 3574 "cpp_re.inc"
yy371:
    yych = *++YYCURSOR;
    if (yych == 'f') goto yy375;
    goto yy98;
yy372:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    ++YYCURSOR;
#line 264 "cpp.re"
    { BOOST_WAVE_RET(T_PP_ELSE); }
#line 3585 "cpp_re.inc"
yy375:
    ++YYCURSOR;
#line 265 "cpp.re"
    { BOOST_WAVE_RET(T_PP_ELIF); }
#line 3590 "cpp_re.inc"
yy377:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\r') {
        if (yych <= 0x08) goto yy98;
        if (yych <= '\f') goto yy377;
    } else {
        if (yych <= 0x1F) goto yy98;
        if (yych == '*') goto yy381;
        goto yy377;
    }
yy379:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\r') {
        if (yych <= 0x08) goto yy98;
        if (yych <= '\f') goto yy377;
        goto yy379;
    } else {
        if (yych <= 0x1F) goto yy98;
        if (yych != '*') goto yy377;
    }
yy381:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= 0x1F) {
        if (yych <= 0x08) goto yy98;
        if (yych <= '\f') goto yy377;
        if (yych >= 0x0E) goto yy98;
    } else {
        if (yych <= '*') {
            if (yych <= ')') goto yy377;
            goto yy381;
        } else {
            if (yych == '/') goto yy260;
            goto yy377;
        }
    }
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '\r') {
        if (yych <= 0x08) goto yy98;
        if (yych <= '\f') goto yy377;
        goto yy379;
    } else {
        if (yych <= 0x1F) goto yy98;
        if (yych == '*') goto yy381;
        goto yy377;
    }
yy384:
    ++YYCURSOR;
#line 155 "cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_COLON);
            }
            else {
                BOOST_WAVE_RET(T_COLON_COLON); 
            }
        }
#line 3656 "cpp_re.inc"
yy386:
    ++YYCURSOR;
#line 139 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
#line 3661 "cpp_re.inc"
yy388:
    yyaccept = 12;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'e') {
        if (yych <= ' ') {
            if (yych <= '\n') {
                if (yych == '\t') goto yy261;
            } else {
                if (yych <= '\f') goto yy261;
                if (yych >= ' ') goto yy261;
            }
        } else {
            if (yych <= '.') {
                if (yych == '%') goto yy394;
            } else {
                if (yych <= '/') goto yy261;
                if (yych >= 'd') goto yy261;
            }
        }
    } else {
        if (yych <= 'p') {
            if (yych <= 'k') {
                if (yych == 'i') goto yy261;
            } else {
                if (yych <= 'l') goto yy261;
                if (yych >= 'p') goto yy261;
            }
        } else {
            if (yych <= 't') {
                if (yych == 'r') goto yy261;
            } else {
                if (yych == 'v') goto yy389;
                if (yych <= 'w') goto yy261;
            }
        }
    }
yy389:
#line 141 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_ALT); }
#line 3701 "cpp_re.inc"
yy390:
    ++YYCURSOR;
#line 200 "cpp.re"
    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
#line 3706 "cpp_re.inc"
yy392:
    ++YYCURSOR;
#line 133 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
#line 3711 "cpp_re.inc"
yy394:
    yych = *++YYCURSOR;
    if (yych != ':') goto yy98;
    ++YYCURSOR;
#line 147 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
#line 3718 "cpp_re.inc"
yy397:
    ++YYCURSOR;
#line 216 "cpp.re"
    { BOOST_WAVE_RET(T_LESSEQUAL); }
#line 3723 "cpp_re.inc"
yy399:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy405;
#line 209 "cpp.re"
    { BOOST_WAVE_RET(T_SHIFTLEFT); }
#line 3729 "cpp_re.inc"
yy401:
    ++YYCURSOR;
#line 136 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
#line 3734 "cpp_re.inc"
yy403:
    ++YYCURSOR;
#line 130 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
#line 3739 "cpp_re.inc"
yy405:
    ++YYCURSOR;
#line 212 "cpp.re"
    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
#line 3744 "cpp_re.inc"
yy407:
    yych = *++YYCURSOR;
    switch (yych) {
    case '!':    goto yy420;
    case '\'':    goto yy418;
    case '(':    goto yy412;
    case ')':    goto yy414;
    case '-':    goto yy422;
    case '/':    goto yy424;
    case '<':    goto yy408;
    case '=':    goto yy416;
    case '>':    goto yy410;
    default:    goto yy98;
    }
yy408:
    ++YYCURSOR;
#line 129 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
#line 3763 "cpp_re.inc"
yy410:
    ++YYCURSOR;
#line 132 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
#line 3768 "cpp_re.inc"
yy412:
    ++YYCURSOR;
#line 135 "cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
#line 3773 "cpp_re.inc"
yy414:
    ++YYCURSOR;
#line 138 "cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
#line 3778 "cpp_re.inc"
yy416:
    yyaccept = 13;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'c') {
        if (yych <= ' ') {
            if (yych <= '\n') {
                if (yych == '\t') goto yy261;
            } else {
                if (yych <= '\f') goto yy261;
                if (yych >= ' ') goto yy261;
            }
        } else {
            if (yych <= '.') {
                if (yych == '#') goto yy437;
            } else {
                if (yych <= '/') goto yy261;
                if (yych == '?') goto yy436;
            }
        }
    } else {
        if (yych <= 'p') {
            if (yych <= 'i') {
                if (yych <= 'e') goto yy261;
                if (yych >= 'i') goto yy261;
            } else {
                if (yych == 'l') goto yy261;
                if (yych >= 'p') goto yy261;
            }
        } else {
            if (yych <= 't') {
                if (yych == 'r') goto yy261;
            } else {
                if (yych == 'v') goto yy417;
                if (yych <= 'w') goto yy261;
            }
        }
    }
yy417:
#line 142 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
#line 3819 "cpp_re.inc"
yy418:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy434;
#line 181 "cpp.re"
    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
#line 3825 "cpp_re.inc"
yy420:
    yyaccept = 14;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '>') {
        if (yych == '=') goto yy429;
    } else {
        if (yych <= '?') goto yy426;
        if (yych == '|') goto yy427;
    }
yy421:
#line 187 "cpp.re"
    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
#line 3838 "cpp_re.inc"
yy422:
    ++YYCURSOR;
#line 189 "cpp.re"
    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
#line 3843 "cpp_re.inc"
yy424:
    yyaccept = 15;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'U') goto yy186;
    if (yych == 'u') goto yy185;
yy425:
#line 239 "cpp.re"
    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
#line 3852 "cpp_re.inc"
yy426:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy431;
    goto yy98;
yy427:
    ++YYCURSOR;
#line 221 "cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3861 "cpp_re.inc"
yy429:
    ++YYCURSOR;
#line 208 "cpp.re"
    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
#line 3866 "cpp_re.inc"
yy431:
    yych = *++YYCURSOR;
    if (yych != '!') goto yy98;
    ++YYCURSOR;
#line 224 "cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3873 "cpp_re.inc"
yy434:
    ++YYCURSOR;
#line 203 "cpp.re"
    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
#line 3878 "cpp_re.inc"
yy436:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy439;
    goto yy98;
yy437:
    ++YYCURSOR;
#line 145 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3887 "cpp_re.inc"
yy439:
    yych = *++YYCURSOR;
    if (yych != '=') goto yy98;
    ++YYCURSOR;
#line 146 "cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3894 "cpp_re.inc"
yy442:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    switch (yych) {
    case 'a':    goto yy443;
    case 'b':    goto yy444;
    case 'c':    goto yy445;
    case 'd':    goto yy446;
    case 'e':    goto yy495;
    case 'f':    goto yy493;
    case 'i':    goto yy492;
    case 'l':    goto yy496;
    case 's':    goto yy449;
    case 't':    goto yy494;
    default:    goto yy195;
    }
yy443:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 's') goto yy489;
    goto yy195;
yy444:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy484;
    goto yy195;
yy445:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'd') goto yy479;
    goto yy195;
yy446:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy471;
    goto yy195;
yy447:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy463;
    goto yy195;
yy448:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy457;
    goto yy195;
yy449:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 16;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy456:
#line 120 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
#line 3970 "cpp_re.inc"
yy457:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
yy458:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 17;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy462:
#line 125 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
#line 3995 "cpp_re.inc"
yy463:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 18;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy470:
#line 119 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
#line 4025 "cpp_re.inc"
yy471:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 19;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy478:
#line 117 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
#line 4055 "cpp_re.inc"
yy479:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 20;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy483:
#line 118 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
#line 4076 "cpp_re.inc"
yy484:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 21;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy488:
#line 116 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
#line 4097 "cpp_re.inc"
yy489:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'm') goto yy195;
    yyaccept = 22;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy491:
#line 126 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
#line 4112 "cpp_re.inc"
yy492:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy518;
    goto yy195;
yy493:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy463;
    if (yych == 'i') goto yy511;
    goto yy195;
yy494:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'r') goto yy508;
    goto yy195;
yy495:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'x') goto yy502;
    goto yy195;
yy496:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'v') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 23;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy501:
#line 124 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
#line 4157 "cpp_re.inc"
yy502:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 24;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy507:
#line 122 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
#line 4181 "cpp_re.inc"
yy508:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'y') goto yy195;
    yyaccept = 25;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy510:
#line 121 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
#line 4196 "cpp_re.inc"
yy511:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'y') goto yy195;
    yyaccept = 26;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy517:
#line 123 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
#line 4223 "cpp_re.inc"
yy518:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'l') goto yy458;
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    switch (yych) {
    case '1':    goto yy520;
    case '3':    goto yy521;
    case '6':    goto yy522;
    case '8':    goto yy523;
    default:    goto yy195;
    }
yy520:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '6') goto yy529;
    goto yy195;
yy521:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '2') goto yy527;
    goto yy195;
yy522:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '4') goto yy525;
    goto yy195;
yy523:
    yyaccept = 27;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy524:
#line 112 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
#line 4264 "cpp_re.inc"
yy525:
    yyaccept = 28;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy526:
#line 115 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
#line 4276 "cpp_re.inc"
yy527:
    yyaccept = 29;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy528:
#line 114 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
#line 4288 "cpp_re.inc"
yy529:
    yyaccept = 30;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy530:
#line 113 "cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
#line 4300 "cpp_re.inc"
yy531:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'h') goto yy537;
    goto yy195;
yy532:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 31;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy536:
#line 110 "cpp.re"
    { BOOST_WAVE_RET(T_WHILE); }
#line 4326 "cpp_re.inc"
yy537:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != '_') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 32;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy542:
#line 109 "cpp.re"
    { BOOST_WAVE_RET(T_WCHART); }
#line 4350 "cpp_re.inc"
yy543:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'r') goto yy555;
    goto yy195;
yy544:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy545;
    if (yych == 'l') goto yy546;
    goto yy195;
yy545:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'd') goto yy553;
    goto yy195;
yy546:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 33;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy552:
#line 108 "cpp.re"
    { BOOST_WAVE_RET(T_VOLATILE); }
#line 4393 "cpp_re.inc"
yy553:
    yyaccept = 34;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy554:
#line 107 "cpp.re"
    { BOOST_WAVE_RET(T_VOID); }
#line 4405 "cpp_re.inc"
yy555:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'u') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 35;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy560:
#line 106 "cpp.re"
    { BOOST_WAVE_RET(T_VIRTUAL); }
#line 4429 "cpp_re.inc"
yy561:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy567;
    if (yych == 's') goto yy568;
    goto yy195;
yy562:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'g') goto yy195;
    yyaccept = 36;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy566:
#line 105 "cpp.re"
    { BOOST_WAVE_RET(T_USING); }
#line 4456 "cpp_re.inc"
yy567:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy575;
    goto yy195;
yy568:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'g') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 37;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy574:
#line 104 "cpp.re"
    { BOOST_WAVE_RET(T_UNSIGNED); }
#line 4488 "cpp_re.inc"
yy575:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 38;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy577:
#line 103 "cpp.re"
    { BOOST_WAVE_RET(T_UNION); }
#line 4503 "cpp_re.inc"
yy578:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'm') goto yy608;
    goto yy195;
yy579:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy601;
    if (yych == 'r') goto yy602;
    goto yy195;
yy580:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'u') goto yy596;
    if (yych == 'y') goto yy597;
    goto yy195;
yy581:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'h') {
        if (yych != 'd') goto yy195;
    } else {
        if (yych <= 'i') goto yy585;
        if (yych == 'n') goto yy586;
        goto yy195;
    }
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy593;
    goto yy195;
yy585:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'd') goto yy591;
    goto yy195;
yy586:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'm') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 39;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy590:
#line 102 "cpp.re"
    { BOOST_WAVE_RET(T_TYPENAME); }
#line 4566 "cpp_re.inc"
yy591:
    yyaccept = 40;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy592:
#line 101 "cpp.re"
    { BOOST_WAVE_RET(T_TYPEID); }
#line 4578 "cpp_re.inc"
yy593:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'f') goto yy195;
    yyaccept = 41;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy595:
#line 100 "cpp.re"
    { BOOST_WAVE_RET(T_TYPEDEF); }
#line 4593 "cpp_re.inc"
yy596:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy599;
    goto yy195;
yy597:
    yyaccept = 42;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy598:
#line 99 "cpp.re"
    { BOOST_WAVE_RET(T_TRY); }
#line 4610 "cpp_re.inc"
yy599:
    yyaccept = 43;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy600:
#line 98 "cpp.re"
    { BOOST_WAVE_RET(T_TRUE); }
#line 4622 "cpp_re.inc"
yy601:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 's') goto yy606;
    goto yy195;
yy602:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'w') goto yy195;
    yyaccept = 44;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy605:
#line 97 "cpp.re"
    { BOOST_WAVE_RET(T_THROW); }
#line 4645 "cpp_re.inc"
yy606:
    yyaccept = 45;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy607:
#line 96 "cpp.re"
    { BOOST_WAVE_RET(T_THIS); }
#line 4657 "cpp_re.inc"
yy608:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 46;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy614:
#line 95 "cpp.re"
    { BOOST_WAVE_RET(T_TEMPLATE); }
#line 4684 "cpp_re.inc"
yy615:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy650;
    goto yy195;
yy616:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'g') goto yy640;
    if (yych == 'z') goto yy641;
    goto yy195;
yy617:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy624;
    if (yych == 'r') goto yy625;
    goto yy195;
yy618:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'h') goto yy195;
    yyaccept = 47;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy623:
#line 94 "cpp.re"
    { BOOST_WAVE_RET(T_SWITCH); }
#line 4725 "cpp_re.inc"
yy624:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 't') goto yy630;
    goto yy195;
yy625:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'u') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 48;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy629:
#line 93 "cpp.re"
    { BOOST_WAVE_RET(T_STRUCT); }
#line 4751 "cpp_re.inc"
yy630:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 49;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy634;
            if (yych <= '`') goto yy633;
            if (yych <= 'z') goto yy194;
        }
    }
yy633:
#line 91 "cpp.re"
    { BOOST_WAVE_RET(T_STATIC); }
#line 4781 "cpp_re.inc"
yy634:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 50;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy639:
#line 92 "cpp.re"
    { BOOST_WAVE_RET(T_STATICCAST); }
#line 4805 "cpp_re.inc"
yy640:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy646;
    goto yy195;
yy641:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'f') goto yy195;
    yyaccept = 51;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy645:
#line 90 "cpp.re"
    { BOOST_WAVE_RET(T_SIZEOF); }
#line 4831 "cpp_re.inc"
yy646:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 52;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy649:
#line 89 "cpp.re"
    { BOOST_WAVE_RET(T_SIGNED); }
#line 4849 "cpp_re.inc"
yy650:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 53;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy653:
#line 88 "cpp.re"
    { BOOST_WAVE_RET(T_SHORT); }
#line 4867 "cpp_re.inc"
yy654:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'h') {
        if (yych != 'g') goto yy195;
    } else {
        if (yych <= 'i') goto yy656;
        if (yych == 't') goto yy657;
        goto yy195;
    }
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy676;
    goto yy195;
yy656:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy662;
    goto yy195;
yy657:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'u') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 54;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy661:
#line 87 "cpp.re"
    { BOOST_WAVE_RET(T_RETURN); }
#line 4907 "cpp_re.inc"
yy662:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != '_') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 55;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy675:
#line 86 "cpp.re"
    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
#line 4955 "cpp_re.inc"
yy676:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 56;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy681:
#line 85 "cpp.re"
    { BOOST_WAVE_RET(T_REGISTER); }
#line 4979 "cpp_re.inc"
yy682:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy689;
    if (yych == 'o') goto yy690;
    goto yy195;
yy683:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'b') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 57;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy688:
#line 84 "cpp.re"
    { BOOST_WAVE_RET(T_PUBLIC); }
#line 5009 "cpp_re.inc"
yy689:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'v') goto yy698;
    goto yy195;
yy690:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 58;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy697:
#line 83 "cpp.re"
    { BOOST_WAVE_RET(T_PROTECTED); }
#line 5044 "cpp_re.inc"
yy698:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 59;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy702:
#line 82 "cpp.re"
    { BOOST_WAVE_RET(T_PRIVATE); }
#line 5065 "cpp_re.inc"
yy703:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy710;
    goto yy195;
yy704:
    yyaccept = 60;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy706;
            if (yych <= '`') goto yy705;
            if (yych <= 'z') goto yy194;
        }
    }
yy705:
#line 223 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
#line 5094 "cpp_re.inc"
yy706:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'q') goto yy195;
    yyaccept = 61;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy709:
#line 207 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
#line 5112 "cpp_re.inc"
yy710:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 62;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy716:
#line 81 "cpp.re"
    { BOOST_WAVE_RET(T_OPERATOR); }
#line 5139 "cpp_re.inc"
yy717:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'm') goto yy728;
    goto yy195;
yy718:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'w') goto yy726;
    goto yy195;
yy719:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 63;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy722;
            if (yych <= '`') goto yy721;
            if (yych <= 'z') goto yy194;
        }
    }
yy721:
#line 192 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
#line 5176 "cpp_re.inc"
yy722:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'q') goto yy195;
    yyaccept = 64;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy725:
#line 215 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
#line 5194 "cpp_re.inc"
yy726:
    yyaccept = 65;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy727:
#line 80 "cpp.re"
    { BOOST_WAVE_RET(T_NEW); }
#line 5206 "cpp_re.inc"
yy728:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 66;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy735:
#line 79 "cpp.re"
    { BOOST_WAVE_RET(T_NAMESPACE); }
#line 5236 "cpp_re.inc"
yy736:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'b') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 67;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy742:
#line 78 "cpp.re"
    { BOOST_WAVE_RET(T_MUTABLE); }
#line 5263 "cpp_re.inc"
yy743:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'g') goto yy195;
    yyaccept = 68;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy746:
#line 77 "cpp.re"
    { BOOST_WAVE_RET(T_LONG); }
#line 5281 "cpp_re.inc"
yy747:
    yyaccept = 69;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy748:
#line 73 "cpp.re"
    { BOOST_WAVE_RET(T_IF); }
#line 5293 "cpp_re.inc"
yy749:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'p') goto yy758;
    goto yy195;
yy750:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'l') goto yy751;
    if (yych == 't') goto yy752;
    goto yy195;
yy751:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy754;
    goto yy195;
yy752:
    yyaccept = 70;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy753:
#line 76 "cpp.re"
    { BOOST_WAVE_RET(T_INT); }
#line 5321 "cpp_re.inc"
yy754:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 71;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy757:
#line 75 "cpp.re"
    { BOOST_WAVE_RET(T_INLINE); }
#line 5339 "cpp_re.inc"
yy758:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 72;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy762:
#line 74 "cpp.re"
    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
#line 5360 "cpp_re.inc"
yy763:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 73;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy766:
#line 72 "cpp.re"
    { BOOST_WAVE_RET(T_GOTO); }
#line 5378 "cpp_re.inc"
yy767:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'l') goto yy782;
    goto yy195;
yy768:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy778;
    goto yy195;
yy769:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'r') goto yy776;
    goto yy195;
yy770:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 74;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy775:
#line 71 "cpp.re"
    { BOOST_WAVE_RET(T_FRIEND); }
#line 5417 "cpp_re.inc"
yy776:
    yyaccept = 75;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy777:
#line 70 "cpp.re"
    { BOOST_WAVE_RET(T_FOR); }
#line 5429 "cpp_re.inc"
yy778:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 76;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy781:
#line 69 "cpp.re"
    { BOOST_WAVE_RET(T_FLOAT); }
#line 5447 "cpp_re.inc"
yy782:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 77;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy785:
#line 68 "cpp.re"
    { BOOST_WAVE_RET(T_FALSE); }
#line 5465 "cpp_re.inc"
yy786:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 's') goto yy808;
    goto yy195;
yy787:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'u') goto yy805;
    goto yy195;
yy788:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'p') goto yy789;
    if (yych == 't') goto yy790;
    goto yy195;
yy789:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'l') goto yy795;
    if (yych == 'o') goto yy796;
    goto yy195;
yy790:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 78;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy794:
#line 67 "cpp.re"
    { BOOST_WAVE_RET(T_EXTERN); }
#line 5508 "cpp_re.inc"
yy795:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'i') goto yy800;
    goto yy195;
yy796:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 79;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy799:
#line 66 "cpp.re"
    { BOOST_WAVE_RET(T_EXPORT); }
#line 5531 "cpp_re.inc"
yy800:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 80;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy804:
#line 65 "cpp.re"
    { BOOST_WAVE_RET(T_EXPLICIT); }
#line 5552 "cpp_re.inc"
yy805:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'm') goto yy195;
    yyaccept = 81;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy807:
#line 64 "cpp.re"
    { BOOST_WAVE_RET(T_ENUM); }
#line 5567 "cpp_re.inc"
yy808:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 82;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy810:
#line 63 "cpp.re"
    { BOOST_WAVE_RET(T_ELSE); }
#line 5582 "cpp_re.inc"
yy811:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'f') goto yy831;
    if (yych == 'l') goto yy832;
    goto yy195;
yy812:
    yyaccept = 83;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'Z') {
        if (yych <= '9') {
            if (yych == '$') goto yy194;
            if (yych >= '0') goto yy194;
        } else {
            if (yych == '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '_') {
            if (yych == '\\') goto yy196;
            if (yych >= '_') goto yy194;
        } else {
            if (yych <= 't') {
                if (yych >= 'a') goto yy194;
            } else {
                if (yych <= 'u') goto yy826;
                if (yych <= 'z') goto yy194;
            }
        }
    }
yy813:
#line 60 "cpp.re"
    { BOOST_WAVE_RET(T_DO); }
#line 5616 "cpp_re.inc"
yy814:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'm') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != '_') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 84;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy825:
#line 62 "cpp.re"
    { BOOST_WAVE_RET(T_DYNAMICCAST); }
#line 5658 "cpp_re.inc"
yy826:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'b') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 85;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy830:
#line 61 "cpp.re"
    { BOOST_WAVE_RET(T_DOUBLE); }
#line 5679 "cpp_re.inc"
yy831:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy837;
    goto yy195;
yy832:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 86;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy836:
#line 59 "cpp.re"
    { BOOST_WAVE_RET(T_DELETE); }
#line 5705 "cpp_re.inc"
yy837:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'u') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 87;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy841:
#line 58 "cpp.re"
    { BOOST_WAVE_RET(T_DEFAULT); }
#line 5726 "cpp_re.inc"
yy842:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'r') goto yy195;
    if (yych <= 's') goto yy873;
    if (yych <= 't') goto yy874;
    goto yy195;
yy843:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy870;
    goto yy195;
yy844:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy866;
    goto yy195;
yy845:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'l') goto yy195;
    if (yych <= 'm') goto yy847;
    if (yych >= 'o') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'r') goto yy195;
    if (yych <= 's') goto yy851;
    if (yych <= 't') goto yy852;
    goto yy195;
yy847:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'p') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 88;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy850:
#line 190 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
#line 5773 "cpp_re.inc"
yy851:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 't') goto yy858;
    goto yy195;
yy852:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'i') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'n') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'u') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 89;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy857:
#line 57 "cpp.re"
    { BOOST_WAVE_RET(T_CONTINUE); }
#line 5802 "cpp_re.inc"
yy858:
    yyaccept = 90;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy860;
            if (yych <= '`') goto yy859;
            if (yych <= 'z') goto yy194;
        }
    }
yy859:
#line 55 "cpp.re"
    { BOOST_WAVE_RET(T_CONST); }
#line 5826 "cpp_re.inc"
yy860:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 91;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy865:
#line 56 "cpp.re"
    { BOOST_WAVE_RET(T_CONSTCAST); }
#line 5850 "cpp_re.inc"
yy866:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 's') goto yy195;
    yyaccept = 92;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy869:
#line 54 "cpp.re"
    { BOOST_WAVE_RET(T_CLASS); }
#line 5868 "cpp_re.inc"
yy870:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 93;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy872:
#line 53 "cpp.re"
    { BOOST_WAVE_RET(T_CHAR); }
#line 5883 "cpp_re.inc"
yy873:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy878;
    goto yy195;
yy874:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'c') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'h') goto yy195;
    yyaccept = 94;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy877:
#line 52 "cpp.re"
    { BOOST_WAVE_RET(T_CATCH); }
#line 5906 "cpp_re.inc"
yy878:
    yyaccept = 95;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy879:
#line 51 "cpp.re"
    { BOOST_WAVE_RET(T_CASE); }
#line 5918 "cpp_re.inc"
yy880:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 't') goto yy890;
    goto yy195;
yy881:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'o') goto yy887;
    goto yy195;
yy882:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'a') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'k') goto yy195;
    yyaccept = 96;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy886:
#line 50 "cpp.re"
    { BOOST_WAVE_RET(T_BREAK); }
#line 5949 "cpp_re.inc"
yy887:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'l') goto yy195;
    yyaccept = 97;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy889:
#line 49 "cpp.re"
    { BOOST_WAVE_RET(T_BOOL); }
#line 5964 "cpp_re.inc"
yy890:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'a') goto yy891;
    if (yych == 'o') goto yy892;
    goto yy195;
yy891:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'n') goto yy895;
    goto yy195;
yy892:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 98;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy894:
#line 186 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
#line 5990 "cpp_re.inc"
yy895:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'd') goto yy195;
    yyaccept = 99;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy897:
#line 184 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
#line 6005 "cpp_re.inc"
yy898:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'd') goto yy906;
    goto yy195;
yy899:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'm') goto yy904;
    goto yy195;
yy900:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 't') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'o') goto yy195;
    yyaccept = 100;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy903:
#line 48 "cpp.re"
    { BOOST_WAVE_RET(T_AUTO); }
#line 6033 "cpp_re.inc"
yy904:
    yyaccept = 101;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy905:
#line 47 "cpp.re"
    { BOOST_WAVE_RET(T_ASM); }
#line 6045 "cpp_re.inc"
yy906:
    yyaccept = 102;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= '@') {
        if (yych <= '/') {
            if (yych == '$') goto yy194;
        } else {
            if (yych <= '9') goto yy194;
            if (yych == '?') goto yy197;
        }
    } else {
        if (yych <= '^') {
            if (yych <= 'Z') goto yy194;
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy908;
            if (yych <= '`') goto yy907;
            if (yych <= 'z') goto yy194;
        }
    }
yy907:
#line 219 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
#line 6069 "cpp_re.inc"
yy908:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'e') goto yy195;
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'q') goto yy195;
    yyaccept = 103;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 4) {
        goto yy194;
    }
    if (yych == '?') goto yy197;
    if (yych == '\\') goto yy196;
yy911:
#line 205 "cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
#line 6087 "cpp_re.inc"
yy912:
    ++YYCURSOR;
#line 166 "cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_DOT);
            }
            else {
                BOOST_WAVE_RET(T_DOTSTAR); 
            }
        }
#line 6100 "cpp_re.inc"
yy914:
    yych = *++YYCURSOR;
    if (yych == '.') goto yy916;
    goto yy98;
yy915:
    yych = *++YYCURSOR;
    goto yy7;
yy916:
    ++YYCURSOR;
#line 152 "cpp.re"
    { BOOST_WAVE_RET(T_ELLIPSIS); }
#line 6112 "cpp_re.inc"
yy918:
    ++YYCURSOR;
#line 199 "cpp.re"
    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
#line 6117 "cpp_re.inc"
yy920:
    ++YYCURSOR;
#line 44 "cpp.re"
    { goto cppcomment; }
#line 6122 "cpp_re.inc"
yy922:
    ++YYCURSOR;
#line 43 "cpp.re"
    { goto ccomment; }
#line 6127 "cpp_re.inc"
}
#line 308 "cpp.re"


ccomment:

#line 6134 "cpp_re.inc"
{
    YYCTYPE yych;
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
    if (yych <= '\f') {
        if (yych <= 0x08) {
            if (yych <= 0x00) goto yy933;
            goto yy935;
        } else {
            if (yych == '\n') goto yy928;
            goto yy931;
        }
    } else {
        if (yych <= 0x1F) {
            if (yych <= '\r') goto yy930;
            goto yy935;
        } else {
            if (yych != '*') goto yy932;
        }
    }
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '/') goto yy938;
yy927:
#line 323 "cpp.re"
    { goto ccomment; }
#line 6160 "cpp_re.inc"
yy928:
    ++YYCURSOR;
yy929:
#line 315 "cpp.re"
    {
        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
        /*s->tok = cursor; */
        s->line += count_backslash_newlines(s, cursor) +1;
        cursor.column = 1;
        goto ccomment;
    }
#line 6172 "cpp_re.inc"
yy930:
    yych = *++YYCURSOR;
    if (yych == '\n') goto yy937;
    goto yy929;
yy931:
    yych = *++YYCURSOR;
    goto yy927;
yy932:
    yych = *++YYCURSOR;
    goto yy927;
yy933:
    ++YYCURSOR;
#line 326 "cpp.re"
    {
        if(cursor == s->eof) 
        {
            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
            (*s->error_proc)(s, lexing_exception::generic_lexing_warning, 
                "Unterminated 'C' style comment");
        }
        else
        {
            --YYCURSOR;                   // next call returns T_EOF
            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                "invalid character: '\\000' in input stream");
        }
    }
#line 6201 "cpp_re.inc"
yy935:
    ++YYCURSOR;
#line 343 "cpp.re"
    {
        // flag the error
        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
            "invalid character '\\%03o' in input stream", *--YYCURSOR);
    }
#line 6211 "cpp_re.inc"
yy937:
    yych = *++YYCURSOR;
    goto yy929;
yy938:
    ++YYCURSOR;
#line 312 "cpp.re"
    { BOOST_WAVE_RET(T_CCOMMENT); }
#line 6219 "cpp_re.inc"
}
#line 349 "cpp.re"


cppcomment:

#line 6226 "cpp_re.inc"
{
    YYCTYPE yych;
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
    if (yych <= '\n') {
        if (yych <= 0x00) goto yy948;
        if (yych <= 0x08) goto yy950;
        if (yych <= '\t') goto yy945;
    } else {
        if (yych <= '\f') goto yy945;
        if (yych <= '\r') goto yy944;
        if (yych <= 0x1F) goto yy950;
        goto yy947;
    }
    ++YYCURSOR;
yy943:
#line 354 "cpp.re"
    {
        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
        /*s->tok = cursor; */
        s->line++;
        cursor.column = 1;
        BOOST_WAVE_RET(T_CPPCOMMENT);
    }
#line 6251 "cpp_re.inc"
yy944:
    yych = *++YYCURSOR;
    if (yych == '\n') goto yy952;
    goto yy943;
yy945:
    ++YYCURSOR;
yy946:
#line 362 "cpp.re"
    { goto cppcomment; }
#line 6261 "cpp_re.inc"
yy947:
    yych = *++YYCURSOR;
    goto yy946;
yy948:
    ++YYCURSOR;
#line 365 "cpp.re"
    {
        if (s->eof && cursor != s->eof) 
        {
            --YYCURSOR;                     // next call returns T_EOF
            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                "invalid character '\\000' in input stream");
        }
        
        --YYCURSOR;                         // next call returns T_EOF
        if (!s->single_line_only)
        {
            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
                "Unterminated 'C++' style comment");
        }
        BOOST_WAVE_RET(T_CPPCOMMENT);
    }
#line 6286 "cpp_re.inc"
yy950:
    ++YYCURSOR;
#line 385 "cpp.re"
    {
        // flag the error
        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
            "invalid character '\\%03o' in input stream", *--YYCURSOR);
    }
#line 6296 "cpp_re.inc"
yy952:
    ++YYCURSOR;
    yych = *YYCURSOR;
    goto yy943;
}
#line 391 "cpp.re"


/* this subscanner is called whenever a pp_number has been started */
pp_number:
{
    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
    marker = uchar_wrapper(s->ptr);
    limit = uchar_wrapper(s->lim);

    if (s->detect_pp_numbers) {
    
#line 6314 "cpp_re.inc"
{
    YYCTYPE yych;
    static const unsigned char yybm[] = {
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,  64,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,  64,   0, 
         64,  64,  64,  64,  64,  64,  64,  64, 
         64,  64,   0,   0,   0,   0,   0,   0, 
          0,  64,  64,  64,  64, 128,  64,  64, 
         64,  64,  64,  64,  64,  64,  64,  64, 
         64,  64,  64,  64,  64,  64,  64,  64, 
         64,  64,  64,   0,   0,   0,   0,  64, 
          0,  64,  64,  64,  64, 128,  64,  64, 
         64,  64,  64,  64,  64,  64,  64,  64, 
         64,  64,  64,  64,  64,  64,  64,  64, 
         64,  64,  64,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
    };
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
    if (yych == '.') goto yy956;
    if (yych <= '/') goto yy955;
    if (yych <= '9') goto yy957;
yy955:
    YYCURSOR = YYMARKER;
    goto yy959;
yy956:
    yych = *++YYCURSOR;
    if (yych <= '/') goto yy955;
    if (yych >= ':') goto yy955;
yy957:
    YYMARKER = ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 64) {
        goto yy957;
    }
    if (yych <= 'Z') {
        if (yych == '?') goto yy963;
        if (yych >= 'A') goto yy960;
    } else {
        if (yych <= '\\') {
            if (yych >= '\\') goto yy962;
        } else {
            if (yych == 'e') goto yy960;
        }
    }
yy959:
#line 403 "cpp.re"
    { BOOST_WAVE_RET(T_PP_NUMBER); }
#line 6383 "cpp_re.inc"
yy960:
    YYMARKER = ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 128) {
        goto yy960;
    }
    if (yych <= '>') {
        if (yych <= '+') {
            if (yych == '$') goto yy957;
            if (yych <= '*') goto yy959;
            goto yy957;
        } else {
            if (yych <= '.') {
                if (yych <= ',') goto yy959;
                goto yy957;
            } else {
                if (yych <= '/') goto yy959;
                if (yych <= '9') goto yy957;
                goto yy959;
            }
        }
    } else {
        if (yych <= '\\') {
            if (yych <= '@') {
                if (yych <= '?') goto yy963;
                goto yy959;
            } else {
                if (yych <= 'Z') goto yy957;
                if (yych <= '[') goto yy959;
            }
        } else {
            if (yych <= '_') {
                if (yych <= '^') goto yy959;
                goto yy957;
            } else {
                if (yych <= '`') goto yy959;
                if (yych <= 'z') goto yy957;
                goto yy959;
            }
        }
    }
yy962:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == 'U') goto yy966;
    if (yych == 'u') goto yy965;
    goto yy955;
yy963:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych != '?') goto yy955;
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych == '/') goto yy962;
    goto yy955;
yy965:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych <= '9') goto yy974;
        goto yy955;
    } else {
        if (yych <= 'F') goto yy974;
        if (yych <= '`') goto yy955;
        if (yych <= 'f') goto yy974;
        goto yy955;
    }
yy966:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy967;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy967:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy968;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy968:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy969;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy969:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy970;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy970:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy971;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy971:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy972;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy972:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy973;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy973:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych <= '9') goto yy957;
        goto yy955;
    } else {
        if (yych <= 'F') goto yy957;
        if (yych <= '`') goto yy955;
        if (yych <= 'f') goto yy957;
        goto yy955;
    }
yy974:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy975;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy975:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych >= ':') goto yy955;
    } else {
        if (yych <= 'F') goto yy976;
        if (yych <= '`') goto yy955;
        if (yych >= 'g') goto yy955;
    }
yy976:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yych <= '@') {
        if (yych <= '/') goto yy955;
        if (yych <= '9') goto yy957;
        goto yy955;
    } else {
        if (yych <= 'F') goto yy957;
        if (yych <= '`') goto yy955;
        if (yych <= 'f') goto yy957;
        goto yy955;
    }
}
#line 404 "cpp.re"

    }
    else {
    
#line 6599 "cpp_re.inc"
{
    YYCTYPE yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
        224, 224, 224, 224, 224, 224, 224, 224, 
        160, 160,   0,   0,   0,   0,   0,   0, 
          0, 128, 128, 128, 128, 128, 128,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0, 128, 128, 128, 128, 128, 128,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
          0,   0,   0,   0,   0,   0,   0,   0, 
    };
    if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
    yych = *YYCURSOR;
    if (yych <= '/') {
        if (yych == '.') goto yy984;
    } else {
        if (yych <= '0') goto yy980;
        if (yych <= '9') goto yy982;
    }
yy979:
    YYCURSOR = YYMARKER;
    if (yyaccept <= 0) {
        goto yy981;
    } else {
        goto yy987;
    }
yy980:
    yyaccept = 0;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yybm[0+yych] & 64) {
        goto yy999;
    }
    if (yych <= 'E') {
        if (yych <= '/') {
            if (yych == '.') goto yy985;
        } else {
            if (yych <= '9') goto yy1002;
            if (yych >= 'E') goto yy995;
        }
    } else {
        if (yych <= 'd') {
            if (yych == 'X') goto yy1001;
        } else {
            if (yych <= 'e') goto yy995;
            if (yych == 'x') goto yy1001;
        }
    }
yy981:
#line 411 "cpp.re"
    { goto integer_suffix; }
#line 6676 "cpp_re.inc"
yy982:
    yyaccept = 0;
    YYMARKER = ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 32) {
        goto yy982;
    }
    if (yych <= 'D') {
        if (yych == '.') goto yy985;
        goto yy981;
    } else {
        if (yych <= 'E') goto yy995;
        if (yych == 'e') goto yy995;
        goto yy981;
    }
yy984:
    yych = *++YYCURSOR;
    if (yych <= '/') goto yy979;
    if (yych >= ':') goto yy979;
yy985:
    yyaccept = 1;
    YYMARKER = ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *YYCURSOR;
    if (yych <= 'K') {
        if (yych <= 'D') {
            if (yych <= '/') goto yy987;
            if (yych <= '9') goto yy985;
        } else {
            if (yych <= 'E') goto yy988;
            if (yych <= 'F') goto yy989;
        }
    } else {
        if (yych <= 'e') {
            if (yych <= 'L') goto yy990;
            if (yych >= 'e') goto yy988;
        } else {
            if (yych <= 'f') goto yy989;
            if (yych == 'l') goto yy990;
        }
    }
yy987:
#line 409 "cpp.re"
    { BOOST_WAVE_RET(T_FLOATLIT); }
#line 6722 "cpp_re.inc"
yy988:
    yych = *++YYCURSOR;
    if (yych <= ',') {
        if (yych == '+') goto yy992;
        goto yy979;
    } else {
        if (yych <= '-') goto yy992;
        if (yych <= '/') goto yy979;
        if (yych <= '9') goto yy993;
        goto yy979;
    }
yy989:
    yych = *++YYCURSOR;
    if (yych == 'L') goto yy991;
    if (yych == 'l') goto yy991;
    goto yy987;
yy990:
    yych = *++YYCURSOR;
    if (yych == 'F') goto yy991;
    if (yych != 'f') goto yy987;
yy991:
    yych = *++YYCURSOR;
    goto yy987;
yy992:
    yych = *++YYCURSOR;
    if (yych <= '/') goto yy979;
    if (yych >= ':') goto yy979;
yy993:
    ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
    if (yych <= 'K') {
        if (yych <= '9') {
            if (yych <= '/') goto yy987;
            goto yy993;
        } else {
            if (yych == 'F') goto yy989;
            goto yy987;
        }
    } else {
        if (yych <= 'f') {
            if (yych <= 'L') goto yy990;
            if (yych <= 'e') goto yy987;
            goto yy989;
        } else {
            if (yych == 'l') goto yy990;
            goto yy987;
        }
    }
yy995:
    yych = *++YYCURSOR;
    if (yych <= ',') {
        if (yych != '+') goto yy979;
    } else {
        if (yych <= '-') goto yy996;
        if (yych <= '/') goto yy979;
        if (yych <= '9') goto yy997;
        goto yy979;
    }
yy996:
    yych = *++YYCURSOR;
    if (yych <= '/') goto yy979;
    if (yych >= ':') goto yy979;
yy997:
    ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
    yych = *YYCURSOR;
    if (yych <= 'K') {
        if (yych <= '9') {
            if (yych <= '/') goto yy987;
            goto yy997;
        } else {
            if (yych == 'F') goto yy989;
            goto yy987;
        }
    } else {
        if (yych <= 'f') {
            if (yych <= 'L') goto yy990;
            if (yych <= 'e') goto yy987;
            goto yy989;
        } else {
            if (yych == 'l') goto yy990;
            goto yy987;
        }
    }
yy999:
    yyaccept = 0;
    YYMARKER = ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 64) {
        goto yy999;
    }
    if (yych <= '9') {
        if (yych == '.') goto yy985;
        if (yych <= '/') goto yy981;
        goto yy1002;
    } else {
        if (yych <= 'E') {
            if (yych <= 'D') goto yy981;
            goto yy995;
        } else {
            if (yych == 'e') goto yy995;
            goto yy981;
        }
    }
yy1001:
    yych = *++YYCURSOR;
    if (yybm[0+yych] & 128) {
        goto yy1004;
    }
    goto yy979;
yy1002:
    ++YYCURSOR;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *YYCURSOR;
    if (yych <= '9') {
        if (yych == '.') goto yy985;
        if (yych <= '/') goto yy979;
        goto yy1002;
    } else {
        if (yych <= 'E') {
            if (yych <= 'D') goto yy979;
            goto yy995;
        } else {
            if (yych == 'e') goto yy995;
            goto yy979;
        }
    }
yy1004:
    ++YYCURSOR;
    if (YYLIMIT <= YYCURSOR) YYFILL(1);
    yych = *YYCURSOR;
    if (yybm[0+yych] & 128) {
        goto yy1004;
    }
    goto yy981;
}
#line 412 "cpp.re"

    }
}

/* this subscanner is called, whenever a Integer was recognized */
integer_suffix:
{
    if (s->enable_ms_extensions) {
    
#line 6871 "cpp_re.inc"
{
    YYCTYPE yych;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *(YYMARKER = YYCURSOR);
    if (yych <= 'h') {
        if (yych <= 'L') {
            if (yych >= 'L') goto yy1010;
        } else {
            if (yych == 'U') goto yy1009;
        }
    } else {
        if (yych <= 'l') {
            if (yych <= 'i') goto yy1011;
            if (yych >= 'l') goto yy1010;
        } else {
            if (yych == 'u') goto yy1009;
        }
    }
yy1008:
#line 425 "cpp.re"
    { BOOST_WAVE_RET(T_INTLIT); }
#line 6893 "cpp_re.inc"
yy1009:
    yych = *++YYCURSOR;
    if (yych == 'L') goto yy1018;
    if (yych == 'l') goto yy1018;
    goto yy1008;
yy1010:
    yych = *++YYCURSOR;
    if (yych <= 'U') {
        if (yych == 'L') goto yy1017;
        if (yych <= 'T') goto yy1008;
        goto yy1016;
    } else {
        if (yych <= 'l') {
            if (yych <= 'k') goto yy1008;
            goto yy1017;
        } else {
            if (yych == 'u') goto yy1016;
            goto yy1008;
        }
    }
yy1011:
    yych = *++YYCURSOR;
    if (yych == '6') goto yy1013;
yy1012:
    YYCURSOR = YYMARKER;
    goto yy1008;
yy1013:
    yych = *++YYCURSOR;
    if (yych != '4') goto yy1012;
yy1014:
    ++YYCURSOR;
yy1015:
#line 422 "cpp.re"
    { BOOST_WAVE_RET(T_LONGINTLIT); }
#line 6928 "cpp_re.inc"
yy1016:
    yych = *++YYCURSOR;
    goto yy1008;
yy1017:
    yych = *++YYCURSOR;
    if (yych == 'U') goto yy1014;
    if (yych == 'u') goto yy1014;
    goto yy1015;
yy1018:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == 'L') goto yy1014;
    if (yych == 'l') goto yy1014;
    goto yy1008;
}
#line 426 "cpp.re"

    }
    else {
    
#line 6948 "cpp_re.inc"
{
    YYCTYPE yych;
    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
    yych = *YYCURSOR;
    if (yych <= 'U') {
        if (yych == 'L') goto yy1023;
        if (yych >= 'U') goto yy1022;
    } else {
        if (yych <= 'l') {
            if (yych >= 'l') goto yy1023;
        } else {
            if (yych == 'u') goto yy1022;
        }
    }
yy1021:
#line 434 "cpp.re"
    { BOOST_WAVE_RET(T_INTLIT); }
#line 6966 "cpp_re.inc"
yy1022:
    yych = *++YYCURSOR;
    if (yych == 'L') goto yy1028;
    if (yych == 'l') goto yy1028;
    goto yy1021;
yy1023:
    yych = *++YYCURSOR;
    if (yych <= 'U') {
        if (yych == 'L') goto yy1025;
        if (yych <= 'T') goto yy1021;
    } else {
        if (yych <= 'l') {
            if (yych <= 'k') goto yy1021;
            goto yy1025;
        } else {
            if (yych != 'u') goto yy1021;
        }
    }
    yych = *++YYCURSOR;
    goto yy1021;
yy1025:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == 'U') goto yy1027;
    if (yych == 'u') goto yy1027;
yy1026:
#line 431 "cpp.re"
    { BOOST_WAVE_RET(T_LONGINTLIT); }
#line 6994 "cpp_re.inc"
yy1027:
    yych = *++YYCURSOR;
    goto yy1026;
yy1028:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == 'L') goto yy1027;
    if (yych == 'l') goto yy1027;
    goto yy1021;
}
#line 435 "cpp.re"

    }
}
