/* Generated by re2c 0.13.5 on Fri May 22 14:32:21 2009 */
#line 1 "strict_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 strict lexer conforming to the Standard as close as possible.
    It does not allow the '$' to be part of identifiers. If you need the '$'
    character in identifiers please include the lexer definition provided
    in the cpp.re file.
    
    TODO: 
        handle errors better.
=============================================================================*/

#line 40 "strict_cpp.re"



#line 25 "strict_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,  58,  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 '%':    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 '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 '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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DIVIDE); }
#line 237 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DOT); }
#line 251 "strict_cpp_re.inc"
yy6:
    ++YYCURSOR;
yy7:
#line 45 "strict_cpp.re"
    { goto pp_number; }
#line 257 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_IDENTIFIER); }
#line 272 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE); }
#line 445 "strict_cpp_re.inc"
yy31:
    yyaccept = 2;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == '?') goto yy407;
yy32:
#line 153 "strict_cpp.re"
    { BOOST_WAVE_RET(T_QUESTION_MARK); }
#line 453 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LESS); }
#line 467 "strict_cpp_re.inc"
yy35:
    ++YYCURSOR;
#line 131 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE); }
#line 472 "strict_cpp_re.inc"
yy37:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') {
        if (yych == ':') goto yy388;
    } else {
        if (yych <= '=') goto yy390;
        if (yych <= '>') goto yy392;
    }
#line 179 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PERCENT); }
#line 483 "strict_cpp_re.inc"
yy39:
    ++YYCURSOR;
#line 134 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET); }
#line 488 "strict_cpp_re.inc"
yy41:
    ++YYCURSOR;
#line 137 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
#line 493 "strict_cpp_re.inc"
yy43:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == ':') goto yy384;
    if (yych == '>') goto yy386;
#line 151 "strict_cpp.re"
    { BOOST_WAVE_RET(T_COLON); }
#line 500 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND); }
#line 541 "strict_cpp_re.inc"
yy47:
    ++YYCURSOR;
#line 148 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTPAREN); }
#line 546 "strict_cpp_re.inc"
yy49:
    ++YYCURSOR;
#line 149 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTPAREN); }
#line 551 "strict_cpp_re.inc"
yy51:
    ++YYCURSOR;
#line 150 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SEMICOLON); }
#line 556 "strict_cpp_re.inc"
yy53:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '+') goto yy256;
    if (yych == '=') goto yy258;
#line 175 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PLUS); }
#line 563 "strict_cpp_re.inc"
yy55:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') {
        if (yych == '-') goto yy250;
    } else {
        if (yych <= '=') goto yy252;
        if (yych <= '>') goto yy248;
    }
#line 176 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MINUS); }
#line 574 "strict_cpp_re.inc"
yy57:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy246;
#line 177 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STAR); }
#line 580 "strict_cpp_re.inc"
yy59:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy244;
#line 180 "strict_cpp.re"
    { BOOST_WAVE_RET(T_XOR); }
#line 586 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_AND); }
#line 598 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OR); }
#line 611 "strict_cpp_re.inc"
yy66:
    ++YYCURSOR;
#line 188 "strict_cpp.re"
    { BOOST_WAVE_RET(T_COMPL); }
#line 616 "strict_cpp_re.inc"
yy68:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy223;
#line 191 "strict_cpp.re"
    { BOOST_WAVE_RET(T_NOT); }
#line 622 "strict_cpp_re.inc"
yy70:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy221;
#line 193 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ASSIGN); }
#line 628 "strict_cpp_re.inc"
yy72:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) <= '<') goto yy73;
    if (yych <= '=') goto yy215;
    if (yych <= '>') goto yy217;
yy73:
#line 195 "strict_cpp.re"
    { BOOST_WAVE_RET(T_GREATER); }
#line 637 "strict_cpp_re.inc"
yy74:
    ++YYCURSOR;
#line 227 "strict_cpp.re"
    { BOOST_WAVE_RET(T_COMMA); }
#line 642 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
#line 674 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SPACE); }
#line 705 "strict_cpp_re.inc"
yy84:
    yych = *++YYCURSOR;
    goto yy95;
yy85:
    ++YYCURSOR;
yy86:
#line 282 "strict_cpp.re"
    {
        s->line++;
        cursor.column = 1;
        BOOST_WAVE_RET(T_NEWLINE);
    }
#line 718 "strict_cpp_re.inc"
yy87:
    yych = *++YYCURSOR;
    if (yych == '\n') goto yy93;
    goto yy86;
yy88:
    ++YYCURSOR;
#line 289 "strict_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 735 "strict_cpp_re.inc"
yy90:
    yych = *++YYCURSOR;
    goto yy79;
yy91:
    ++YYCURSOR;
#line 302 "strict_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 748 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STRINGLIT); }
#line 1250 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CHARLIT); }
#line 2097 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_GREATEREQUAL); }
#line 3027 "strict_cpp_re.inc"
yy217:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy219;
#line 210 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
#line 3033 "strict_cpp_re.inc"
yy219:
    ++YYCURSOR;
#line 211 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
#line 3038 "strict_cpp_re.inc"
yy221:
    ++YYCURSOR;
#line 213 "strict_cpp.re"
    { BOOST_WAVE_RET(T_EQUAL); }
#line 3043 "strict_cpp_re.inc"
yy223:
    ++YYCURSOR;
#line 214 "strict_cpp.re"
    { BOOST_WAVE_RET(T_NOTEQUAL); }
#line 3048 "strict_cpp_re.inc"
yy225:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy230;
    goto yy98;
yy226:
    ++YYCURSOR;
#line 220 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OROR); }
#line 3057 "strict_cpp_re.inc"
yy228:
    ++YYCURSOR;
#line 206 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ORASSIGN); }
#line 3062 "strict_cpp_re.inc"
yy230:
    yych = *++YYCURSOR;
    if (yych != '!') goto yy98;
    ++YYCURSOR;
#line 222 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3069 "strict_cpp_re.inc"
yy233:
    ++YYCURSOR;
#line 218 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ANDAND); }
#line 3074 "strict_cpp_re.inc"
yy235:
    ++YYCURSOR;
#line 204 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ANDASSIGN); }
#line 3079 "strict_cpp_re.inc"
yy237:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych != 'r') goto yy195;
    yyaccept = 8;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy239;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy240;
            if (yych <= '`') goto yy239;
            if (yych <= 'z') goto yy194;
        }
    }
yy239:
#line 182 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
#line 3106 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
#line 3124 "strict_cpp_re.inc"
yy244:
    ++YYCURSOR;
#line 201 "strict_cpp.re"
    { BOOST_WAVE_RET(T_XORASSIGN); }
#line 3129 "strict_cpp_re.inc"
yy246:
    ++YYCURSOR;
#line 198 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STARASSIGN); }
#line 3134 "strict_cpp_re.inc"
yy248:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '*') goto yy254;
#line 238 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ARROW); }
#line 3140 "strict_cpp_re.inc"
yy250:
    ++YYCURSOR;
#line 226 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MINUSMINUS); }
#line 3145 "strict_cpp_re.inc"
yy252:
    ++YYCURSOR;
#line 197 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MINUSASSIGN); }
#line 3150 "strict_cpp_re.inc"
yy254:
    ++YYCURSOR;
#line 229 "strict_cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_ARROW);
            }
            else {
                BOOST_WAVE_RET(T_ARROWSTAR); 
            }
        }
#line 3163 "strict_cpp_re.inc"
yy256:
    ++YYCURSOR;
#line 225 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PLUSPLUS); }
#line 3168 "strict_cpp_re.inc"
yy258:
    ++YYCURSOR;
#line 196 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PLUSASSIGN); }
#line 3173 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND); }
#line 3271 "strict_cpp_re.inc"
yy274:
    yych = *++YYCURSOR;
    if (yych != '=') goto yy98;
    ++YYCURSOR;
#line 144 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3278 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_IF); }
#line 3291 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_IFDEF); }
#line 3304 "strict_cpp_re.inc"
yy285:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'f') goto yy98;
    ++YYCURSOR;
#line 263 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_IFNDEF); }
#line 3313 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_INCLUDE); }
#line 3330 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_QHEADER); }
#line 3386 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_HHEADER); }
#line 3399 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_DEFINE); }
#line 3463 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_UNDEF); }
#line 3474 "strict_cpp_re.inc"
yy330:
    yych = *++YYCURSOR;
    if (yych != 'n') goto yy98;
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    ++YYCURSOR;
#line 269 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_LINE); }
#line 3483 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_PRAGMA); }
#line 3496 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_WARNING); }
#line 3511 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
#line 3524 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_ERROR); }
#line 3544 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
#line 3568 "strict_cpp_re.inc"
yy369:
    ++YYCURSOR;
#line 266 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_ENDIF); }
#line 3573 "strict_cpp_re.inc"
yy371:
    yych = *++YYCURSOR;
    if (yych == 'f') goto yy375;
    goto yy98;
yy372:
    yych = *++YYCURSOR;
    if (yych != 'e') goto yy98;
    ++YYCURSOR;
#line 264 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_ELSE); }
#line 3584 "strict_cpp_re.inc"
yy375:
    ++YYCURSOR;
#line 265 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_ELIF); }
#line 3589 "strict_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 "strict_cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_COLON);
            }
            else {
                BOOST_WAVE_RET(T_COLON_COLON); 
            }
        }
#line 3655 "strict_cpp_re.inc"
yy386:
    ++YYCURSOR;
#line 139 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
#line 3660 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_ALT); }
#line 3700 "strict_cpp_re.inc"
yy390:
    ++YYCURSOR;
#line 200 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
#line 3705 "strict_cpp_re.inc"
yy392:
    ++YYCURSOR;
#line 133 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
#line 3710 "strict_cpp_re.inc"
yy394:
    yych = *++YYCURSOR;
    if (yych != ':') goto yy98;
    ++YYCURSOR;
#line 147 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
#line 3717 "strict_cpp_re.inc"
yy397:
    ++YYCURSOR;
#line 216 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LESSEQUAL); }
#line 3722 "strict_cpp_re.inc"
yy399:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy405;
#line 209 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SHIFTLEFT); }
#line 3728 "strict_cpp_re.inc"
yy401:
    ++YYCURSOR;
#line 136 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
#line 3733 "strict_cpp_re.inc"
yy403:
    ++YYCURSOR;
#line 130 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
#line 3738 "strict_cpp_re.inc"
yy405:
    ++YYCURSOR;
#line 212 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
#line 3743 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
#line 3762 "strict_cpp_re.inc"
yy410:
    ++YYCURSOR;
#line 132 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
#line 3767 "strict_cpp_re.inc"
yy412:
    ++YYCURSOR;
#line 135 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
#line 3772 "strict_cpp_re.inc"
yy414:
    ++YYCURSOR;
#line 138 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
#line 3777 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
#line 3818 "strict_cpp_re.inc"
yy418:
    ++YYCURSOR;
    if ((yych = *YYCURSOR) == '=') goto yy434;
#line 181 "strict_cpp.re"
    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
#line 3824 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
#line 3837 "strict_cpp_re.inc"
yy422:
    ++YYCURSOR;
#line 189 "strict_cpp.re"
    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
#line 3842 "strict_cpp_re.inc"
yy424:
    yyaccept = 15;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'U') goto yy186;
    if (yych == 'u') goto yy185;
yy425:
#line 239 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
#line 3851 "strict_cpp_re.inc"
yy426:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy431;
    goto yy98;
yy427:
    ++YYCURSOR;
#line 221 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3860 "strict_cpp_re.inc"
yy429:
    ++YYCURSOR;
#line 208 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
#line 3865 "strict_cpp_re.inc"
yy431:
    yych = *++YYCURSOR;
    if (yych != '!') goto yy98;
    ++YYCURSOR;
#line 224 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
#line 3872 "strict_cpp_re.inc"
yy434:
    ++YYCURSOR;
#line 203 "strict_cpp.re"
    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
#line 3877 "strict_cpp_re.inc"
yy436:
    yych = *++YYCURSOR;
    if (yych == '?') goto yy439;
    goto yy98;
yy437:
    ++YYCURSOR;
#line 145 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3886 "strict_cpp_re.inc"
yy439:
    yych = *++YYCURSOR;
    if (yych != '=') goto yy98;
    ++YYCURSOR;
#line 146 "strict_cpp.re"
    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
#line 3893 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
#line 3969 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
#line 3994 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
#line 4024 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
#line 4054 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
#line 4075 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
#line 4096 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
#line 4111 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
#line 4156 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
#line 4180 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
#line 4195 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
#line 4222 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
#line 4263 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
#line 4275 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
#line 4287 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
#line 4299 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_WHILE); }
#line 4325 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_WCHART); }
#line 4349 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_VOLATILE); }
#line 4392 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_VOID); }
#line 4404 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_VIRTUAL); }
#line 4428 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_USING); }
#line 4455 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_UNSIGNED); }
#line 4487 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_UNION); }
#line 4502 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TYPENAME); }
#line 4565 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TYPEID); }
#line 4577 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TYPEDEF); }
#line 4592 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TRY); }
#line 4609 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TRUE); }
#line 4621 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_THROW); }
#line 4644 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_THIS); }
#line 4656 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_TEMPLATE); }
#line 4683 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SWITCH); }
#line 4724 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STRUCT); }
#line 4750 "strict_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 <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy633;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy634;
            if (yych <= '`') goto yy633;
            if (yych <= 'z') goto yy194;
        }
    }
yy633:
#line 91 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STATIC); }
#line 4780 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_STATICCAST); }
#line 4804 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SIZEOF); }
#line 4830 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SIGNED); }
#line 4848 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_SHORT); }
#line 4866 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_RETURN); }
#line 4906 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
#line 4954 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_REGISTER); }
#line 4978 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PUBLIC); }
#line 5008 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PROTECTED); }
#line 5043 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PRIVATE); }
#line 5064 "strict_cpp_re.inc"
yy703:
    yyaccept = 1;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych == 'e') goto yy710;
    goto yy195;
yy704:
    yyaccept = 60;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy705;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy706;
            if (yych <= '`') goto yy705;
            if (yych <= 'z') goto yy194;
        }
    }
yy705:
#line 223 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
#line 5093 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
#line 5111 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_OPERATOR); }
#line 5138 "strict_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 <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy721;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy722;
            if (yych <= '`') goto yy721;
            if (yych <= 'z') goto yy194;
        }
    }
yy721:
#line 192 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
#line 5175 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
#line 5193 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_NEW); }
#line 5205 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_NAMESPACE); }
#line 5235 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_MUTABLE); }
#line 5262 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LONG); }
#line 5280 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_IF); }
#line 5292 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_INT); }
#line 5320 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_INLINE); }
#line 5338 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
#line 5359 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_GOTO); }
#line 5377 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_FRIEND); }
#line 5416 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_FOR); }
#line 5428 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_FLOAT); }
#line 5446 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_FALSE); }
#line 5464 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_EXTERN); }
#line 5507 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_EXPORT); }
#line 5530 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_EXPLICIT); }
#line 5551 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ENUM); }
#line 5566 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ELSE); }
#line 5581 "strict_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 <= '[') {
        if (yych <= '>') {
            if (yych <= '/') goto yy813;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych <= '@') goto yy813;
            if (yych <= 'Z') goto yy194;
        }
    } else {
        if (yych <= '`') {
            if (yych <= '\\') goto yy196;
            if (yych == '_') goto yy194;
        } else {
            if (yych == 'u') goto yy826;
            if (yych <= 'z') goto yy194;
        }
    }
yy813:
#line 60 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DO); }
#line 5612 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DYNAMICCAST); }
#line 5654 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DOUBLE); }
#line 5675 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DELETE); }
#line 5701 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DEFAULT); }
#line 5722 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
#line 5769 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CONTINUE); }
#line 5798 "strict_cpp_re.inc"
yy858:
    yyaccept = 90;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy859;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy860;
            if (yych <= '`') goto yy859;
            if (yych <= 'z') goto yy194;
        }
    }
yy859:
#line 55 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CONST); }
#line 5822 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CONSTCAST); }
#line 5846 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CLASS); }
#line 5864 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CHAR); }
#line 5879 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CATCH); }
#line 5902 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CASE); }
#line 5914 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_BREAK); }
#line 5945 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_BOOL); }
#line 5960 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
#line 5986 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
#line 6001 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_AUTO); }
#line 6029 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ASM); }
#line 6041 "strict_cpp_re.inc"
yy906:
    yyaccept = 102;
    yych = *(YYMARKER = ++YYCURSOR);
    if (yych <= 'Z') {
        if (yych <= '>') {
            if (yych <= '/') goto yy907;
            if (yych <= '9') goto yy194;
        } else {
            if (yych <= '?') goto yy197;
            if (yych >= 'A') goto yy194;
        }
    } else {
        if (yych <= '^') {
            if (yych == '\\') goto yy196;
        } else {
            if (yych <= '_') goto yy908;
            if (yych <= '`') goto yy907;
            if (yych <= 'z') goto yy194;
        }
    }
yy907:
#line 219 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
#line 6065 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
#line 6083 "strict_cpp_re.inc"
yy912:
    ++YYCURSOR;
#line 166 "strict_cpp.re"
    { 
            if (s->act_in_c99_mode) {
                --YYCURSOR;
                BOOST_WAVE_RET(T_DOT);
            }
            else {
                BOOST_WAVE_RET(T_DOTSTAR); 
            }
        }
#line 6096 "strict_cpp_re.inc"
yy914:
    yych = *++YYCURSOR;
    if (yych == '.') goto yy916;
    goto yy98;
yy915:
    yych = *++YYCURSOR;
    goto yy7;
yy916:
    ++YYCURSOR;
#line 152 "strict_cpp.re"
    { BOOST_WAVE_RET(T_ELLIPSIS); }
#line 6108 "strict_cpp_re.inc"
yy918:
    ++YYCURSOR;
#line 199 "strict_cpp.re"
    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
#line 6113 "strict_cpp_re.inc"
yy920:
    ++YYCURSOR;
#line 44 "strict_cpp.re"
    { goto cppcomment; }
#line 6118 "strict_cpp_re.inc"
yy922:
    ++YYCURSOR;
#line 43 "strict_cpp.re"
    { goto ccomment; }
#line 6123 "strict_cpp_re.inc"
}
#line 308 "strict_cpp.re"


ccomment:

#line 6130 "strict_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 "strict_cpp.re"
    { goto ccomment; }
#line 6156 "strict_cpp_re.inc"
yy928:
    ++YYCURSOR;
yy929:
#line 315 "strict_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 6168 "strict_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 "strict_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 6197 "strict_cpp_re.inc"
yy935:
    ++YYCURSOR;
#line 343 "strict_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 6207 "strict_cpp_re.inc"
yy937:
    yych = *++YYCURSOR;
    goto yy929;
yy938:
    ++YYCURSOR;
#line 312 "strict_cpp.re"
    { BOOST_WAVE_RET(T_CCOMMENT); }
#line 6215 "strict_cpp_re.inc"
}
#line 349 "strict_cpp.re"


cppcomment:

#line 6222 "strict_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 "strict_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 6247 "strict_cpp_re.inc"
yy944:
    yych = *++YYCURSOR;
    if (yych == '\n') goto yy952;
    goto yy943;
yy945:
    ++YYCURSOR;
yy946:
#line 362 "strict_cpp.re"
    { goto cppcomment; }
#line 6257 "strict_cpp_re.inc"
yy947:
    yych = *++YYCURSOR;
    goto yy946;
yy948:
    ++YYCURSOR;
#line 365 "strict_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 6282 "strict_cpp_re.inc"
yy950:
    ++YYCURSOR;
#line 385 "strict_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 6292 "strict_cpp_re.inc"
yy952:
    ++YYCURSOR;
    yych = *YYCURSOR;
    goto yy943;
}
#line 391 "strict_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 6310 "strict_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,   0,   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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_PP_NUMBER); }
#line 6379 "strict_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 <= '/') goto yy959;
            if (yych <= '9') goto yy957;
            if (yych <= '>') goto yy959;
            goto yy963;
        }
    } else {
        if (yych <= '\\') {
            if (yych <= '@') goto yy959;
            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 "strict_cpp.re"

    }
    else {
    
#line 6587 "strict_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 "strict_cpp.re"
    { goto integer_suffix; }
#line 6664 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_FLOATLIT); }
#line 6710 "strict_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 "strict_cpp.re"

    }
}

/* this subscanner is called, whenever a Integer was recognized */
integer_suffix:
{
    if (s->enable_ms_extensions) {
    
#line 6859 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_INTLIT); }
#line 6881 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LONGINTLIT); }
#line 6916 "strict_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 "strict_cpp.re"

    }
    else {
    
#line 6936 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_INTLIT); }
#line 6954 "strict_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 "strict_cpp.re"
    { BOOST_WAVE_RET(T_LONGINTLIT); }
#line 6982 "strict_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 "strict_cpp.re"

    }
}
