Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r67093 - in trunk: boost/wave boost/wave/cpplexer/re2clex boost/wave/util libs/wave libs/wave/samples/cpp_tokens/slex libs/wave/src libs/wave/src/cpplexer/re2clex libs/wave/test/testwave tools/wave tools/wave/build
From: hartmut.kaiser_at_[hidden]
Date: 2010-12-07 20:29:51


Author: hkaiser
Date: 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
New Revision: 67093
URL: http://svn.boost.org/trac/boost/changeset/67093

Log:
Wave: fixing Wave for Boost Filesystem V3, which is now the default, changed build system for Wave tool to disable threading
Text files modified:
   trunk/boost/wave/cpp_context.hpp | 6
   trunk/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp | 6
   trunk/boost/wave/cpplexer/re2clex/scanner.hpp | 1
   trunk/boost/wave/language_support.hpp | 28
   trunk/boost/wave/token_ids.hpp | 12
   trunk/boost/wave/util/cpp_include_paths.hpp | 4
   trunk/boost/wave/util/filesystem_compatibility.hpp | 65
   trunk/boost/wave/wave_config.hpp | 12
   trunk/boost/wave/wave_version.hpp | 4
   trunk/libs/wave/ChangeLog | 8
   trunk/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp | 32
   trunk/libs/wave/src/cpplexer/re2clex/cpp.re | 10
   trunk/libs/wave/src/cpplexer/re2clex/cpp_re.inc | 3001 ++++++++++++++++++++++-----------------
   trunk/libs/wave/src/cpplexer/re2clex/strict_cpp.re | 10
   trunk/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc | 3004 ++++++++++++++++++++++-----------------
   trunk/libs/wave/src/token_ids.cpp | 22
   trunk/libs/wave/test/testwave/collect_hooks_information.hpp | 50
   trunk/libs/wave/test/testwave/testwave.cpp | 2
   trunk/libs/wave/test/testwave/testwave_app.cpp | 30
   trunk/tools/wave/build/Jamfile.v2 | 17
   trunk/tools/wave/cpp.cpp | 29
   trunk/tools/wave/trace_macro_expansion.hpp | 6
   22 files changed, 3681 insertions(+), 2678 deletions(-)

Modified: trunk/boost/wave/cpp_context.hpp
==============================================================================
--- trunk/boost/wave/cpp_context.hpp (original)
+++ trunk/boost/wave/cpp_context.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -165,7 +165,7 @@
         std::string fname(filename);
         if (filename != "<Unknown>" && filename != "<stdin>") {
             using namespace boost::filesystem;
- path fpath(complete(path(filename)));
+ path fpath(util::complete_path(path(filename)));
             fname = fpath.string();
         }
         return iterator_type(*this, first, last, position_type(fname.c_str()));
@@ -177,7 +177,7 @@
         std::string fname(filename);
         if (filename != "<Unknown>" && filename != "<stdin>") {
             using namespace boost::filesystem;
- path fpath(complete(path(filename)));
+ path fpath(util::complete_path(path(filename)));
             fname = fpath.string();
         }
         return iterator_type(*this, first_, last_, position_type(fname.c_str()));
@@ -324,7 +324,7 @@
             std::string fname(filename);
             if (filename != "<Unknown>" && filename != "<stdin>") {
                 using namespace boost::filesystem;
- path fpath(complete(path(filename)));
+ path fpath(util::complete_path(path(filename)));
                 fname = fpath.string();
                 includes.set_current_directory(fname.c_str());
             }

Modified: trunk/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
==============================================================================
--- trunk/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp (original)
+++ trunk/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -152,6 +152,12 @@
 
     scanner.detect_pp_numbers = boost::wave::need_prefer_pp_numbers(language_);
     scanner.single_line_only = boost::wave::need_single_line(language_);
+
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+ scanner.act_in_cpp0x_mode = boost::wave::need_cpp0x(language_);
+#else
+ scanner.act_in_cpp0x_mode = false;
+#endif
 }
 
 template <typename IteratorT, typename PositionT, typename TokenT>

Modified: trunk/boost/wave/cpplexer/re2clex/scanner.hpp
==============================================================================
--- trunk/boost/wave/cpplexer/re2clex/scanner.hpp (original)
+++ trunk/boost/wave/cpplexer/re2clex/scanner.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -57,6 +57,7 @@
     bool detect_pp_numbers; /* lexer should prefer to detect pp-numbers */
     bool enable_import_keyword; /* recognize import as a keyword */
     bool single_line_only; /* don't report missing eol's in C++ comments */
+ bool act_in_cpp0x_mode; /* lexer works in C++0x mode */
 } Scanner;
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: trunk/boost/wave/language_support.hpp
==============================================================================
--- trunk/boost/wave/language_support.hpp (original)
+++ trunk/boost/wave/language_support.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -34,6 +34,9 @@
     support_option_variadics = 0x04,
     support_c99 = support_option_variadics | support_option_long_long | 0x08,
 #endif
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+ support_cpp0x = support_option_variadics | support_option_long_long | 0x10,
+#endif
 
     support_option_mask = 0xFF80,
     support_option_insert_whitespace = 0x0080,
@@ -60,6 +63,31 @@
     return (language & ~support_option_mask) == support_cpp;
 }
 
+///////////////////////////////////////////////////////////////////////////////
+//
+// need_cpp0x
+//
+// Extract, if the language to support is C++0x
+//
+///////////////////////////////////////////////////////////////////////////////
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+
+inline bool
+need_cpp0x(language_support language)
+{
+ return (language & ~support_option_mask) == support_cpp0x;
+}
+
+#else
+
+inline bool
+need_cpp0x(language_support language)
+{
+ return false;
+}
+
+#endif
+
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
 ///////////////////////////////////////////////////////////////////////////////
 //

Modified: trunk/boost/wave/token_ids.hpp
==============================================================================
--- trunk/boost/wave/token_ids.hpp (original)
+++ trunk/boost/wave/token_ids.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -287,6 +287,18 @@
 // import is needed to be a keyword for the C++ module Standards proposal
     T_IMPORT = TOKEN_FROM_ID(421, KeywordTokenType),
 
+// C++0x keywords
+ T_ALIGNAS = TOKEN_FROM_ID(422, KeywordTokenType),
+ T_ALIGNOF = TOKEN_FROM_ID(423, KeywordTokenType),
+ T_CHAR16_T = TOKEN_FROM_ID(424, KeywordTokenType),
+ T_CHAR32_T = TOKEN_FROM_ID(425, KeywordTokenType),
+ T_CONSTEXPR = TOKEN_FROM_ID(426, KeywordTokenType),
+ T_DECLTYPE = TOKEN_FROM_ID(427, KeywordTokenType),
+ T_NOEXCEPT = TOKEN_FROM_ID(428, KeywordTokenType),
+ T_NULLPTR = TOKEN_FROM_ID(429, KeywordTokenType),
+ T_STATICASSERT = TOKEN_FROM_ID(430, KeywordTokenType),
+ T_THREADLOCAL = TOKEN_FROM_ID(431, KeywordTokenType),
+
     T_LAST_TOKEN_ID,
     T_LAST_TOKEN = ID_FROM_TOKEN(T_LAST_TOKEN_ID & ~PPTokenFlag),
 

Modified: trunk/boost/wave/util/cpp_include_paths.hpp
==============================================================================
--- trunk/boost/wave/util/cpp_include_paths.hpp (original)
+++ trunk/boost/wave/util/cpp_include_paths.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -273,7 +273,7 @@
 {
     namespace fs = boost::filesystem;
     if (path_) {
- fs::path newpath = fs::complete(create_path(path_), current_dir);
+ fs::path newpath = util::complete_path(create_path(path_), current_dir);
 
         if (!fs::exists(newpath) || !fs::is_directory(newpath)) {
         // the given path does not form a name of a valid file system directory
@@ -441,7 +441,7 @@
     namespace fs = boost::filesystem;
     
     fs::path filepath (create_path(path_));
- fs::path filename = fs::complete(filepath, current_dir);
+ fs::path filename = util::complete_path(filepath, current_dir);
     if (fs::exists(filename) && fs::is_directory(filename)) {
         current_rel_dir.clear();
         if (!as_relative_to(filepath, current_dir, current_rel_dir))

Modified: trunk/boost/wave/util/filesystem_compatibility.hpp
==============================================================================
--- trunk/boost/wave/util/filesystem_compatibility.hpp (original)
+++ trunk/boost/wave/util/filesystem_compatibility.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -13,6 +13,7 @@
 
 #include <string>
 
+#include <boost/version.hpp>
 #include <boost/filesystem/path.hpp>
 #include <boost/filesystem/operations.hpp>
 
@@ -40,7 +41,11 @@
 
     inline std::string leaf(boost::filesystem::path const& p)
     {
+#if BOOST_VERSION >= 104600
+ return p.leaf().string();
+#else
         return p.leaf();
+#endif
     }
 
     inline boost::filesystem::path branch_path(boost::filesystem::path const& p)
@@ -55,19 +60,52 @@
 
     inline std::string native_file_string(boost::filesystem::path const& p)
     {
+#if BOOST_VERSION >= 104600
+ return p.string();
+#else
         return p.native_file_string();
+#endif
+ }
+
+ inline boost::filesystem::path complete_path(
+ boost::filesystem::path const& p)
+ {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem3::complete(p, initial_path());
+#else
+ return boost::filesystem::complete(p, initial_path());
+#endif
+ }
+
+ inline boost::filesystem::path complete_path(
+ boost::filesystem::path const& p, boost::filesystem::path const& base)
+ {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem3::complete(p, base);
+#else
+ return boost::filesystem::complete(p, base);
+#endif
     }
 
 #else
+
 // interface wrappers if deprecated functions do not exist
     inline boost::filesystem::path initial_path()
     {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem3::detail::initial_path();
+#else
         return boost::filesystem::initial_path<boost::filesystem::path>();
+#endif
     }
 
     inline boost::filesystem::path current_path()
     {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem3::current_path();
+#else
         return boost::filesystem::current_path<boost::filesystem::path>();
+#endif
     }
 
     template <typename String>
@@ -78,7 +116,11 @@
 
     inline std::string leaf(boost::filesystem::path const& p)
     {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return p.filename().string();
+#else
         return p.filename();
+#endif
     }
 
     inline boost::filesystem::path branch_path(boost::filesystem::path const& p)
@@ -93,9 +135,32 @@
 
     inline std::string native_file_string(boost::filesystem::path const& p)
     {
+#if BOOST_VERSION >= 104600
+ return p.string();
+#else
         return p.file_string();
+#endif
+ }
+
+ inline boost::filesystem::path complete_path(
+ boost::filesystem::path const& p)
+ {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem::absolute(p, initial_path());
+#else
+ return boost::filesystem::complete(p, initial_path());
+#endif
     }
 
+ inline boost::filesystem::path complete_path(
+ boost::filesystem::path const& p, boost::filesystem::path const& base)
+ {
+#if BOOST_VERSION >= 104600 && BOOST_FILESYSTEM_VERSION >= 3
+ return boost::filesystem::absolute(p, base);
+#else
+ return boost::filesystem::complete(p, base);
+#endif
+ }
 #endif
 
 }}}

Modified: trunk/boost/wave/wave_config.hpp
==============================================================================
--- trunk/boost/wave/wave_config.hpp (original)
+++ trunk/boost/wave/wave_config.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -83,6 +83,18 @@
 #endif
 
 ///////////////////////////////////////////////////////////////////////////////
+// Decide, whether to support C++0x
+//
+// To implement C++0x keywords and preprocessor semantics define the following
+// to something not equal to zero.
+//
+#if !defined(BOOST_WAVE_SUPPORT_CPP0X)
+#define BOOST_WAVE_SUPPORT_CPP0X 1
+#undef BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS
+#define BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS 1
+#endif
+
+///////////////////////////////////////////////////////////////////////////////
 // Undefine the following, to enable some MS specific language extensions:
 // __int8, __int16, __int32, __int64, __based, __declspec, __cdecl,
 // __fastcall, __stdcall, __try, __except, __finally, __leave, __inline,

Modified: trunk/boost/wave/wave_version.hpp
==============================================================================
--- trunk/boost/wave/wave_version.hpp (original)
+++ trunk/boost/wave/wave_version.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -16,11 +16,11 @@
 // BOOST_WAVE_VERSION & 0x0000FF is the sub-minor version
 // BOOST_WAVE_VERSION & 0x00FF00 is the minor version
 // BOOST_WAVE_VERSION & 0xFF0000 is the major version
-#define BOOST_WAVE_VERSION 0x020100
+#define BOOST_WAVE_VERSION 0x020200
 
 // The following defines contain the same information as above
 #define BOOST_WAVE_VERSION_MAJOR 2
-#define BOOST_WAVE_VERSION_MINOR 1
+#define BOOST_WAVE_VERSION_MINOR 2
 #define BOOST_WAVE_VERSION_SUBMINOR 0
 
 #endif // !defined(WAVE_VERSION_H_9D79ABDB_AC54_4C0A_89B1_F70A2DCFE21E_INCLUDED)

Modified: trunk/libs/wave/ChangeLog
==============================================================================
--- trunk/libs/wave/ChangeLog (original)
+++ trunk/libs/wave/ChangeLog 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -20,6 +20,14 @@
 
 CHANGELOG
 
+Boost V1.46.0
+- V2.2.0
+- Added recognition of C++0x keywords to Re2C lexers.
+- Added --c++0x command line option to Wave to enabling the recognition of
+ C++0x keywords, converting those to C++0x tokens.
+- Adapted all of the library to play well with Boost.Filesystem V3 (which is
+ the default from now on).
+
 Boost V1.45.0
 - V2.1.0
 - Token pasting is well formed only as long as the formed token(s) are

Modified: trunk/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp
==============================================================================
--- trunk/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp (original)
+++ trunk/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -57,6 +57,7 @@
 #endif
 #define INIT_DATA_CPP_SIZE 15
 #define INIT_DATA_PP_NUMBER_SIZE 2
+#define INIT_DATA_CPP0X_SIZE 11
 
 ///////////////////////////////////////////////////////////////////////////////
 //
@@ -112,6 +113,7 @@
     static typename base_type::lexer_data const init_data[INIT_DATA_SIZE]; // common patterns
     static typename base_type::lexer_data const init_data_cpp[INIT_DATA_CPP_SIZE]; // C++ only patterns
     static typename base_type::lexer_data const init_data_pp_number[INIT_DATA_PP_NUMBER_SIZE]; // pp-number only patterns
+ static typename base_type::lexer_data const init_data_cpp0x[INIT_DATA_CPP0X_SIZE]; // C++0X only patterns
 };
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -429,6 +431,25 @@
 };
 
 ///////////////////////////////////////////////////////////////////////////////
+// C++ only token definitions
+template <typename IteratorT, typename PositionT>
+typename lexer_base<IteratorT, PositionT>::lexer_data const
+lexer<IteratorT, PositionT>::init_data_cpp0x[INIT_DATA_CPP0X_SIZE] =
+{
+ TOKEN_DATA(ALIGNAS, "alignas"),
+ TOKEN_DATA(ALIGNOF, "alignof"),
+ TOKEN_DATA(CHAR16_T, "char16_t"),
+ TOKEN_DATA(CHAR32_T, "char32_t"),
+ TOKEN_DATA(CONSTEXPR, "constexpr"),
+ TOKEN_DATA(DECLTYPE, "decltype"),
+ TOKEN_DATA(NOEXCEPT, "noexcept"),
+ TOKEN_DATA(NULLPTR, "nullptr"),
+ TOKEN_DATA(STATICASSERT, "static_assert"),
+ TOKEN_DATA(THREADLOCAL, "threadlocal"),
+ { token_id(0) } // this should be the last entry
+};
+
+///////////////////////////////////////////////////////////////////////////////
 // undefine macros, required for regular expression definitions
 #undef INCLUDEDEF
 #undef POUNDDEF
@@ -493,6 +514,17 @@
         }
     }
     
+// if in C++0x mode, add all new keywords
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+ if (boost::wave::need_cpp0x(lang)) {
+ for (int j = 0; 0 != init_data_cpp0x[j].tokenid; ++j) {
+ this->register_regex(init_data_cpp0x[j].tokenregex,
+ init_data_cpp0x[j].tokenid, init_data_cpp0x[j].tokencb,
+ init_data_cpp0x[j].lexerstate);
+ }
+ }
+#endif
+
     for (int i = 0; 0 != init_data[i].tokenid; ++i) {
         this->register_regex(init_data[i].tokenregex, init_data[i].tokenid,
             init_data[i].tokencb, init_data[i].lexerstate);

Modified: trunk/libs/wave/src/cpplexer/re2clex/cpp.re
==============================================================================
--- trunk/libs/wave/src/cpplexer/re2clex/cpp.re (original)
+++ trunk/libs/wave/src/cpplexer/re2clex/cpp.re 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -44,6 +44,8 @@
     "//" { goto cppcomment; }
     "."? Digit { goto pp_number; }
 
+ "alignas" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
+ "alignof" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
     "asm" { BOOST_WAVE_RET(T_ASM); }
     "auto" { BOOST_WAVE_RET(T_AUTO); }
     "bool" { BOOST_WAVE_RET(T_BOOL); }
@@ -51,10 +53,14 @@
     "case" { BOOST_WAVE_RET(T_CASE); }
     "catch" { BOOST_WAVE_RET(T_CATCH); }
     "char" { BOOST_WAVE_RET(T_CHAR); }
+ "char16_t" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
+ "char32_t" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
     "class" { BOOST_WAVE_RET(T_CLASS); }
     "const" { BOOST_WAVE_RET(T_CONST); }
+ "constexpr" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
     "const_cast" { BOOST_WAVE_RET(T_CONSTCAST); }
     "continue" { BOOST_WAVE_RET(T_CONTINUE); }
+ "decltype" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
     "default" { BOOST_WAVE_RET(T_DEFAULT); }
     "delete" { BOOST_WAVE_RET(T_DELETE); }
     "do" { BOOST_WAVE_RET(T_DO); }
@@ -78,6 +84,8 @@
     "mutable" { BOOST_WAVE_RET(T_MUTABLE); }
     "namespace" { BOOST_WAVE_RET(T_NAMESPACE); }
     "new" { BOOST_WAVE_RET(T_NEW); }
+ "noexcept" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
+ "nullptr" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
     "operator" { BOOST_WAVE_RET(T_OPERATOR); }
     "private" { BOOST_WAVE_RET(T_PRIVATE); }
     "protected" { BOOST_WAVE_RET(T_PROTECTED); }
@@ -90,10 +98,12 @@
     "sizeof" { BOOST_WAVE_RET(T_SIZEOF); }
     "static" { BOOST_WAVE_RET(T_STATIC); }
     "static_cast" { BOOST_WAVE_RET(T_STATICCAST); }
+ "static_assert" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
     "struct" { BOOST_WAVE_RET(T_STRUCT); }
     "switch" { BOOST_WAVE_RET(T_SWITCH); }
     "template" { BOOST_WAVE_RET(T_TEMPLATE); }
     "this" { BOOST_WAVE_RET(T_THIS); }
+ "thread_local" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
     "throw" { BOOST_WAVE_RET(T_THROW); }
     "true" { BOOST_WAVE_RET(T_TRUE); }
     "try" { BOOST_WAVE_RET(T_TRY); }

Modified: trunk/libs/wave/src/cpplexer/re2clex/cpp_re.inc
==============================================================================
--- trunk/libs/wave/src/cpplexer/re2clex/cpp_re.inc (original)
+++ trunk/libs/wave/src/cpplexer/re2clex/cpp_re.inc 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri May 22 14:32:01 2009 */
+/* Generated by re2c 0.13.5 on Tue Dec 07 10:30:02 2010 */
 #line 1 "cpp.re"
 /*=============================================================================
     Boost.Wave: A Standard compliant C++ preprocessor library
@@ -227,26 +227,26 @@
 yy2:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '.') {
- if (yych == '*') goto yy922;
+ if (yych == '*') goto yy985;
     } else {
- if (yych <= '/') goto yy920;
- if (yych == '=') goto yy918;
+ if (yych <= '/') goto yy983;
+ if (yych == '=') goto yy981;
     }
-#line 178 "cpp.re"
+#line 188 "cpp.re"
     { BOOST_WAVE_RET(T_DIVIDE); }
 #line 238 "cpp_re.inc"
 yy4:
     yyaccept = 0;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '-') {
- if (yych == '*') goto yy912;
+ if (yych == '*') goto yy975;
     } else {
- if (yych <= '.') goto yy914;
+ if (yych <= '.') goto yy977;
         if (yych <= '/') goto yy5;
- if (yych <= '9') goto yy915;
+ if (yych <= '9') goto yy978;
     }
 yy5:
-#line 164 "cpp.re"
+#line 174 "cpp.re"
     { BOOST_WAVE_RET(T_DOT); }
 #line 252 "cpp_re.inc"
 yy6:
@@ -258,136 +258,140 @@
 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;
+ switch (yych) {
+ case 'l': goto yy951;
+ case 'n': goto yy952;
+ case 's': goto yy953;
+ case 'u': goto yy954;
+ default: goto yy195;
     }
 yy9:
-#line 243 "cpp.re"
+#line 253 "cpp.re"
     { BOOST_WAVE_RET(T_IDENTIFIER); }
-#line 273 "cpp_re.inc"
+#line 272 "cpp_re.inc"
 yy10:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'n') {
- if (yych == 'i') goto yy880;
+ if (yych == 'i') goto yy933;
         goto yy195;
     } else {
- if (yych <= 'o') goto yy881;
- if (yych == 'r') goto yy882;
+ if (yych <= 'o') goto yy934;
+ if (yych == 'r') goto yy935;
         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;
+ case 'a': goto yy880;
+ case 'h': goto yy881;
+ case 'l': goto yy882;
+ case 'o': goto yy883;
     default: goto yy195;
     }
 yy12:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'n') {
- if (yych == 'e') goto yy811;
+ if (yych == 'e') goto yy842;
         goto yy195;
     } else {
- if (yych <= 'o') goto yy812;
- if (yych == 'y') goto yy814;
+ if (yych <= 'o') goto yy843;
+ if (yych == 'y') goto yy845;
         goto yy195;
     }
 yy13:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'm') {
- if (yych == 'l') goto yy786;
+ if (yych == 'l') goto yy817;
         goto yy195;
     } else {
- if (yych <= 'n') goto yy787;
- if (yych == 'x') goto yy788;
+ if (yych <= 'n') goto yy818;
+ if (yych == 'x') goto yy819;
         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;
+ case 'a': goto yy798;
+ case 'l': goto yy799;
+ case 'o': goto yy800;
+ case 'r': goto yy801;
     default: goto yy195;
     }
 yy15:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy763;
+ if (yych == 'o') goto yy794;
     goto yy195;
 yy16:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'l') {
- if (yych == 'f') goto yy747;
+ if (yych == 'f') goto yy778;
         goto yy195;
     } else {
- if (yych <= 'm') goto yy749;
- if (yych <= 'n') goto yy750;
+ if (yych <= 'm') goto yy780;
+ if (yych <= 'n') goto yy781;
         goto yy195;
     }
 yy17:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy743;
+ if (yych == 'o') goto yy774;
     goto yy195;
 yy18:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'u') goto yy736;
+ if (yych == 'u') goto yy767;
     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;
+ if (yych <= 'e') {
+ if (yych == 'a') goto yy734;
+ if (yych <= 'd') goto yy195;
+ goto yy735;
+ } else {
+ if (yych <= 'o') {
+ if (yych <= 'n') goto yy195;
+ goto yy736;
+ } else {
+ if (yych == 'u') goto yy737;
+ goto yy195;
+ }
     }
 yy20:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy703;
- if (yych == 'r') goto yy704;
+ if (yych == 'p') goto yy720;
+ if (yych == 'r') goto yy721;
     goto yy195;
 yy21:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'r') goto yy682;
- if (yych == 'u') goto yy683;
+ if (yych == 'r') goto yy699;
+ if (yych == 'u') goto yy700;
     goto yy195;
 yy22:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy654;
+ if (yych == 'e') goto yy671;
     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;
+ if (yych <= 'h') goto yy625;
+ if (yych <= 'i') goto yy626;
         goto yy195;
     } else {
- if (yych <= 't') goto yy617;
- if (yych == 'w') goto yy618;
+ if (yych <= 't') goto yy627;
+ if (yych == 'w') goto yy628;
         goto yy195;
     }
 yy24:
@@ -440,17 +444,17 @@
     }
 yy29:
     ++YYCURSOR;
-#line 128 "cpp.re"
+#line 138 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE); }
-#line 446 "cpp_re.inc"
+#line 450 "cpp_re.inc"
 yy31:
     yyaccept = 2;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych == '?') goto yy407;
 yy32:
-#line 153 "cpp.re"
+#line 163 "cpp.re"
     { BOOST_WAVE_RET(T_QUESTION_MARK); }
-#line 454 "cpp_re.inc"
+#line 458 "cpp_re.inc"
 yy33:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= ':') {
@@ -462,14 +466,14 @@
         if (yych <= '=') goto yy397;
     }
 yy34:
-#line 194 "cpp.re"
+#line 204 "cpp.re"
     { BOOST_WAVE_RET(T_LESS); }
-#line 468 "cpp_re.inc"
+#line 472 "cpp_re.inc"
 yy35:
     ++YYCURSOR;
-#line 131 "cpp.re"
+#line 141 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE); }
-#line 473 "cpp_re.inc"
+#line 477 "cpp_re.inc"
 yy37:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '<') {
@@ -478,26 +482,26 @@
         if (yych <= '=') goto yy390;
         if (yych <= '>') goto yy392;
     }
-#line 179 "cpp.re"
+#line 189 "cpp.re"
     { BOOST_WAVE_RET(T_PERCENT); }
-#line 484 "cpp_re.inc"
+#line 488 "cpp_re.inc"
 yy39:
     ++YYCURSOR;
-#line 134 "cpp.re"
+#line 144 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET); }
-#line 489 "cpp_re.inc"
+#line 493 "cpp_re.inc"
 yy41:
     ++YYCURSOR;
-#line 137 "cpp.re"
+#line 147 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-#line 494 "cpp_re.inc"
+#line 498 "cpp_re.inc"
 yy43:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == ':') goto yy384;
     if (yych == '>') goto yy386;
-#line 151 "cpp.re"
+#line 161 "cpp.re"
     { BOOST_WAVE_RET(T_COLON); }
-#line 501 "cpp_re.inc"
+#line 505 "cpp_re.inc"
 yy45:
     yyaccept = 3;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -536,31 +540,31 @@
         }
     }
 yy46:
-#line 140 "cpp.re"
+#line 150 "cpp.re"
     { BOOST_WAVE_RET(T_POUND); }
-#line 542 "cpp_re.inc"
+#line 546 "cpp_re.inc"
 yy47:
     ++YYCURSOR;
-#line 148 "cpp.re"
+#line 158 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTPAREN); }
-#line 547 "cpp_re.inc"
+#line 551 "cpp_re.inc"
 yy49:
     ++YYCURSOR;
-#line 149 "cpp.re"
+#line 159 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTPAREN); }
-#line 552 "cpp_re.inc"
+#line 556 "cpp_re.inc"
 yy51:
     ++YYCURSOR;
-#line 150 "cpp.re"
+#line 160 "cpp.re"
     { BOOST_WAVE_RET(T_SEMICOLON); }
-#line 557 "cpp_re.inc"
+#line 561 "cpp_re.inc"
 yy53:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '+') goto yy256;
     if (yych == '=') goto yy258;
-#line 175 "cpp.re"
+#line 185 "cpp.re"
     { BOOST_WAVE_RET(T_PLUS); }
-#line 564 "cpp_re.inc"
+#line 568 "cpp_re.inc"
 yy55:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '<') {
@@ -569,21 +573,21 @@
         if (yych <= '=') goto yy252;
         if (yych <= '>') goto yy248;
     }
-#line 176 "cpp.re"
+#line 186 "cpp.re"
     { BOOST_WAVE_RET(T_MINUS); }
-#line 575 "cpp_re.inc"
+#line 579 "cpp_re.inc"
 yy57:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy246;
-#line 177 "cpp.re"
+#line 187 "cpp.re"
     { BOOST_WAVE_RET(T_STAR); }
-#line 581 "cpp_re.inc"
+#line 585 "cpp_re.inc"
 yy59:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy244;
-#line 180 "cpp.re"
+#line 190 "cpp.re"
     { BOOST_WAVE_RET(T_XOR); }
-#line 587 "cpp_re.inc"
+#line 591 "cpp_re.inc"
 yy61:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -593,9 +597,9 @@
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '&') goto yy233;
     if (yych == '=') goto yy235;
-#line 183 "cpp.re"
+#line 193 "cpp.re"
     { BOOST_WAVE_RET(T_AND); }
-#line 599 "cpp_re.inc"
+#line 603 "cpp_re.inc"
 yy64:
     yyaccept = 4;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -606,40 +610,40 @@
         if (yych == '|') goto yy226;
     }
 yy65:
-#line 185 "cpp.re"
+#line 195 "cpp.re"
     { BOOST_WAVE_RET(T_OR); }
-#line 612 "cpp_re.inc"
+#line 616 "cpp_re.inc"
 yy66:
     ++YYCURSOR;
-#line 188 "cpp.re"
+#line 198 "cpp.re"
     { BOOST_WAVE_RET(T_COMPL); }
-#line 617 "cpp_re.inc"
+#line 621 "cpp_re.inc"
 yy68:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy223;
-#line 191 "cpp.re"
+#line 201 "cpp.re"
     { BOOST_WAVE_RET(T_NOT); }
-#line 623 "cpp_re.inc"
+#line 627 "cpp_re.inc"
 yy70:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy221;
-#line 193 "cpp.re"
+#line 203 "cpp.re"
     { BOOST_WAVE_RET(T_ASSIGN); }
-#line 629 "cpp_re.inc"
+#line 633 "cpp_re.inc"
 yy72:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '<') goto yy73;
     if (yych <= '=') goto yy215;
     if (yych <= '>') goto yy217;
 yy73:
-#line 195 "cpp.re"
+#line 205 "cpp.re"
     { BOOST_WAVE_RET(T_GREATER); }
-#line 638 "cpp_re.inc"
+#line 642 "cpp_re.inc"
 yy74:
     ++YYCURSOR;
-#line 227 "cpp.re"
+#line 237 "cpp.re"
     { BOOST_WAVE_RET(T_COMMA); }
-#line 643 "cpp_re.inc"
+#line 647 "cpp_re.inc"
 yy76:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -669,9 +673,9 @@
     if (yych == 'U') goto yy186;
     if (yych == 'u') goto yy185;
 yy79:
-#line 299 "cpp.re"
+#line 309 "cpp.re"
     { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-#line 675 "cpp_re.inc"
+#line 679 "cpp_re.inc"
 yy80:
     yyaccept = 5;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -700,29 +704,29 @@
     yych = *YYCURSOR;
     goto yy95;
 yy83:
-#line 279 "cpp.re"
+#line 289 "cpp.re"
     { BOOST_WAVE_RET(T_SPACE); }
-#line 706 "cpp_re.inc"
+#line 710 "cpp_re.inc"
 yy84:
     yych = *++YYCURSOR;
     goto yy95;
 yy85:
     ++YYCURSOR;
 yy86:
-#line 282 "cpp.re"
+#line 292 "cpp.re"
     {
         s->line++;
         cursor.column = 1;
         BOOST_WAVE_RET(T_NEWLINE);
     }
-#line 719 "cpp_re.inc"
+#line 723 "cpp_re.inc"
 yy87:
     yych = *++YYCURSOR;
     if (yych == '\n') goto yy93;
     goto yy86;
 yy88:
     ++YYCURSOR;
-#line 289 "cpp.re"
+#line 299 "cpp.re"
     {
         if (s->eof && cursor != s->eof)
         {
@@ -732,20 +736,20 @@
         }
         BOOST_WAVE_RET(T_EOF);
     }
-#line 736 "cpp_re.inc"
+#line 740 "cpp_re.inc"
 yy90:
     yych = *++YYCURSOR;
     goto yy79;
 yy91:
     ++YYCURSOR;
-#line 302 "cpp.re"
+#line 312 "cpp.re"
     {
         // flag the error
         BOOST_WAVE_UPDATE_CURSOR(); // adjust the input cursor
         (*s->error_proc)(s, lexing_exception::generic_lexing_error,
             "invalid character '\\%03o' in input stream", *--YYCURSOR);
     }
-#line 749 "cpp_re.inc"
+#line 753 "cpp_re.inc"
 yy93:
     yych = *++YYCURSOR;
     goto yy86;
@@ -772,10 +776,10 @@
     goto yy100;
 yy98:
     YYCURSOR = YYMARKER;
- if (yyaccept <= 51) {
- if (yyaccept <= 25) {
- if (yyaccept <= 12) {
- if (yyaccept <= 6) {
+ if (yyaccept <= 56) {
+ if (yyaccept <= 28) {
+ if (yyaccept <= 14) {
+ if (yyaccept <= 7) {
                     if (yyaccept <= 3) {
                         if (yyaccept <= 1) {
                             if (yyaccept <= 0) {
@@ -798,113 +802,113 @@
                                 goto yy79;
                             }
                         } else {
- goto yy102;
+ if (yyaccept <= 6) {
+ goto yy102;
+ } else {
+ goto yy152;
+ }
                         }
                     }
                 } else {
- if (yyaccept <= 9) {
- if (yyaccept <= 8) {
- if (yyaccept <= 7) {
- goto yy152;
- } else {
+ if (yyaccept <= 11) {
+ if (yyaccept <= 9) {
+ if (yyaccept <= 8) {
                                 goto yy239;
+ } else {
+ goto yy243;
                             }
                         } else {
- goto yy243;
- }
- } else {
- if (yyaccept <= 11) {
                             if (yyaccept <= 10) {
                                 goto yy279;
                             } else {
                                 goto yy294;
                             }
+ }
+ } else {
+ if (yyaccept <= 13) {
+ if (yyaccept <= 12) {
+ goto yy389;
+ } else {
+ goto yy417;
+ }
                         } else {
- goto yy389;
+ goto yy421;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 19) {
- if (yyaccept <= 16) {
- if (yyaccept <= 14) {
- if (yyaccept <= 13) {
- goto yy417;
- } else {
- goto yy421;
- }
- } else {
+ if (yyaccept <= 21) {
+ if (yyaccept <= 18) {
+ if (yyaccept <= 16) {
                             if (yyaccept <= 15) {
                                 goto yy425;
                             } else {
                                 goto yy456;
                             }
- }
- } else {
- if (yyaccept <= 18) {
+ } else {
                             if (yyaccept <= 17) {
                                 goto yy462;
                             } else {
                                 goto yy470;
                             }
+ }
+ } else {
+ if (yyaccept <= 20) {
+ if (yyaccept <= 19) {
+ goto yy478;
+ } else {
+ goto yy483;
+ }
                         } else {
- goto yy478;
+ goto yy488;
                         }
                     }
                 } else {
- if (yyaccept <= 22) {
- if (yyaccept <= 21) {
- if (yyaccept <= 20) {
- goto yy483;
+ if (yyaccept <= 25) {
+ if (yyaccept <= 23) {
+ if (yyaccept <= 22) {
+ goto yy491;
                             } else {
- goto yy488;
+ goto yy501;
                             }
                         } else {
- goto yy491;
+ if (yyaccept <= 24) {
+ goto yy507;
+ } else {
+ goto yy510;
+ }
                         }
                     } else {
- if (yyaccept <= 24) {
- if (yyaccept <= 23) {
- goto yy501;
+ if (yyaccept <= 27) {
+ if (yyaccept <= 26) {
+ goto yy517;
                             } else {
- goto yy507;
+ goto yy524;
                             }
                         } else {
- goto yy510;
+ goto yy526;
                         }
                     }
                 }
             }
         } else {
- if (yyaccept <= 38) {
- if (yyaccept <= 32) {
- if (yyaccept <= 29) {
- if (yyaccept <= 27) {
- if (yyaccept <= 26) {
- goto yy517;
+ if (yyaccept <= 42) {
+ if (yyaccept <= 35) {
+ if (yyaccept <= 32) {
+ if (yyaccept <= 30) {
+ if (yyaccept <= 29) {
+ goto yy528;
                             } else {
- goto yy524;
+ goto yy530;
                             }
                         } else {
- if (yyaccept <= 28) {
- goto yy526;
+ if (yyaccept <= 31) {
+ goto yy536;
                             } else {
- goto yy528;
+ goto yy542;
                             }
                         }
                     } 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;
@@ -914,7 +918,9 @@
                         } else {
                             goto yy560;
                         }
- } else {
+ }
+ } else {
+ if (yyaccept <= 39) {
                         if (yyaccept <= 37) {
                             if (yyaccept <= 36) {
                                 goto yy566;
@@ -922,263 +928,301 @@
                                 goto yy574;
                             }
                         } else {
- goto yy577;
+ if (yyaccept <= 38) {
+ goto yy577;
+ } else {
+ goto yy590;
+ }
+ }
+ } else {
+ if (yyaccept <= 41) {
+ if (yyaccept <= 40) {
+ goto yy592;
+ } else {
+ goto yy595;
+ }
+ } else {
+ goto yy598;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 45) {
- if (yyaccept <= 42) {
- if (yyaccept <= 40) {
- if (yyaccept <= 39) {
- goto yy590;
+ if (yyaccept <= 49) {
+ if (yyaccept <= 46) {
+ if (yyaccept <= 44) {
+ if (yyaccept <= 43) {
+ goto yy600;
                             } else {
- goto yy592;
+ goto yy606;
                             }
                         } else {
- if (yyaccept <= 41) {
- goto yy595;
+ if (yyaccept <= 45) {
+ goto yy615;
                             } else {
- goto yy598;
+ goto yy617;
                             }
                         }
                     } else {
- if (yyaccept <= 44) {
- if (yyaccept <= 43) {
- goto yy600;
+ if (yyaccept <= 48) {
+ if (yyaccept <= 47) {
+ goto yy624;
                             } else {
- goto yy605;
+ goto yy633;
                             }
                         } else {
- goto yy607;
+ goto yy639;
                         }
                     }
                 } else {
- if (yyaccept <= 48) {
- if (yyaccept <= 47) {
- if (yyaccept <= 46) {
- goto yy614;
+ if (yyaccept <= 53) {
+ if (yyaccept <= 51) {
+ if (yyaccept <= 50) {
+ goto yy643;
                             } else {
- goto yy623;
+ goto yy650;
                             }
                         } else {
- goto yy629;
+ if (yyaccept <= 52) {
+ goto yy656;
+ } else {
+ goto yy662;
+ }
                         }
                     } else {
- if (yyaccept <= 50) {
- if (yyaccept <= 49) {
- goto yy633;
+ if (yyaccept <= 55) {
+ if (yyaccept <= 54) {
+ goto yy666;
                             } else {
- goto yy639;
+ goto yy670;
                             }
                         } else {
- goto yy645;
+ goto yy678;
                         }
                     }
                 }
             }
         }
     } else {
- if (yyaccept <= 77) {
- if (yyaccept <= 64) {
- if (yyaccept <= 58) {
- if (yyaccept <= 55) {
- if (yyaccept <= 53) {
- if (yyaccept <= 52) {
- goto yy649;
+ if (yyaccept <= 85) {
+ if (yyaccept <= 71) {
+ if (yyaccept <= 64) {
+ if (yyaccept <= 60) {
+ if (yyaccept <= 58) {
+ if (yyaccept <= 57) {
+ goto yy692;
                             } else {
- goto yy653;
+ goto yy698;
                             }
                         } else {
- if (yyaccept <= 54) {
- goto yy661;
+ if (yyaccept <= 59) {
+ goto yy705;
                             } else {
- goto yy675;
+ goto yy714;
                             }
                         }
                     } else {
- if (yyaccept <= 57) {
- if (yyaccept <= 56) {
- goto yy681;
+ if (yyaccept <= 62) {
+ if (yyaccept <= 61) {
+ goto yy719;
                             } else {
- goto yy688;
+ goto yy722;
                             }
                         } else {
- goto yy697;
+ if (yyaccept <= 63) {
+ goto yy726;
+ } else {
+ goto yy733;
+ }
                         }
                     }
                 } else {
- if (yyaccept <= 61) {
- if (yyaccept <= 60) {
- if (yyaccept <= 59) {
- goto yy702;
+ if (yyaccept <= 68) {
+ if (yyaccept <= 66) {
+ if (yyaccept <= 65) {
+ goto yy743;
                             } else {
- goto yy705;
+ goto yy746;
                             }
                         } else {
- goto yy709;
+ if (yyaccept <= 67) {
+ goto yy750;
+ } else {
+ goto yy756;
+ }
                         }
                     } else {
- if (yyaccept <= 63) {
- if (yyaccept <= 62) {
- goto yy716;
+ if (yyaccept <= 70) {
+ if (yyaccept <= 69) {
+ goto yy758;
                             } else {
- goto yy721;
+ goto yy766;
                             }
                         } else {
- goto yy725;
+ goto yy773;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 71) {
- if (yyaccept <= 68) {
- if (yyaccept <= 66) {
- if (yyaccept <= 65) {
- goto yy727;
+ if (yyaccept <= 78) {
+ if (yyaccept <= 75) {
+ if (yyaccept <= 73) {
+ if (yyaccept <= 72) {
+ goto yy777;
                             } else {
- goto yy735;
+ goto yy779;
                             }
                         } else {
- if (yyaccept <= 67) {
- goto yy742;
+ if (yyaccept <= 74) {
+ goto yy784;
                             } else {
- goto yy746;
+ goto yy788;
                             }
                         }
                     } else {
- if (yyaccept <= 70) {
- if (yyaccept <= 69) {
- goto yy748;
+ if (yyaccept <= 77) {
+ if (yyaccept <= 76) {
+ goto yy793;
                             } else {
- goto yy753;
+ goto yy797;
                             }
                         } else {
- goto yy757;
+ goto yy806;
                         }
                     }
                 } else {
- if (yyaccept <= 74) {
- if (yyaccept <= 73) {
- if (yyaccept <= 72) {
- goto yy762;
+ if (yyaccept <= 82) {
+ if (yyaccept <= 80) {
+ if (yyaccept <= 79) {
+ goto yy808;
                             } else {
- goto yy766;
+ goto yy812;
                             }
                         } else {
- goto yy775;
+ if (yyaccept <= 81) {
+ goto yy816;
+ } else {
+ goto yy825;
+ }
                         }
                     } else {
- if (yyaccept <= 76) {
- if (yyaccept <= 75) {
- goto yy777;
+ if (yyaccept <= 84) {
+ if (yyaccept <= 83) {
+ goto yy830;
                             } else {
- goto yy781;
+ goto yy835;
                             }
                         } else {
- goto yy785;
+ goto yy838;
                         }
                     }
                 }
             }
         } else {
- if (yyaccept <= 90) {
- if (yyaccept <= 84) {
- if (yyaccept <= 81) {
- if (yyaccept <= 79) {
- if (yyaccept <= 78) {
- goto yy794;
+ if (yyaccept <= 99) {
+ if (yyaccept <= 92) {
+ if (yyaccept <= 89) {
+ if (yyaccept <= 87) {
+ if (yyaccept <= 86) {
+ goto yy841;
                             } else {
- goto yy799;
+ goto yy844;
                             }
                         } else {
- if (yyaccept <= 80) {
- goto yy804;
+ if (yyaccept <= 88) {
+ goto yy856;
                             } else {
- goto yy807;
+ goto yy861;
                             }
                         }
                     } else {
- if (yyaccept <= 83) {
- if (yyaccept <= 82) {
- goto yy810;
+ if (yyaccept <= 91) {
+ if (yyaccept <= 90) {
+ goto yy868;
                             } else {
- goto yy813;
+ goto yy873;
                             }
                         } else {
- goto yy825;
+ goto yy879;
                         }
                     }
                 } else {
- if (yyaccept <= 87) {
- if (yyaccept <= 86) {
- if (yyaccept <= 85) {
- goto yy830;
+ if (yyaccept <= 96) {
+ if (yyaccept <= 94) {
+ if (yyaccept <= 93) {
+ goto yy888;
                             } else {
- goto yy836;
+ goto yy895;
                             }
                         } else {
- goto yy841;
+ if (yyaccept <= 95) {
+ goto yy897;
+ } else {
+ goto yy903;
+ }
                         }
                     } else {
- if (yyaccept <= 89) {
- if (yyaccept <= 88) {
- goto yy850;
+ if (yyaccept <= 98) {
+ if (yyaccept <= 97) {
+ goto yy908;
                             } else {
- goto yy857;
+ goto yy912;
                             }
                         } else {
- goto yy859;
+ goto yy915;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 97) {
- if (yyaccept <= 94) {
- if (yyaccept <= 92) {
- if (yyaccept <= 91) {
- goto yy865;
+ if (yyaccept <= 106) {
+ if (yyaccept <= 103) {
+ if (yyaccept <= 101) {
+ if (yyaccept <= 100) {
+ goto yy921;
                             } else {
- goto yy869;
+ goto yy925;
                             }
                         } else {
- if (yyaccept <= 93) {
- goto yy872;
+ if (yyaccept <= 102) {
+ goto yy930;
                             } else {
- goto yy877;
+ goto yy932;
                             }
                         }
                     } else {
- if (yyaccept <= 96) {
- if (yyaccept <= 95) {
- goto yy879;
+ if (yyaccept <= 105) {
+ if (yyaccept <= 104) {
+ goto yy939;
                             } else {
- goto yy886;
+ goto yy942;
                             }
                         } else {
- goto yy889;
+ goto yy947;
                         }
                     }
                 } else {
- if (yyaccept <= 100) {
- if (yyaccept <= 99) {
- if (yyaccept <= 98) {
- goto yy894;
+ if (yyaccept <= 110) {
+ if (yyaccept <= 108) {
+ if (yyaccept <= 107) {
+ goto yy950;
                             } else {
- goto yy897;
+ goto yy957;
                             }
                         } else {
- goto yy903;
+ if (yyaccept <= 109) {
+ goto yy959;
+ } else {
+ goto yy961;
+ }
                         }
                     } else {
- if (yyaccept <= 102) {
- if (yyaccept <= 101) {
- goto yy905;
+ if (yyaccept <= 112) {
+ if (yyaccept <= 111) {
+ goto yy965;
                             } else {
- goto yy907;
+ goto yy972;
                             }
                         } else {
- goto yy911;
+ goto yy974;
                         }
                     }
                 }
@@ -1245,9 +1289,9 @@
 yy101:
     ++YYCURSOR;
 yy102:
-#line 249 "cpp.re"
+#line 259 "cpp.re"
     { BOOST_WAVE_RET(T_STRINGLIT); }
-#line 1251 "cpp_re.inc"
+#line 1295 "cpp_re.inc"
 yy103:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -2092,9 +2136,9 @@
 yy151:
     ++YYCURSOR;
 yy152:
-#line 246 "cpp.re"
+#line 256 "cpp.re"
     { BOOST_WAVE_RET(T_CHARLIT); }
-#line 2098 "cpp_re.inc"
+#line 2142 "cpp_re.inc"
 yy153:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3022,61 +3066,61 @@
     goto yy142;
 yy215:
     ++YYCURSOR;
-#line 217 "cpp.re"
+#line 227 "cpp.re"
     { BOOST_WAVE_RET(T_GREATEREQUAL); }
-#line 3028 "cpp_re.inc"
+#line 3072 "cpp_re.inc"
 yy217:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy219;
-#line 210 "cpp.re"
+#line 220 "cpp.re"
     { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-#line 3034 "cpp_re.inc"
+#line 3078 "cpp_re.inc"
 yy219:
     ++YYCURSOR;
-#line 211 "cpp.re"
+#line 221 "cpp.re"
     { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-#line 3039 "cpp_re.inc"
+#line 3083 "cpp_re.inc"
 yy221:
     ++YYCURSOR;
-#line 213 "cpp.re"
+#line 223 "cpp.re"
     { BOOST_WAVE_RET(T_EQUAL); }
-#line 3044 "cpp_re.inc"
+#line 3088 "cpp_re.inc"
 yy223:
     ++YYCURSOR;
-#line 214 "cpp.re"
+#line 224 "cpp.re"
     { BOOST_WAVE_RET(T_NOTEQUAL); }
-#line 3049 "cpp_re.inc"
+#line 3093 "cpp_re.inc"
 yy225:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy230;
     goto yy98;
 yy226:
     ++YYCURSOR;
-#line 220 "cpp.re"
+#line 230 "cpp.re"
     { BOOST_WAVE_RET(T_OROR); }
-#line 3058 "cpp_re.inc"
+#line 3102 "cpp_re.inc"
 yy228:
     ++YYCURSOR;
-#line 206 "cpp.re"
+#line 216 "cpp.re"
     { BOOST_WAVE_RET(T_ORASSIGN); }
-#line 3063 "cpp_re.inc"
+#line 3107 "cpp_re.inc"
 yy230:
     yych = *++YYCURSOR;
     if (yych != '!') goto yy98;
     ++YYCURSOR;
-#line 222 "cpp.re"
+#line 232 "cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3070 "cpp_re.inc"
+#line 3114 "cpp_re.inc"
 yy233:
     ++YYCURSOR;
-#line 218 "cpp.re"
+#line 228 "cpp.re"
     { BOOST_WAVE_RET(T_ANDAND); }
-#line 3075 "cpp_re.inc"
+#line 3119 "cpp_re.inc"
 yy235:
     ++YYCURSOR;
-#line 204 "cpp.re"
+#line 214 "cpp.re"
     { BOOST_WAVE_RET(T_ANDASSIGN); }
-#line 3080 "cpp_re.inc"
+#line 3124 "cpp_re.inc"
 yy237:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3101,9 +3145,9 @@
         }
     }
 yy239:
-#line 182 "cpp.re"
+#line 192 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-#line 3107 "cpp_re.inc"
+#line 3151 "cpp_re.inc"
 yy240:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3119,38 +3163,38 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy243:
-#line 202 "cpp.re"
+#line 212 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-#line 3125 "cpp_re.inc"
+#line 3169 "cpp_re.inc"
 yy244:
     ++YYCURSOR;
-#line 201 "cpp.re"
+#line 211 "cpp.re"
     { BOOST_WAVE_RET(T_XORASSIGN); }
-#line 3130 "cpp_re.inc"
+#line 3174 "cpp_re.inc"
 yy246:
     ++YYCURSOR;
-#line 198 "cpp.re"
+#line 208 "cpp.re"
     { BOOST_WAVE_RET(T_STARASSIGN); }
-#line 3135 "cpp_re.inc"
+#line 3179 "cpp_re.inc"
 yy248:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '*') goto yy254;
-#line 238 "cpp.re"
+#line 248 "cpp.re"
     { BOOST_WAVE_RET(T_ARROW); }
-#line 3141 "cpp_re.inc"
+#line 3185 "cpp_re.inc"
 yy250:
     ++YYCURSOR;
-#line 226 "cpp.re"
+#line 236 "cpp.re"
     { BOOST_WAVE_RET(T_MINUSMINUS); }
-#line 3146 "cpp_re.inc"
+#line 3190 "cpp_re.inc"
 yy252:
     ++YYCURSOR;
-#line 197 "cpp.re"
+#line 207 "cpp.re"
     { BOOST_WAVE_RET(T_MINUSASSIGN); }
-#line 3151 "cpp_re.inc"
+#line 3195 "cpp_re.inc"
 yy254:
     ++YYCURSOR;
-#line 229 "cpp.re"
+#line 239 "cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -3160,17 +3204,17 @@
                 BOOST_WAVE_RET(T_ARROWSTAR);
             }
         }
-#line 3164 "cpp_re.inc"
+#line 3208 "cpp_re.inc"
 yy256:
     ++YYCURSOR;
-#line 225 "cpp.re"
+#line 235 "cpp.re"
     { BOOST_WAVE_RET(T_PLUSPLUS); }
-#line 3169 "cpp_re.inc"
+#line 3213 "cpp_re.inc"
 yy258:
     ++YYCURSOR;
-#line 196 "cpp.re"
+#line 206 "cpp.re"
     { BOOST_WAVE_RET(T_PLUSASSIGN); }
-#line 3174 "cpp_re.inc"
+#line 3218 "cpp_re.inc"
 yy260:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
@@ -3266,16 +3310,16 @@
     goto yy98;
 yy272:
     ++YYCURSOR;
-#line 143 "cpp.re"
+#line 153 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND); }
-#line 3272 "cpp_re.inc"
+#line 3316 "cpp_re.inc"
 yy274:
     yych = *++YYCURSOR;
     if (yych != '=') goto yy98;
     ++YYCURSOR;
-#line 144 "cpp.re"
+#line 154 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3279 "cpp_re.inc"
+#line 3323 "cpp_re.inc"
 yy277:
     yych = *++YYCURSOR;
     if (yych == 'c') goto yy289;
@@ -3286,9 +3330,9 @@
     if (yych == 'd') goto yy281;
     if (yych == 'n') goto yy280;
 yy279:
-#line 261 "cpp.re"
+#line 271 "cpp.re"
     { BOOST_WAVE_RET(T_PP_IF); }
-#line 3292 "cpp_re.inc"
+#line 3336 "cpp_re.inc"
 yy280:
     yych = *++YYCURSOR;
     if (yych == 'd') goto yy285;
@@ -3299,18 +3343,18 @@
     yych = *++YYCURSOR;
     if (yych != 'f') goto yy98;
     ++YYCURSOR;
-#line 262 "cpp.re"
+#line 272 "cpp.re"
     { BOOST_WAVE_RET(T_PP_IFDEF); }
-#line 3305 "cpp_re.inc"
+#line 3349 "cpp_re.inc"
 yy285:
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     yych = *++YYCURSOR;
     if (yych != 'f') goto yy98;
     ++YYCURSOR;
-#line 263 "cpp.re"
+#line 273 "cpp.re"
     { BOOST_WAVE_RET(T_PP_IFNDEF); }
-#line 3314 "cpp_re.inc"
+#line 3358 "cpp_re.inc"
 yy289:
     yych = *++YYCURSOR;
     if (yych != 'l') goto yy98;
@@ -3325,9 +3369,9 @@
     if (yych == '_') goto yy295;
     goto yy297;
 yy294:
-#line 259 "cpp.re"
+#line 269 "cpp.re"
     { BOOST_WAVE_RET(T_PP_INCLUDE); }
-#line 3331 "cpp_re.inc"
+#line 3375 "cpp_re.inc"
 yy295:
     yych = *++YYCURSOR;
     if (yych == 'n') goto yy316;
@@ -3381,9 +3425,9 @@
     }
     if (yych <= '!') goto yy98;
     ++YYCURSOR;
-#line 256 "cpp.re"
+#line 266 "cpp.re"
     { BOOST_WAVE_RET(T_PP_QHEADER); }
-#line 3387 "cpp_re.inc"
+#line 3431 "cpp_re.inc"
 yy305:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3394,9 +3438,9 @@
     }
     if (yych <= '=') goto yy98;
     ++YYCURSOR;
-#line 253 "cpp.re"
+#line 263 "cpp.re"
     { BOOST_WAVE_RET(T_PP_HHEADER); }
-#line 3400 "cpp_re.inc"
+#line 3444 "cpp_re.inc"
 yy309:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3458,9 +3502,9 @@
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     ++YYCURSOR;
-#line 267 "cpp.re"
+#line 277 "cpp.re"
     { BOOST_WAVE_RET(T_PP_DEFINE); }
-#line 3464 "cpp_re.inc"
+#line 3508 "cpp_re.inc"
 yy325:
     yych = *++YYCURSOR;
     if (yych != 'd') goto yy98;
@@ -3469,18 +3513,18 @@
     yych = *++YYCURSOR;
     if (yych != 'f') goto yy98;
     ++YYCURSOR;
-#line 268 "cpp.re"
+#line 278 "cpp.re"
     { BOOST_WAVE_RET(T_PP_UNDEF); }
-#line 3475 "cpp_re.inc"
+#line 3519 "cpp_re.inc"
 yy330:
     yych = *++YYCURSOR;
     if (yych != 'n') goto yy98;
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     ++YYCURSOR;
-#line 269 "cpp.re"
+#line 279 "cpp.re"
     { BOOST_WAVE_RET(T_PP_LINE); }
-#line 3484 "cpp_re.inc"
+#line 3528 "cpp_re.inc"
 yy334:
     yych = *++YYCURSOR;
     if (yych != 'a') goto yy98;
@@ -3491,9 +3535,9 @@
     yych = *++YYCURSOR;
     if (yych != 'a') goto yy98;
     ++YYCURSOR;
-#line 271 "cpp.re"
+#line 281 "cpp.re"
     { BOOST_WAVE_RET(T_PP_PRAGMA); }
-#line 3497 "cpp_re.inc"
+#line 3541 "cpp_re.inc"
 yy340:
     yych = *++YYCURSOR;
     if (yych != 'r') goto yy98;
@@ -3506,9 +3550,9 @@
     yych = *++YYCURSOR;
     if (yych != 'g') goto yy98;
     ++YYCURSOR;
-#line 273 "cpp.re"
+#line 283 "cpp.re"
     { BOOST_WAVE_RET(T_PP_WARNING); }
-#line 3512 "cpp_re.inc"
+#line 3556 "cpp_re.inc"
 yy347:
     yych = *++YYCURSOR;
     if (yych != 'g') goto yy98;
@@ -3519,9 +3563,9 @@
     yych = *++YYCURSOR;
     if (yych != 'n') goto yy98;
     ++YYCURSOR;
-#line 275 "cpp.re"
+#line 285 "cpp.re"
     { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-#line 3525 "cpp_re.inc"
+#line 3569 "cpp_re.inc"
 yy353:
     yych = *++YYCURSOR;
     if (yych == 'i') goto yy371;
@@ -3539,9 +3583,9 @@
     yych = *++YYCURSOR;
     if (yych != 'r') goto yy98;
     ++YYCURSOR;
-#line 270 "cpp.re"
+#line 280 "cpp.re"
     { BOOST_WAVE_RET(T_PP_ERROR); }
-#line 3545 "cpp_re.inc"
+#line 3589 "cpp_re.inc"
 yy360:
     yych = *++YYCURSOR;
     if (yych == 'i') goto yy361;
@@ -3563,14 +3607,14 @@
     yych = *++YYCURSOR;
     if (yych != 'n') goto yy98;
     ++YYCURSOR;
-#line 276 "cpp.re"
+#line 286 "cpp.re"
     { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-#line 3569 "cpp_re.inc"
+#line 3613 "cpp_re.inc"
 yy369:
     ++YYCURSOR;
-#line 266 "cpp.re"
+#line 276 "cpp.re"
     { BOOST_WAVE_RET(T_PP_ENDIF); }
-#line 3574 "cpp_re.inc"
+#line 3618 "cpp_re.inc"
 yy371:
     yych = *++YYCURSOR;
     if (yych == 'f') goto yy375;
@@ -3579,14 +3623,14 @@
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     ++YYCURSOR;
-#line 264 "cpp.re"
+#line 274 "cpp.re"
     { BOOST_WAVE_RET(T_PP_ELSE); }
-#line 3585 "cpp_re.inc"
+#line 3629 "cpp_re.inc"
 yy375:
     ++YYCURSOR;
-#line 265 "cpp.re"
+#line 275 "cpp.re"
     { BOOST_WAVE_RET(T_PP_ELIF); }
-#line 3590 "cpp_re.inc"
+#line 3634 "cpp_re.inc"
 yy377:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3642,7 +3686,7 @@
     }
 yy384:
     ++YYCURSOR;
-#line 155 "cpp.re"
+#line 165 "cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -3652,12 +3696,12 @@
                 BOOST_WAVE_RET(T_COLON_COLON);
             }
         }
-#line 3656 "cpp_re.inc"
+#line 3700 "cpp_re.inc"
 yy386:
     ++YYCURSOR;
-#line 139 "cpp.re"
+#line 149 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-#line 3661 "cpp_re.inc"
+#line 3705 "cpp_re.inc"
 yy388:
     yyaccept = 12;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3695,52 +3739,52 @@
         }
     }
 yy389:
-#line 141 "cpp.re"
+#line 151 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_ALT); }
-#line 3701 "cpp_re.inc"
+#line 3745 "cpp_re.inc"
 yy390:
     ++YYCURSOR;
-#line 200 "cpp.re"
+#line 210 "cpp.re"
     { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-#line 3706 "cpp_re.inc"
+#line 3750 "cpp_re.inc"
 yy392:
     ++YYCURSOR;
-#line 133 "cpp.re"
+#line 143 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-#line 3711 "cpp_re.inc"
+#line 3755 "cpp_re.inc"
 yy394:
     yych = *++YYCURSOR;
     if (yych != ':') goto yy98;
     ++YYCURSOR;
-#line 147 "cpp.re"
+#line 157 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-#line 3718 "cpp_re.inc"
+#line 3762 "cpp_re.inc"
 yy397:
     ++YYCURSOR;
-#line 216 "cpp.re"
+#line 226 "cpp.re"
     { BOOST_WAVE_RET(T_LESSEQUAL); }
-#line 3723 "cpp_re.inc"
+#line 3767 "cpp_re.inc"
 yy399:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy405;
-#line 209 "cpp.re"
+#line 219 "cpp.re"
     { BOOST_WAVE_RET(T_SHIFTLEFT); }
-#line 3729 "cpp_re.inc"
+#line 3773 "cpp_re.inc"
 yy401:
     ++YYCURSOR;
-#line 136 "cpp.re"
+#line 146 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-#line 3734 "cpp_re.inc"
+#line 3778 "cpp_re.inc"
 yy403:
     ++YYCURSOR;
-#line 130 "cpp.re"
+#line 140 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-#line 3739 "cpp_re.inc"
+#line 3783 "cpp_re.inc"
 yy405:
     ++YYCURSOR;
-#line 212 "cpp.re"
+#line 222 "cpp.re"
     { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-#line 3744 "cpp_re.inc"
+#line 3788 "cpp_re.inc"
 yy407:
     yych = *++YYCURSOR;
     switch (yych) {
@@ -3757,24 +3801,24 @@
     }
 yy408:
     ++YYCURSOR;
-#line 129 "cpp.re"
+#line 139 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-#line 3763 "cpp_re.inc"
+#line 3807 "cpp_re.inc"
 yy410:
     ++YYCURSOR;
-#line 132 "cpp.re"
+#line 142 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-#line 3768 "cpp_re.inc"
+#line 3812 "cpp_re.inc"
 yy412:
     ++YYCURSOR;
-#line 135 "cpp.re"
+#line 145 "cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-#line 3773 "cpp_re.inc"
+#line 3817 "cpp_re.inc"
 yy414:
     ++YYCURSOR;
-#line 138 "cpp.re"
+#line 148 "cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-#line 3778 "cpp_re.inc"
+#line 3822 "cpp_re.inc"
 yy416:
     yyaccept = 13;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3813,15 +3857,15 @@
         }
     }
 yy417:
-#line 142 "cpp.re"
+#line 152 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-#line 3819 "cpp_re.inc"
+#line 3863 "cpp_re.inc"
 yy418:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy434;
-#line 181 "cpp.re"
+#line 191 "cpp.re"
     { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-#line 3825 "cpp_re.inc"
+#line 3869 "cpp_re.inc"
 yy420:
     yyaccept = 14;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3832,65 +3876,65 @@
         if (yych == '|') goto yy427;
     }
 yy421:
-#line 187 "cpp.re"
+#line 197 "cpp.re"
     { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-#line 3838 "cpp_re.inc"
+#line 3882 "cpp_re.inc"
 yy422:
     ++YYCURSOR;
-#line 189 "cpp.re"
+#line 199 "cpp.re"
     { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-#line 3843 "cpp_re.inc"
+#line 3887 "cpp_re.inc"
 yy424:
     yyaccept = 15;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych == 'U') goto yy186;
     if (yych == 'u') goto yy185;
 yy425:
-#line 239 "cpp.re"
+#line 249 "cpp.re"
     { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-#line 3852 "cpp_re.inc"
+#line 3896 "cpp_re.inc"
 yy426:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy431;
     goto yy98;
 yy427:
     ++YYCURSOR;
-#line 221 "cpp.re"
+#line 231 "cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3861 "cpp_re.inc"
+#line 3905 "cpp_re.inc"
 yy429:
     ++YYCURSOR;
-#line 208 "cpp.re"
+#line 218 "cpp.re"
     { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-#line 3866 "cpp_re.inc"
+#line 3910 "cpp_re.inc"
 yy431:
     yych = *++YYCURSOR;
     if (yych != '!') goto yy98;
     ++YYCURSOR;
-#line 224 "cpp.re"
+#line 234 "cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3873 "cpp_re.inc"
+#line 3917 "cpp_re.inc"
 yy434:
     ++YYCURSOR;
-#line 203 "cpp.re"
+#line 213 "cpp.re"
     { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-#line 3878 "cpp_re.inc"
+#line 3922 "cpp_re.inc"
 yy436:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy439;
     goto yy98;
 yy437:
     ++YYCURSOR;
-#line 145 "cpp.re"
+#line 155 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3887 "cpp_re.inc"
+#line 3931 "cpp_re.inc"
 yy439:
     yych = *++YYCURSOR;
     if (yych != '=') goto yy98;
     ++YYCURSOR;
-#line 146 "cpp.re"
+#line 156 "cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3894 "cpp_re.inc"
+#line 3938 "cpp_re.inc"
 yy442:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3964,9 +4008,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy456:
-#line 120 "cpp.re"
+#line 130 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-#line 3970 "cpp_re.inc"
+#line 4014 "cpp_re.inc"
 yy457:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3989,9 +4033,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy462:
-#line 125 "cpp.re"
+#line 135 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-#line 3995 "cpp_re.inc"
+#line 4039 "cpp_re.inc"
 yy463:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4019,9 +4063,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy470:
-#line 119 "cpp.re"
+#line 129 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-#line 4025 "cpp_re.inc"
+#line 4069 "cpp_re.inc"
 yy471:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4049,9 +4093,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy478:
-#line 117 "cpp.re"
+#line 127 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-#line 4055 "cpp_re.inc"
+#line 4099 "cpp_re.inc"
 yy479:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4070,9 +4114,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy483:
-#line 118 "cpp.re"
+#line 128 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-#line 4076 "cpp_re.inc"
+#line 4120 "cpp_re.inc"
 yy484:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4091,9 +4135,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy488:
-#line 116 "cpp.re"
+#line 126 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-#line 4097 "cpp_re.inc"
+#line 4141 "cpp_re.inc"
 yy489:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4106,9 +4150,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy491:
-#line 126 "cpp.re"
+#line 136 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-#line 4112 "cpp_re.inc"
+#line 4156 "cpp_re.inc"
 yy492:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4151,9 +4195,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy501:
-#line 124 "cpp.re"
+#line 134 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-#line 4157 "cpp_re.inc"
+#line 4201 "cpp_re.inc"
 yy502:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4175,9 +4219,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy507:
-#line 122 "cpp.re"
+#line 132 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-#line 4181 "cpp_re.inc"
+#line 4225 "cpp_re.inc"
 yy508:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4190,9 +4234,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy510:
-#line 121 "cpp.re"
+#line 131 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-#line 4196 "cpp_re.inc"
+#line 4240 "cpp_re.inc"
 yy511:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4217,9 +4261,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy517:
-#line 123 "cpp.re"
+#line 133 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-#line 4223 "cpp_re.inc"
+#line 4267 "cpp_re.inc"
 yy518:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4258,9 +4302,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy524:
-#line 112 "cpp.re"
+#line 122 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-#line 4264 "cpp_re.inc"
+#line 4308 "cpp_re.inc"
 yy525:
     yyaccept = 28;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4270,9 +4314,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy526:
-#line 115 "cpp.re"
+#line 125 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-#line 4276 "cpp_re.inc"
+#line 4320 "cpp_re.inc"
 yy527:
     yyaccept = 29;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4282,9 +4326,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy528:
-#line 114 "cpp.re"
+#line 124 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-#line 4288 "cpp_re.inc"
+#line 4332 "cpp_re.inc"
 yy529:
     yyaccept = 30;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4294,9 +4338,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy530:
-#line 113 "cpp.re"
+#line 123 "cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-#line 4300 "cpp_re.inc"
+#line 4344 "cpp_re.inc"
 yy531:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4320,9 +4364,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy536:
-#line 110 "cpp.re"
+#line 120 "cpp.re"
     { BOOST_WAVE_RET(T_WHILE); }
-#line 4326 "cpp_re.inc"
+#line 4370 "cpp_re.inc"
 yy537:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4344,9 +4388,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy542:
-#line 109 "cpp.re"
+#line 119 "cpp.re"
     { BOOST_WAVE_RET(T_WCHART); }
-#line 4350 "cpp_re.inc"
+#line 4394 "cpp_re.inc"
 yy543:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4387,9 +4431,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy552:
-#line 108 "cpp.re"
+#line 118 "cpp.re"
     { BOOST_WAVE_RET(T_VOLATILE); }
-#line 4393 "cpp_re.inc"
+#line 4437 "cpp_re.inc"
 yy553:
     yyaccept = 34;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4399,9 +4443,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy554:
-#line 107 "cpp.re"
+#line 117 "cpp.re"
     { BOOST_WAVE_RET(T_VOID); }
-#line 4405 "cpp_re.inc"
+#line 4449 "cpp_re.inc"
 yy555:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4423,9 +4467,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy560:
-#line 106 "cpp.re"
+#line 116 "cpp.re"
     { BOOST_WAVE_RET(T_VIRTUAL); }
-#line 4429 "cpp_re.inc"
+#line 4473 "cpp_re.inc"
 yy561:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4450,9 +4494,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy566:
-#line 105 "cpp.re"
+#line 115 "cpp.re"
     { BOOST_WAVE_RET(T_USING); }
-#line 4456 "cpp_re.inc"
+#line 4500 "cpp_re.inc"
 yy567:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4482,9 +4526,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy574:
-#line 104 "cpp.re"
+#line 114 "cpp.re"
     { BOOST_WAVE_RET(T_UNSIGNED); }
-#line 4488 "cpp_re.inc"
+#line 4532 "cpp_re.inc"
 yy575:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4497,13 +4541,13 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy577:
-#line 103 "cpp.re"
+#line 113 "cpp.re"
     { BOOST_WAVE_RET(T_UNION); }
-#line 4503 "cpp_re.inc"
+#line 4547 "cpp_re.inc"
 yy578:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy608;
+ if (yych == 'm') goto yy618;
     goto yy195;
 yy579:
     yyaccept = 1;
@@ -4560,9 +4604,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy590:
-#line 102 "cpp.re"
+#line 112 "cpp.re"
     { BOOST_WAVE_RET(T_TYPENAME); }
-#line 4566 "cpp_re.inc"
+#line 4610 "cpp_re.inc"
 yy591:
     yyaccept = 40;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4572,9 +4616,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy592:
-#line 101 "cpp.re"
+#line 111 "cpp.re"
     { BOOST_WAVE_RET(T_TYPEID); }
-#line 4578 "cpp_re.inc"
+#line 4622 "cpp_re.inc"
 yy593:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4587,9 +4631,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy595:
-#line 100 "cpp.re"
+#line 110 "cpp.re"
     { BOOST_WAVE_RET(T_TYPEDEF); }
-#line 4593 "cpp_re.inc"
+#line 4637 "cpp_re.inc"
 yy596:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4604,9 +4648,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy598:
-#line 99 "cpp.re"
+#line 109 "cpp.re"
     { BOOST_WAVE_RET(T_TRY); }
-#line 4610 "cpp_re.inc"
+#line 4654 "cpp_re.inc"
 yy599:
     yyaccept = 43;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4616,18 +4660,26 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy600:
-#line 98 "cpp.re"
+#line 108 "cpp.re"
     { BOOST_WAVE_RET(T_TRUE); }
-#line 4622 "cpp_re.inc"
+#line 4666 "cpp_re.inc"
 yy601:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 's') goto yy606;
+ if (yych == 's') goto yy616;
     goto yy195;
 yy602:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'o') goto yy195;
+ if (yych == 'e') goto yy603;
+ if (yych == 'o') goto yy604;
+ goto yy195;
+yy603:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'a') goto yy607;
+ goto yy195;
+yy604:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'w') goto yy195;
@@ -4638,11 +4690,32 @@
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy605:
-#line 97 "cpp.re"
- { BOOST_WAVE_RET(T_THROW); }
-#line 4645 "cpp_re.inc"
 yy606:
+#line 107 "cpp.re"
+ { BOOST_WAVE_RET(T_THROW); }
+#line 4697 "cpp_re.inc"
+yy607:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'd') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != '_') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'o') 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 = 45;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
@@ -4650,11 +4723,23 @@
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy607:
-#line 96 "cpp.re"
+yy615:
+#line 106 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
+#line 4730 "cpp_re.inc"
+yy616:
+ yyaccept = 46;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy617:
+#line 105 "cpp.re"
     { BOOST_WAVE_RET(T_THIS); }
-#line 4657 "cpp_re.inc"
-yy608:
+#line 4742 "cpp_re.inc"
+yy618:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'p') goto yy195;
@@ -4670,35 +4755,35 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 46;
+ yyaccept = 47;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy614:
-#line 95 "cpp.re"
+yy624:
+#line 104 "cpp.re"
     { BOOST_WAVE_RET(T_TEMPLATE); }
-#line 4684 "cpp_re.inc"
-yy615:
+#line 4769 "cpp_re.inc"
+yy625:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy650;
+ if (yych == 'o') goto yy667;
     goto yy195;
-yy616:
+yy626:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'g') goto yy640;
- if (yych == 'z') goto yy641;
+ if (yych == 'g') goto yy657;
+ if (yych == 'z') goto yy658;
     goto yy195;
-yy617:
+yy627:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy624;
- if (yych == 'r') goto yy625;
+ if (yych == 'a') goto yy634;
+ if (yych == 'r') goto yy635;
     goto yy195;
-yy618:
+yy628:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -4711,23 +4796,23 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'h') goto yy195;
- yyaccept = 47;
+ yyaccept = 48;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy623:
-#line 94 "cpp.re"
+yy633:
+#line 103 "cpp.re"
     { BOOST_WAVE_RET(T_SWITCH); }
-#line 4725 "cpp_re.inc"
-yy624:
+#line 4810 "cpp_re.inc"
+yy634:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy630;
+ if (yych == 't') goto yy640;
     goto yy195;
-yy625:
+yy635:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -4737,25 +4822,25 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 48;
+ yyaccept = 49;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy629:
-#line 93 "cpp.re"
+yy639:
+#line 102 "cpp.re"
     { BOOST_WAVE_RET(T_STRUCT); }
-#line 4751 "cpp_re.inc"
-yy630:
+#line 4836 "cpp_re.inc"
+yy640:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
- yyaccept = 49;
+ yyaccept = 50;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '@') {
         if (yych <= '/') {
@@ -4769,19 +4854,27 @@
             if (yych <= 'Z') goto yy194;
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy634;
- if (yych <= '`') goto yy633;
+ if (yych <= '_') goto yy644;
+ if (yych <= '`') goto yy643;
             if (yych <= 'z') goto yy194;
         }
     }
-yy633:
-#line 91 "cpp.re"
+yy643:
+#line 99 "cpp.re"
     { BOOST_WAVE_RET(T_STATIC); }
-#line 4781 "cpp_re.inc"
-yy634:
+#line 4866 "cpp_re.inc"
+yy644:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'c') goto yy195;
+ if (yych == 'a') goto yy645;
+ if (yych == 'c') goto yy646;
+ goto yy195;
+yy645:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 's') goto yy651;
+ goto yy195;
+yy646:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
@@ -4791,23 +4884,47 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 50;
+ yyaccept = 51;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy639:
-#line 92 "cpp.re"
+yy650:
+#line 100 "cpp.re"
     { BOOST_WAVE_RET(T_STATICCAST); }
-#line 4805 "cpp_re.inc"
-yy640:
+#line 4898 "cpp_re.inc"
+yy651:
+ 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 != 'r') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 't') goto yy195;
+ yyaccept = 52;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy656:
+#line 101 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
+#line 4922 "cpp_re.inc"
+yy657:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy646;
+ if (yych == 'n') goto yy663;
     goto yy195;
-yy641:
+yy658:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -4817,73 +4934,73 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'f') goto yy195;
- yyaccept = 51;
+ yyaccept = 53;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy645:
-#line 90 "cpp.re"
+yy662:
+#line 98 "cpp.re"
     { BOOST_WAVE_RET(T_SIZEOF); }
-#line 4831 "cpp_re.inc"
-yy646:
+#line 4948 "cpp_re.inc"
+yy663:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 52;
+ yyaccept = 54;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy649:
-#line 89 "cpp.re"
+yy666:
+#line 97 "cpp.re"
     { BOOST_WAVE_RET(T_SIGNED); }
-#line 4849 "cpp_re.inc"
-yy650:
+#line 4966 "cpp_re.inc"
+yy667:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 53;
+ yyaccept = 55;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy653:
-#line 88 "cpp.re"
+yy670:
+#line 96 "cpp.re"
     { BOOST_WAVE_RET(T_SHORT); }
-#line 4867 "cpp_re.inc"
-yy654:
+#line 4984 "cpp_re.inc"
+yy671:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'h') {
         if (yych != 'g') goto yy195;
     } else {
- if (yych <= 'i') goto yy656;
- if (yych == 't') goto yy657;
+ if (yych <= 'i') goto yy673;
+ if (yych == 't') goto yy674;
         goto yy195;
     }
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy676;
+ if (yych == 'i') goto yy693;
     goto yy195;
-yy656:
+yy673:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy662;
+ if (yych == 'n') goto yy679;
     goto yy195;
-yy657:
+yy674:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -4893,18 +5010,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
- yyaccept = 54;
+ yyaccept = 56;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy661:
-#line 87 "cpp.re"
+yy678:
+#line 95 "cpp.re"
     { BOOST_WAVE_RET(T_RETURN); }
-#line 4907 "cpp_re.inc"
-yy662:
+#line 5024 "cpp_re.inc"
+yy679:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -4941,18 +5058,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 55;
+ yyaccept = 57;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy675:
-#line 86 "cpp.re"
+yy692:
+#line 94 "cpp.re"
     { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-#line 4955 "cpp_re.inc"
-yy676:
+#line 5072 "cpp_re.inc"
+yy693:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 's') goto yy195;
@@ -4965,24 +5082,24 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 56;
+ yyaccept = 58;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy681:
-#line 85 "cpp.re"
+yy698:
+#line 93 "cpp.re"
     { BOOST_WAVE_RET(T_REGISTER); }
-#line 4979 "cpp_re.inc"
-yy682:
+#line 5096 "cpp_re.inc"
+yy699:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy689;
- if (yych == 'o') goto yy690;
+ if (yych == 'i') goto yy706;
+ if (yych == 'o') goto yy707;
     goto yy195;
-yy683:
+yy700:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'b') goto yy195;
@@ -4995,23 +5112,23 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
- yyaccept = 57;
+ yyaccept = 59;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy688:
-#line 84 "cpp.re"
+yy705:
+#line 92 "cpp.re"
     { BOOST_WAVE_RET(T_PUBLIC); }
-#line 5009 "cpp_re.inc"
-yy689:
+#line 5126 "cpp_re.inc"
+yy706:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'v') goto yy698;
+ if (yych == 'v') goto yy715;
     goto yy195;
-yy690:
+yy707:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -5030,18 +5147,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 58;
+ yyaccept = 60;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy697:
-#line 83 "cpp.re"
+yy714:
+#line 91 "cpp.re"
     { BOOST_WAVE_RET(T_PROTECTED); }
-#line 5044 "cpp_re.inc"
-yy698:
+#line 5161 "cpp_re.inc"
+yy715:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
@@ -5051,24 +5168,24 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 59;
+ yyaccept = 61;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy702:
-#line 82 "cpp.re"
+yy719:
+#line 90 "cpp.re"
     { BOOST_WAVE_RET(T_PRIVATE); }
-#line 5065 "cpp_re.inc"
-yy703:
+#line 5182 "cpp_re.inc"
+yy720:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy710;
+ if (yych == 'e') goto yy727;
     goto yy195;
-yy704:
- yyaccept = 60;
+yy721:
+ yyaccept = 62;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '@') {
         if (yych <= '/') {
@@ -5082,34 +5199,34 @@
             if (yych <= 'Z') goto yy194;
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy706;
- if (yych <= '`') goto yy705;
+ if (yych <= '_') goto yy723;
+ if (yych <= '`') goto yy722;
             if (yych <= 'z') goto yy194;
         }
     }
-yy705:
-#line 223 "cpp.re"
+yy722:
+#line 233 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-#line 5094 "cpp_re.inc"
-yy706:
+#line 5211 "cpp_re.inc"
+yy723:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 61;
+ yyaccept = 63;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy709:
-#line 207 "cpp.re"
+yy726:
+#line 217 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-#line 5112 "cpp_re.inc"
-yy710:
+#line 5229 "cpp_re.inc"
+yy727:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
@@ -5125,32 +5242,67 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 62;
+ yyaccept = 64;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy716:
-#line 81 "cpp.re"
+yy733:
+#line 89 "cpp.re"
     { BOOST_WAVE_RET(T_OPERATOR); }
-#line 5139 "cpp_re.inc"
-yy717:
+#line 5256 "cpp_re.inc"
+yy734:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy728;
+ if (yych == 'm') goto yy759;
     goto yy195;
-yy718:
+yy735:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'w') goto yy726;
+ if (yych == 'w') goto yy757;
     goto yy195;
-yy719:
+yy736:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy744;
+ if (yych == 't') goto yy745;
+ goto yy195;
+yy737:
+ 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 != 'p') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 63;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'r') goto yy195;
+ yyaccept = 65;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy743:
+#line 88 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
+#line 5299 "cpp_re.inc"
+yy744:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'x') goto yy751;
+ goto yy195;
+yy745:
+ yyaccept = 66;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '@') {
         if (yych <= '/') {
@@ -5164,46 +5316,70 @@
             if (yych <= 'Z') goto yy194;
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy722;
- if (yych <= '`') goto yy721;
+ if (yych <= '_') goto yy747;
+ if (yych <= '`') goto yy746;
             if (yych <= 'z') goto yy194;
         }
     }
-yy721:
-#line 192 "cpp.re"
+yy746:
+#line 202 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-#line 5176 "cpp_re.inc"
-yy722:
+#line 5328 "cpp_re.inc"
+yy747:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 64;
+ yyaccept = 67;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy725:
-#line 215 "cpp.re"
+yy750:
+#line 225 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-#line 5194 "cpp_re.inc"
-yy726:
- yyaccept = 65;
+#line 5346 "cpp_re.inc"
+yy751:
+ 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 = 68;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy727:
-#line 80 "cpp.re"
+yy756:
+#line 87 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
+#line 5370 "cpp_re.inc"
+yy757:
+ yyaccept = 69;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy758:
+#line 86 "cpp.re"
     { BOOST_WAVE_RET(T_NEW); }
-#line 5206 "cpp_re.inc"
-yy728:
+#line 5382 "cpp_re.inc"
+yy759:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5222,18 +5398,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 66;
+ yyaccept = 70;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy735:
-#line 79 "cpp.re"
+yy766:
+#line 85 "cpp.re"
     { BOOST_WAVE_RET(T_NAMESPACE); }
-#line 5236 "cpp_re.inc"
-yy736:
+#line 5412 "cpp_re.inc"
+yy767:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -5249,94 +5425,94 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 67;
+ yyaccept = 71;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy742:
-#line 78 "cpp.re"
+yy773:
+#line 84 "cpp.re"
     { BOOST_WAVE_RET(T_MUTABLE); }
-#line 5263 "cpp_re.inc"
-yy743:
+#line 5439 "cpp_re.inc"
+yy774:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'g') goto yy195;
- yyaccept = 68;
+ yyaccept = 72;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy746:
-#line 77 "cpp.re"
+yy777:
+#line 83 "cpp.re"
     { BOOST_WAVE_RET(T_LONG); }
-#line 5281 "cpp_re.inc"
-yy747:
- yyaccept = 69;
+#line 5457 "cpp_re.inc"
+yy778:
+ yyaccept = 73;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy748:
-#line 73 "cpp.re"
+yy779:
+#line 79 "cpp.re"
     { BOOST_WAVE_RET(T_IF); }
-#line 5293 "cpp_re.inc"
-yy749:
+#line 5469 "cpp_re.inc"
+yy780:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy758;
+ if (yych == 'p') goto yy789;
     goto yy195;
-yy750:
+yy781:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy751;
- if (yych == 't') goto yy752;
+ if (yych == 'l') goto yy782;
+ if (yych == 't') goto yy783;
     goto yy195;
-yy751:
+yy782:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy754;
+ if (yych == 'i') goto yy785;
     goto yy195;
-yy752:
- yyaccept = 70;
+yy783:
+ yyaccept = 74;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy753:
-#line 76 "cpp.re"
+yy784:
+#line 82 "cpp.re"
     { BOOST_WAVE_RET(T_INT); }
-#line 5321 "cpp_re.inc"
-yy754:
+#line 5497 "cpp_re.inc"
+yy785:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 71;
+ yyaccept = 75;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy757:
-#line 75 "cpp.re"
+yy788:
+#line 81 "cpp.re"
     { BOOST_WAVE_RET(T_INLINE); }
-#line 5339 "cpp_re.inc"
-yy758:
+#line 5515 "cpp_re.inc"
+yy789:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
@@ -5346,51 +5522,51 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 72;
+ yyaccept = 76;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy762:
-#line 74 "cpp.re"
+yy793:
+#line 80 "cpp.re"
     { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-#line 5360 "cpp_re.inc"
-yy763:
+#line 5536 "cpp_re.inc"
+yy794:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
- yyaccept = 73;
+ yyaccept = 77;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy766:
-#line 72 "cpp.re"
+yy797:
+#line 78 "cpp.re"
     { BOOST_WAVE_RET(T_GOTO); }
-#line 5378 "cpp_re.inc"
-yy767:
+#line 5554 "cpp_re.inc"
+yy798:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy782;
+ if (yych == 'l') goto yy813;
     goto yy195;
-yy768:
+yy799:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy778;
+ if (yych == 'o') goto yy809;
     goto yy195;
-yy769:
+yy800:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'r') goto yy776;
+ if (yych == 'r') goto yy807;
     goto yy195;
-yy770:
+yy801:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -5403,88 +5579,88 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 74;
+ yyaccept = 78;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy775:
-#line 71 "cpp.re"
+yy806:
+#line 77 "cpp.re"
     { BOOST_WAVE_RET(T_FRIEND); }
-#line 5417 "cpp_re.inc"
-yy776:
- yyaccept = 75;
+#line 5593 "cpp_re.inc"
+yy807:
+ yyaccept = 79;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy777:
-#line 70 "cpp.re"
+yy808:
+#line 76 "cpp.re"
     { BOOST_WAVE_RET(T_FOR); }
-#line 5429 "cpp_re.inc"
-yy778:
+#line 5605 "cpp_re.inc"
+yy809:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 76;
+ yyaccept = 80;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy781:
-#line 69 "cpp.re"
+yy812:
+#line 75 "cpp.re"
     { BOOST_WAVE_RET(T_FLOAT); }
-#line 5447 "cpp_re.inc"
-yy782:
+#line 5623 "cpp_re.inc"
+yy813:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 's') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 77;
+ yyaccept = 81;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy785:
-#line 68 "cpp.re"
+yy816:
+#line 74 "cpp.re"
     { BOOST_WAVE_RET(T_FALSE); }
-#line 5465 "cpp_re.inc"
-yy786:
+#line 5641 "cpp_re.inc"
+yy817:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 's') goto yy808;
+ if (yych == 's') goto yy839;
     goto yy195;
-yy787:
+yy818:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'u') goto yy805;
+ if (yych == 'u') goto yy836;
     goto yy195;
-yy788:
+yy819:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy789;
- if (yych == 't') goto yy790;
+ if (yych == 'p') goto yy820;
+ if (yych == 't') goto yy821;
     goto yy195;
-yy789:
+yy820:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy795;
- if (yych == 'o') goto yy796;
+ if (yych == 'l') goto yy826;
+ if (yych == 'o') goto yy827;
     goto yy195;
-yy790:
+yy821:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5494,41 +5670,41 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
- yyaccept = 78;
+ yyaccept = 82;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy794:
-#line 67 "cpp.re"
+yy825:
+#line 73 "cpp.re"
     { BOOST_WAVE_RET(T_EXTERN); }
-#line 5508 "cpp_re.inc"
-yy795:
+#line 5684 "cpp_re.inc"
+yy826:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy800;
+ if (yych == 'i') goto yy831;
     goto yy195;
-yy796:
+yy827:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 79;
+ yyaccept = 83;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy799:
-#line 66 "cpp.re"
+yy830:
+#line 72 "cpp.re"
     { BOOST_WAVE_RET(T_EXPORT); }
-#line 5531 "cpp_re.inc"
-yy800:
+#line 5707 "cpp_re.inc"
+yy831:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
@@ -5538,55 +5714,60 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 80;
+ yyaccept = 84;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy804:
-#line 65 "cpp.re"
+yy835:
+#line 71 "cpp.re"
     { BOOST_WAVE_RET(T_EXPLICIT); }
-#line 5552 "cpp_re.inc"
-yy805:
+#line 5728 "cpp_re.inc"
+yy836:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'm') goto yy195;
- yyaccept = 81;
+ yyaccept = 85;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy807:
-#line 64 "cpp.re"
+yy838:
+#line 70 "cpp.re"
     { BOOST_WAVE_RET(T_ENUM); }
-#line 5567 "cpp_re.inc"
-yy808:
+#line 5743 "cpp_re.inc"
+yy839:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 82;
+ yyaccept = 86;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy810:
-#line 63 "cpp.re"
+yy841:
+#line 69 "cpp.re"
     { BOOST_WAVE_RET(T_ELSE); }
-#line 5582 "cpp_re.inc"
-yy811:
+#line 5758 "cpp_re.inc"
+yy842:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'f') goto yy831;
- if (yych == 'l') goto yy832;
- goto yy195;
-yy812:
- yyaccept = 83;
+ if (yych <= 'e') {
+ if (yych == 'c') goto yy862;
+ goto yy195;
+ } else {
+ if (yych <= 'f') goto yy863;
+ if (yych == 'l') goto yy864;
+ goto yy195;
+ }
+yy843:
+ yyaccept = 87;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'Z') {
         if (yych <= '9') {
@@ -5604,16 +5785,16 @@
             if (yych <= 't') {
                 if (yych >= 'a') goto yy194;
             } else {
- if (yych <= 'u') goto yy826;
+ if (yych <= 'u') goto yy857;
                 if (yych <= 'z') goto yy194;
             }
         }
     }
-yy813:
-#line 60 "cpp.re"
+yy844:
+#line 66 "cpp.re"
     { BOOST_WAVE_RET(T_DO); }
-#line 5616 "cpp_re.inc"
-yy814:
+#line 5797 "cpp_re.inc"
+yy845:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
@@ -5644,18 +5825,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 84;
+ yyaccept = 88;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy825:
-#line 62 "cpp.re"
+yy856:
+#line 68 "cpp.re"
     { BOOST_WAVE_RET(T_DYNAMICCAST); }
-#line 5658 "cpp_re.inc"
-yy826:
+#line 5839 "cpp_re.inc"
+yy857:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'b') goto yy195;
@@ -5665,23 +5846,28 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 85;
+ yyaccept = 89;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy830:
-#line 61 "cpp.re"
+yy861:
+#line 67 "cpp.re"
     { BOOST_WAVE_RET(T_DOUBLE); }
-#line 5679 "cpp_re.inc"
-yy831:
+#line 5860 "cpp_re.inc"
+yy862:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'l') goto yy874;
+ goto yy195;
+yy863:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy837;
+ if (yych == 'a') goto yy869;
     goto yy195;
-yy832:
+yy864:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5691,18 +5877,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 86;
+ yyaccept = 90;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy836:
-#line 59 "cpp.re"
+yy868:
+#line 65 "cpp.re"
     { BOOST_WAVE_RET(T_DELETE); }
-#line 5705 "cpp_re.inc"
-yy837:
+#line 5891 "cpp_re.inc"
+yy869:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -5712,70 +5898,94 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 87;
+ yyaccept = 91;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy841:
-#line 58 "cpp.re"
+yy873:
+#line 64 "cpp.re"
     { BOOST_WAVE_RET(T_DEFAULT); }
-#line 5726 "cpp_re.inc"
-yy842:
+#line 5912 "cpp_re.inc"
+yy874:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 't') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'y') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'p') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy195;
+ yyaccept = 92;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy879:
+#line 63 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
+#line 5936 "cpp_re.inc"
+yy880:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'r') goto yy195;
- if (yych <= 's') goto yy873;
- if (yych <= 't') goto yy874;
+ if (yych <= 's') goto yy926;
+ if (yych <= 't') goto yy927;
     goto yy195;
-yy843:
+yy881:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy870;
+ if (yych == 'a') goto yy913;
     goto yy195;
-yy844:
+yy882:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy866;
+ if (yych == 'a') goto yy909;
     goto yy195;
-yy845:
+yy883:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'l') goto yy195;
- if (yych <= 'm') goto yy847;
+ if (yych <= 'm') goto yy885;
     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;
+ if (yych <= 's') goto yy889;
+ if (yych <= 't') goto yy890;
     goto yy195;
-yy847:
+yy885:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'p') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'l') goto yy195;
- yyaccept = 88;
+ yyaccept = 93;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy850:
-#line 190 "cpp.re"
+yy888:
+#line 200 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-#line 5773 "cpp_re.inc"
-yy851:
+#line 5983 "cpp_re.inc"
+yy889:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy858;
+ if (yych == 't') goto yy896;
     goto yy195;
-yy852:
+yy890:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -5788,144 +5998,240 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 89;
+ yyaccept = 94;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy857:
-#line 57 "cpp.re"
+yy895:
+#line 62 "cpp.re"
     { BOOST_WAVE_RET(T_CONTINUE); }
-#line 5802 "cpp_re.inc"
-yy858:
- yyaccept = 90;
+#line 6012 "cpp_re.inc"
+yy896:
+ yyaccept = 95;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= 'Z') {
+ if (yych <= '9') {
+ if (yych == '$') goto yy194;
+ if (yych >= '0') goto yy194;
+ } else {
+ if (yych == '?') goto yy197;
+ if (yych >= 'A') goto yy194;
+ }
+ } else {
+ if (yych <= '_') {
+ if (yych == '\\') goto yy196;
+ if (yych >= '_') goto yy898;
+ } else {
+ if (yych <= 'd') {
+ if (yych >= 'a') goto yy194;
+ } else {
+ if (yych <= 'e') goto yy899;
+ if (yych <= 'z') goto yy194;
+ }
+ }
+ }
+yy897:
+#line 59 "cpp.re"
+ { BOOST_WAVE_RET(T_CONST); }
+#line 6040 "cpp_re.inc"
+yy898:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'c') goto yy904;
+ goto yy195;
+yy899:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'x') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'p') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'r') goto yy195;
+ yyaccept = 96;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy903:
+#line 60 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
+#line 6066 "cpp_re.inc"
+yy904:
+ 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 = 97;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy908:
+#line 61 "cpp.re"
+ { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 6087 "cpp_re.inc"
+yy909:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy195;
+ yyaccept = 98;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy912:
+#line 58 "cpp.re"
+ { BOOST_WAVE_RET(T_CLASS); }
+#line 6105 "cpp_re.inc"
+yy913:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'r') goto yy195;
+ yyaccept = 99;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= '@') {
- if (yych <= '/') {
+ if (yych <= '>') {
+ if (yych <= '0') {
             if (yych == '$') goto yy194;
+ if (yych >= '0') goto yy194;
         } else {
- if (yych <= '9') goto yy194;
- if (yych == '?') goto yy197;
+ if (yych <= '2') {
+ if (yych <= '1') goto yy916;
+ goto yy194;
+ } else {
+ if (yych <= '3') goto yy917;
+ if (yych <= '9') goto yy194;
+ }
         }
     } else {
- if (yych <= '^') {
- if (yych <= 'Z') goto yy194;
- if (yych == '\\') goto yy196;
+ if (yych <= '\\') {
+ if (yych <= '@') {
+ if (yych <= '?') goto yy197;
+ } else {
+ if (yych <= 'Z') goto yy194;
+ if (yych >= '\\') goto yy196;
+ }
         } else {
- if (yych <= '_') goto yy860;
- if (yych <= '`') goto yy859;
- if (yych <= 'z') goto yy194;
+ if (yych <= '_') {
+ if (yych >= '_') goto yy194;
+ } else {
+ if (yych <= '`') goto yy915;
+ if (yych <= 'z') goto yy194;
+ }
         }
     }
-yy859:
+yy915:
 #line 55 "cpp.re"
- { BOOST_WAVE_RET(T_CONST); }
-#line 5826 "cpp_re.inc"
-yy860:
+ { BOOST_WAVE_RET(T_CHAR); }
+#line 6145 "cpp_re.inc"
+yy916:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'c') goto yy195;
+ if (yych == '6') goto yy922;
+ goto yy195;
+yy917:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'a') goto yy195;
+ if (yych != '2') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy195;
+ if (yych != '_') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 91;
+ yyaccept = 100;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy865:
-#line 56 "cpp.re"
- { BOOST_WAVE_RET(T_CONSTCAST); }
-#line 5850 "cpp_re.inc"
-yy866:
- yyaccept = 1;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy195;
+yy921:
+#line 57 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
+#line 6171 "cpp_re.inc"
+yy922:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy195;
- yyaccept = 92;
- yych = *(YYMARKER = ++YYCURSOR);
- if (yybm[0+yych] & 4) {
- goto yy194;
- }
- if (yych == '?') goto yy197;
- if (yych == '\\') goto yy196;
-yy869:
-#line 54 "cpp.re"
- { BOOST_WAVE_RET(T_CLASS); }
-#line 5868 "cpp_re.inc"
-yy870:
+ if (yych != '_') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'r') goto yy195;
- yyaccept = 93;
+ if (yych != 't') goto yy195;
+ yyaccept = 101;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy872:
-#line 53 "cpp.re"
- { BOOST_WAVE_RET(T_CHAR); }
-#line 5883 "cpp_re.inc"
-yy873:
+yy925:
+#line 56 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
+#line 6189 "cpp_re.inc"
+yy926:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy878;
+ if (yych == 'e') goto yy931;
     goto yy195;
-yy874:
+yy927:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'h') goto yy195;
- yyaccept = 94;
+ yyaccept = 102;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy877:
-#line 52 "cpp.re"
+yy930:
+#line 54 "cpp.re"
     { BOOST_WAVE_RET(T_CATCH); }
-#line 5906 "cpp_re.inc"
-yy878:
- yyaccept = 95;
+#line 6212 "cpp_re.inc"
+yy931:
+ yyaccept = 103;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy879:
-#line 51 "cpp.re"
+yy932:
+#line 53 "cpp.re"
     { BOOST_WAVE_RET(T_CASE); }
-#line 5918 "cpp_re.inc"
-yy880:
+#line 6224 "cpp_re.inc"
+yy933:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy890;
+ if (yych == 't') goto yy943;
     goto yy195;
-yy881:
+yy934:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy887;
+ if (yych == 'o') goto yy940;
     goto yy195;
-yy882:
+yy935:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5935,115 +6241,120 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'k') goto yy195;
- yyaccept = 96;
+ yyaccept = 104;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy886:
-#line 50 "cpp.re"
+yy939:
+#line 52 "cpp.re"
     { BOOST_WAVE_RET(T_BREAK); }
-#line 5949 "cpp_re.inc"
-yy887:
+#line 6255 "cpp_re.inc"
+yy940:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'l') goto yy195;
- yyaccept = 97;
+ yyaccept = 105;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy889:
-#line 49 "cpp.re"
+yy942:
+#line 51 "cpp.re"
     { BOOST_WAVE_RET(T_BOOL); }
-#line 5964 "cpp_re.inc"
-yy890:
+#line 6270 "cpp_re.inc"
+yy943:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy891;
- if (yych == 'o') goto yy892;
+ if (yych == 'a') goto yy944;
+ if (yych == 'o') goto yy945;
     goto yy195;
-yy891:
+yy944:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy895;
+ if (yych == 'n') goto yy948;
     goto yy195;
-yy892:
+yy945:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 98;
+ yyaccept = 106;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy894:
-#line 186 "cpp.re"
+yy947:
+#line 196 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-#line 5990 "cpp_re.inc"
-yy895:
+#line 6296 "cpp_re.inc"
+yy948:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 99;
+ yyaccept = 107;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy897:
-#line 184 "cpp.re"
+yy950:
+#line 194 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-#line 6005 "cpp_re.inc"
-yy898:
+#line 6311 "cpp_re.inc"
+yy951:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'd') goto yy906;
+ if (yych == 'i') goto yy966;
     goto yy195;
-yy899:
+yy952:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'd') goto yy960;
+ goto yy195;
+yy953:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy904;
+ if (yych == 'm') goto yy958;
     goto yy195;
-yy900:
+yy954:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
- yyaccept = 100;
+ yyaccept = 108;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy903:
-#line 48 "cpp.re"
+yy957:
+#line 50 "cpp.re"
     { BOOST_WAVE_RET(T_AUTO); }
-#line 6033 "cpp_re.inc"
-yy904:
- yyaccept = 101;
+#line 6344 "cpp_re.inc"
+yy958:
+ yyaccept = 109;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy905:
-#line 47 "cpp.re"
+yy959:
+#line 49 "cpp.re"
     { BOOST_WAVE_RET(T_ASM); }
-#line 6045 "cpp_re.inc"
-yy906:
- yyaccept = 102;
+#line 6356 "cpp_re.inc"
+yy960:
+ yyaccept = 110;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '@') {
         if (yych <= '/') {
@@ -6057,36 +6368,80 @@
             if (yych <= 'Z') goto yy194;
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy908;
- if (yych <= '`') goto yy907;
+ if (yych <= '_') goto yy962;
+ if (yych <= '`') goto yy961;
             if (yych <= 'z') goto yy194;
         }
     }
-yy907:
-#line 219 "cpp.re"
+yy961:
+#line 229 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-#line 6069 "cpp_re.inc"
-yy908:
+#line 6380 "cpp_re.inc"
+yy962:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 103;
+ yyaccept = 111;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy911:
-#line 205 "cpp.re"
+yy965:
+#line 215 "cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-#line 6087 "cpp_re.inc"
-yy912:
+#line 6398 "cpp_re.inc"
+yy966:
+ 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 == 'a') goto yy969;
+ if (yych == 'o') goto yy970;
+ goto yy195;
+yy969:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 's') goto yy973;
+ goto yy195;
+yy970:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'f') goto yy195;
+ yyaccept = 112;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy972:
+#line 48 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
+#line 6430 "cpp_re.inc"
+yy973:
+ yyaccept = 113;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy974:
+#line 47 "cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
+#line 6442 "cpp_re.inc"
+yy975:
     ++YYCURSOR;
-#line 166 "cpp.re"
+#line 176 "cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -6096,71 +6451,71 @@
                 BOOST_WAVE_RET(T_DOTSTAR);
             }
         }
-#line 6100 "cpp_re.inc"
-yy914:
+#line 6455 "cpp_re.inc"
+yy977:
     yych = *++YYCURSOR;
- if (yych == '.') goto yy916;
+ if (yych == '.') goto yy979;
     goto yy98;
-yy915:
+yy978:
     yych = *++YYCURSOR;
     goto yy7;
-yy916:
+yy979:
     ++YYCURSOR;
-#line 152 "cpp.re"
+#line 162 "cpp.re"
     { BOOST_WAVE_RET(T_ELLIPSIS); }
-#line 6112 "cpp_re.inc"
-yy918:
+#line 6467 "cpp_re.inc"
+yy981:
     ++YYCURSOR;
-#line 199 "cpp.re"
+#line 209 "cpp.re"
     { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-#line 6117 "cpp_re.inc"
-yy920:
+#line 6472 "cpp_re.inc"
+yy983:
     ++YYCURSOR;
 #line 44 "cpp.re"
     { goto cppcomment; }
-#line 6122 "cpp_re.inc"
-yy922:
+#line 6477 "cpp_re.inc"
+yy985:
     ++YYCURSOR;
 #line 43 "cpp.re"
     { goto ccomment; }
-#line 6127 "cpp_re.inc"
+#line 6482 "cpp_re.inc"
 }
-#line 308 "cpp.re"
+#line 318 "cpp.re"
 
 
 ccomment:
 
-#line 6134 "cpp_re.inc"
+#line 6489 "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;
+ if (yych <= 0x00) goto yy996;
+ goto yy998;
         } else {
- if (yych == '\n') goto yy928;
- goto yy931;
+ if (yych == '\n') goto yy991;
+ goto yy994;
         }
     } else {
         if (yych <= 0x1F) {
- if (yych <= '\r') goto yy930;
- goto yy935;
+ if (yych <= '\r') goto yy993;
+ goto yy998;
         } else {
- if (yych != '*') goto yy932;
+ if (yych != '*') goto yy995;
         }
     }
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == '/') goto yy938;
-yy927:
-#line 323 "cpp.re"
+ if ((yych = *YYCURSOR) == '/') goto yy1001;
+yy990:
+#line 333 "cpp.re"
     { goto ccomment; }
-#line 6160 "cpp_re.inc"
-yy928:
+#line 6515 "cpp_re.inc"
+yy991:
     ++YYCURSOR;
-yy929:
-#line 315 "cpp.re"
+yy992:
+#line 325 "cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
         /*s->tok = cursor; */
@@ -6168,20 +6523,20 @@
         cursor.column = 1;
         goto ccomment;
     }
-#line 6172 "cpp_re.inc"
-yy930:
+#line 6527 "cpp_re.inc"
+yy993:
     yych = *++YYCURSOR;
- if (yych == '\n') goto yy937;
- goto yy929;
-yy931:
+ if (yych == '\n') goto yy1000;
+ goto yy992;
+yy994:
     yych = *++YYCURSOR;
- goto yy927;
-yy932:
+ goto yy990;
+yy995:
     yych = *++YYCURSOR;
- goto yy927;
-yy933:
+ goto yy990;
+yy996:
     ++YYCURSOR;
-#line 326 "cpp.re"
+#line 336 "cpp.re"
     {
         if(cursor == s->eof)
         {
@@ -6197,49 +6552,49 @@
                 "invalid character: '\\000' in input stream");
         }
     }
-#line 6201 "cpp_re.inc"
-yy935:
+#line 6556 "cpp_re.inc"
+yy998:
     ++YYCURSOR;
-#line 343 "cpp.re"
+#line 353 "cpp.re"
     {
         // flag the error
         BOOST_WAVE_UPDATE_CURSOR(); // adjust the input cursor
         (*s->error_proc)(s, lexing_exception::generic_lexing_error,
             "invalid character '\\%03o' in input stream", *--YYCURSOR);
     }
-#line 6211 "cpp_re.inc"
-yy937:
+#line 6566 "cpp_re.inc"
+yy1000:
     yych = *++YYCURSOR;
- goto yy929;
-yy938:
+ goto yy992;
+yy1001:
     ++YYCURSOR;
-#line 312 "cpp.re"
+#line 322 "cpp.re"
     { BOOST_WAVE_RET(T_CCOMMENT); }
-#line 6219 "cpp_re.inc"
+#line 6574 "cpp_re.inc"
 }
-#line 349 "cpp.re"
+#line 359 "cpp.re"
 
 
 cppcomment:
 
-#line 6226 "cpp_re.inc"
+#line 6581 "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;
+ if (yych <= 0x00) goto yy1011;
+ if (yych <= 0x08) goto yy1013;
+ if (yych <= '\t') goto yy1008;
+ } else {
+ if (yych <= '\f') goto yy1008;
+ if (yych <= '\r') goto yy1007;
+ if (yych <= 0x1F) goto yy1013;
+ goto yy1010;
     }
     ++YYCURSOR;
-yy943:
-#line 354 "cpp.re"
+yy1006:
+#line 364 "cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
         /*s->tok = cursor; */
@@ -6247,23 +6602,23 @@
         cursor.column = 1;
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-#line 6251 "cpp_re.inc"
-yy944:
+#line 6606 "cpp_re.inc"
+yy1007:
     yych = *++YYCURSOR;
- if (yych == '\n') goto yy952;
- goto yy943;
-yy945:
+ if (yych == '\n') goto yy1015;
+ goto yy1006;
+yy1008:
     ++YYCURSOR;
-yy946:
-#line 362 "cpp.re"
+yy1009:
+#line 372 "cpp.re"
     { goto cppcomment; }
-#line 6261 "cpp_re.inc"
-yy947:
+#line 6616 "cpp_re.inc"
+yy1010:
     yych = *++YYCURSOR;
- goto yy946;
-yy948:
+ goto yy1009;
+yy1011:
     ++YYCURSOR;
-#line 365 "cpp.re"
+#line 375 "cpp.re"
     {
         if (s->eof && cursor != s->eof)
         {
@@ -6282,23 +6637,23 @@
         }
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-#line 6286 "cpp_re.inc"
-yy950:
+#line 6641 "cpp_re.inc"
+yy1013:
     ++YYCURSOR;
-#line 385 "cpp.re"
+#line 395 "cpp.re"
     {
         // flag the error
         BOOST_WAVE_UPDATE_CURSOR(); // adjust the input cursor
         (*s->error_proc)(s, lexing_exception::generic_lexing_error,
             "invalid character '\\%03o' in input stream", *--YYCURSOR);
     }
-#line 6296 "cpp_re.inc"
-yy952:
+#line 6651 "cpp_re.inc"
+yy1015:
     ++YYCURSOR;
     yych = *YYCURSOR;
- goto yy943;
+ goto yy1006;
 }
-#line 391 "cpp.re"
+#line 401 "cpp.re"
 
 
 /* this subscanner is called whenever a pp_number has been started */
@@ -6310,7 +6665,7 @@
 
     if (s->detect_pp_numbers) {
     
-#line 6314 "cpp_re.inc"
+#line 6669 "cpp_re.inc"
 {
     YYCTYPE yych;
     static const unsigned char yybm[] = {
@@ -6349,253 +6704,253 @@
     };
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
- if (yych == '.') goto yy956;
- if (yych <= '/') goto yy955;
- if (yych <= '9') goto yy957;
-yy955:
+ if (yych == '.') goto yy1019;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+yy1018:
     YYCURSOR = YYMARKER;
- goto yy959;
-yy956:
+ goto yy1022;
+yy1019:
     yych = *++YYCURSOR;
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
-yy957:
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
+yy1020:
     YYMARKER = ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 64) {
- goto yy957;
+ goto yy1020;
     }
     if (yych <= 'Z') {
- if (yych == '?') goto yy963;
- if (yych >= 'A') goto yy960;
+ if (yych == '?') goto yy1026;
+ if (yych >= 'A') goto yy1023;
     } else {
         if (yych <= '\\') {
- if (yych >= '\\') goto yy962;
+ if (yych >= '\\') goto yy1025;
         } else {
- if (yych == 'e') goto yy960;
+ if (yych == 'e') goto yy1023;
         }
     }
-yy959:
-#line 403 "cpp.re"
+yy1022:
+#line 413 "cpp.re"
     { BOOST_WAVE_RET(T_PP_NUMBER); }
-#line 6383 "cpp_re.inc"
-yy960:
+#line 6738 "cpp_re.inc"
+yy1023:
     YYMARKER = ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy960;
+ goto yy1023;
     }
     if (yych <= '>') {
         if (yych <= '+') {
- if (yych == '$') goto yy957;
- if (yych <= '*') goto yy959;
- goto yy957;
+ if (yych == '$') goto yy1020;
+ if (yych <= '*') goto yy1022;
+ goto yy1020;
         } else {
             if (yych <= '.') {
- if (yych <= ',') goto yy959;
- goto yy957;
+ if (yych <= ',') goto yy1022;
+ goto yy1020;
             } else {
- if (yych <= '/') goto yy959;
- if (yych <= '9') goto yy957;
- goto yy959;
+ if (yych <= '/') goto yy1022;
+ if (yych <= '9') goto yy1020;
+ goto yy1022;
             }
         }
     } else {
         if (yych <= '\\') {
             if (yych <= '@') {
- if (yych <= '?') goto yy963;
- goto yy959;
+ if (yych <= '?') goto yy1026;
+ goto yy1022;
             } else {
- if (yych <= 'Z') goto yy957;
- if (yych <= '[') goto yy959;
+ if (yych <= 'Z') goto yy1020;
+ if (yych <= '[') goto yy1022;
             }
         } else {
             if (yych <= '_') {
- if (yych <= '^') goto yy959;
- goto yy957;
+ if (yych <= '^') goto yy1022;
+ goto yy1020;
             } else {
- if (yych <= '`') goto yy959;
- if (yych <= 'z') goto yy957;
- goto yy959;
+ if (yych <= '`') goto yy1022;
+ if (yych <= 'z') goto yy1020;
+ goto yy1022;
             }
         }
     }
-yy962:
+yy1025:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych == 'U') goto yy966;
- if (yych == 'u') goto yy965;
- goto yy955;
-yy963:
+ if (yych == 'U') goto yy1029;
+ if (yych == 'u') goto yy1028;
+ goto yy1018;
+yy1026:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych != '?') goto yy955;
+ if (yych != '?') goto yy1018;
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych == '/') goto yy962;
- goto yy955;
-yy965:
+ if (yych == '/') goto yy1025;
+ goto yy1018;
+yy1028:
     ++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;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1037;
+ goto yy1018;
+ } else {
+ if (yych <= 'F') goto yy1037;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1037;
+ goto yy1018;
     }
-yy966:
+yy1029:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy967;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1030;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy967:
+yy1030:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy968;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1031;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy968:
+yy1031:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy969;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1032;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy969:
+yy1032:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy970;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1033;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy970:
+yy1033:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy971;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1034;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy971:
+yy1034:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy972;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1035;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy972:
+yy1035:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy973;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1036;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy973:
+yy1036:
     ++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;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+ goto yy1018;
+ } else {
+ if (yych <= 'F') goto yy1020;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1020;
+ goto yy1018;
     }
-yy974:
+yy1037:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy975;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1038;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy975:
+yy1038:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy976;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1039;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy976:
+yy1039:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych <= '9') goto yy957;
- goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+ goto yy1018;
     } else {
- if (yych <= 'F') goto yy957;
- if (yych <= '`') goto yy955;
- if (yych <= 'f') goto yy957;
- goto yy955;
+ if (yych <= 'F') goto yy1020;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1020;
+ goto yy1018;
     }
 }
-#line 404 "cpp.re"
+#line 414 "cpp.re"
 
     }
     else {
     
-#line 6599 "cpp_re.inc"
+#line 6954 "cpp_re.inc"
 {
     YYCTYPE yych;
     unsigned int yyaccept = 0;
@@ -6636,228 +6991,228 @@
     if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
     yych = *YYCURSOR;
     if (yych <= '/') {
- if (yych == '.') goto yy984;
+ if (yych == '.') goto yy1047;
     } else {
- if (yych <= '0') goto yy980;
- if (yych <= '9') goto yy982;
+ if (yych <= '0') goto yy1043;
+ if (yych <= '9') goto yy1045;
     }
-yy979:
+yy1042:
     YYCURSOR = YYMARKER;
     if (yyaccept <= 0) {
- goto yy981;
+ goto yy1044;
     } else {
- goto yy987;
+ goto yy1050;
     }
-yy980:
+yy1043:
     yyaccept = 0;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 64) {
- goto yy999;
+ goto yy1062;
     }
     if (yych <= 'E') {
         if (yych <= '/') {
- if (yych == '.') goto yy985;
+ if (yych == '.') goto yy1048;
         } else {
- if (yych <= '9') goto yy1002;
- if (yych >= 'E') goto yy995;
+ if (yych <= '9') goto yy1065;
+ if (yych >= 'E') goto yy1058;
         }
     } else {
         if (yych <= 'd') {
- if (yych == 'X') goto yy1001;
+ if (yych == 'X') goto yy1064;
         } else {
- if (yych <= 'e') goto yy995;
- if (yych == 'x') goto yy1001;
+ if (yych <= 'e') goto yy1058;
+ if (yych == 'x') goto yy1064;
         }
     }
-yy981:
-#line 411 "cpp.re"
+yy1044:
+#line 421 "cpp.re"
     { goto integer_suffix; }
-#line 6676 "cpp_re.inc"
-yy982:
+#line 7031 "cpp_re.inc"
+yy1045:
     yyaccept = 0;
     YYMARKER = ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 32) {
- goto yy982;
+ goto yy1045;
     }
     if (yych <= 'D') {
- if (yych == '.') goto yy985;
- goto yy981;
+ if (yych == '.') goto yy1048;
+ goto yy1044;
     } 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:
+ if (yych <= 'E') goto yy1058;
+ if (yych == 'e') goto yy1058;
+ goto yy1044;
+ }
+yy1047:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1048:
     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;
+ if (yych <= '/') goto yy1050;
+ if (yych <= '9') goto yy1048;
         } else {
- if (yych <= 'E') goto yy988;
- if (yych <= 'F') goto yy989;
+ if (yych <= 'E') goto yy1051;
+ if (yych <= 'F') goto yy1052;
         }
     } else {
         if (yych <= 'e') {
- if (yych <= 'L') goto yy990;
- if (yych >= 'e') goto yy988;
+ if (yych <= 'L') goto yy1053;
+ if (yych >= 'e') goto yy1051;
         } else {
- if (yych <= 'f') goto yy989;
- if (yych == 'l') goto yy990;
+ if (yych <= 'f') goto yy1052;
+ if (yych == 'l') goto yy1053;
         }
     }
-yy987:
-#line 409 "cpp.re"
+yy1050:
+#line 419 "cpp.re"
     { BOOST_WAVE_RET(T_FLOATLIT); }
-#line 6722 "cpp_re.inc"
-yy988:
+#line 7077 "cpp_re.inc"
+yy1051:
     yych = *++YYCURSOR;
     if (yych <= ',') {
- if (yych == '+') goto yy992;
- goto yy979;
+ if (yych == '+') goto yy1055;
+ goto yy1042;
     } 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:
+ if (yych <= '-') goto yy1055;
+ if (yych <= '/') goto yy1042;
+ if (yych <= '9') goto yy1056;
+ goto yy1042;
+ }
+yy1052:
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy1054;
+ if (yych == 'l') goto yy1054;
+ goto yy1050;
+yy1053:
+ yych = *++YYCURSOR;
+ if (yych == 'F') goto yy1054;
+ if (yych != 'f') goto yy1050;
+yy1054:
+ yych = *++YYCURSOR;
+ goto yy1050;
+yy1055:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1056:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
     if (yych <= 'K') {
         if (yych <= '9') {
- if (yych <= '/') goto yy987;
- goto yy993;
+ if (yych <= '/') goto yy1050;
+ goto yy1056;
         } else {
- if (yych == 'F') goto yy989;
- goto yy987;
+ if (yych == 'F') goto yy1052;
+ goto yy1050;
         }
     } else {
         if (yych <= 'f') {
- if (yych <= 'L') goto yy990;
- if (yych <= 'e') goto yy987;
- goto yy989;
+ if (yych <= 'L') goto yy1053;
+ if (yych <= 'e') goto yy1050;
+ goto yy1052;
         } else {
- if (yych == 'l') goto yy990;
- goto yy987;
+ if (yych == 'l') goto yy1053;
+ goto yy1050;
         }
     }
-yy995:
+yy1058:
     yych = *++YYCURSOR;
     if (yych <= ',') {
- if (yych != '+') goto yy979;
+ if (yych != '+') goto yy1042;
     } 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:
+ if (yych <= '-') goto yy1059;
+ if (yych <= '/') goto yy1042;
+ if (yych <= '9') goto yy1060;
+ goto yy1042;
+ }
+yy1059:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1060:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
     if (yych <= 'K') {
         if (yych <= '9') {
- if (yych <= '/') goto yy987;
- goto yy997;
+ if (yych <= '/') goto yy1050;
+ goto yy1060;
         } else {
- if (yych == 'F') goto yy989;
- goto yy987;
+ if (yych == 'F') goto yy1052;
+ goto yy1050;
         }
     } else {
         if (yych <= 'f') {
- if (yych <= 'L') goto yy990;
- if (yych <= 'e') goto yy987;
- goto yy989;
+ if (yych <= 'L') goto yy1053;
+ if (yych <= 'e') goto yy1050;
+ goto yy1052;
         } else {
- if (yych == 'l') goto yy990;
- goto yy987;
+ if (yych == 'l') goto yy1053;
+ goto yy1050;
         }
     }
-yy999:
+yy1062:
     yyaccept = 0;
     YYMARKER = ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 64) {
- goto yy999;
+ goto yy1062;
     }
     if (yych <= '9') {
- if (yych == '.') goto yy985;
- if (yych <= '/') goto yy981;
- goto yy1002;
+ if (yych == '.') goto yy1048;
+ if (yych <= '/') goto yy1044;
+ goto yy1065;
     } else {
         if (yych <= 'E') {
- if (yych <= 'D') goto yy981;
- goto yy995;
+ if (yych <= 'D') goto yy1044;
+ goto yy1058;
         } else {
- if (yych == 'e') goto yy995;
- goto yy981;
+ if (yych == 'e') goto yy1058;
+ goto yy1044;
         }
     }
-yy1001:
+yy1064:
     yych = *++YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy1004;
+ goto yy1067;
     }
- goto yy979;
-yy1002:
+ goto yy1042;
+yy1065:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yych <= '9') {
- if (yych == '.') goto yy985;
- if (yych <= '/') goto yy979;
- goto yy1002;
+ if (yych == '.') goto yy1048;
+ if (yych <= '/') goto yy1042;
+ goto yy1065;
     } else {
         if (yych <= 'E') {
- if (yych <= 'D') goto yy979;
- goto yy995;
+ if (yych <= 'D') goto yy1042;
+ goto yy1058;
         } else {
- if (yych == 'e') goto yy995;
- goto yy979;
+ if (yych == 'e') goto yy1058;
+ goto yy1042;
         }
     }
-yy1004:
+yy1067:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy1004;
+ goto yy1067;
     }
- goto yy981;
+ goto yy1044;
 }
-#line 412 "cpp.re"
+#line 422 "cpp.re"
 
     }
 }
@@ -6867,140 +7222,140 @@
 {
     if (s->enable_ms_extensions) {
     
-#line 6871 "cpp_re.inc"
+#line 7226 "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;
+ if (yych >= 'L') goto yy1073;
         } else {
- if (yych == 'U') goto yy1009;
+ if (yych == 'U') goto yy1072;
         }
     } else {
         if (yych <= 'l') {
- if (yych <= 'i') goto yy1011;
- if (yych >= 'l') goto yy1010;
+ if (yych <= 'i') goto yy1074;
+ if (yych >= 'l') goto yy1073;
         } else {
- if (yych == 'u') goto yy1009;
+ if (yych == 'u') goto yy1072;
         }
     }
-yy1008:
-#line 425 "cpp.re"
+yy1071:
+#line 435 "cpp.re"
     { BOOST_WAVE_RET(T_INTLIT); }
-#line 6893 "cpp_re.inc"
-yy1009:
+#line 7248 "cpp_re.inc"
+yy1072:
     yych = *++YYCURSOR;
- if (yych == 'L') goto yy1018;
- if (yych == 'l') goto yy1018;
- goto yy1008;
-yy1010:
+ if (yych == 'L') goto yy1081;
+ if (yych == 'l') goto yy1081;
+ goto yy1071;
+yy1073:
     yych = *++YYCURSOR;
     if (yych <= 'U') {
- if (yych == 'L') goto yy1017;
- if (yych <= 'T') goto yy1008;
- goto yy1016;
+ if (yych == 'L') goto yy1080;
+ if (yych <= 'T') goto yy1071;
+ goto yy1079;
     } else {
         if (yych <= 'l') {
- if (yych <= 'k') goto yy1008;
- goto yy1017;
+ if (yych <= 'k') goto yy1071;
+ goto yy1080;
         } else {
- if (yych == 'u') goto yy1016;
- goto yy1008;
+ if (yych == 'u') goto yy1079;
+ goto yy1071;
         }
     }
-yy1011:
+yy1074:
     yych = *++YYCURSOR;
- if (yych == '6') goto yy1013;
-yy1012:
+ if (yych == '6') goto yy1076;
+yy1075:
     YYCURSOR = YYMARKER;
- goto yy1008;
-yy1013:
+ goto yy1071;
+yy1076:
     yych = *++YYCURSOR;
- if (yych != '4') goto yy1012;
-yy1014:
+ if (yych != '4') goto yy1075;
+yy1077:
     ++YYCURSOR;
-yy1015:
-#line 422 "cpp.re"
+yy1078:
+#line 432 "cpp.re"
     { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6928 "cpp_re.inc"
-yy1016:
+#line 7283 "cpp_re.inc"
+yy1079:
     yych = *++YYCURSOR;
- goto yy1008;
-yy1017:
+ goto yy1071;
+yy1080:
     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;
+ if (yych == 'U') goto yy1077;
+ if (yych == 'u') goto yy1077;
+ goto yy1078;
+yy1081:
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == 'L') goto yy1077;
+ if (yych == 'l') goto yy1077;
+ goto yy1071;
 }
-#line 426 "cpp.re"
+#line 436 "cpp.re"
 
     }
     else {
     
-#line 6948 "cpp_re.inc"
+#line 7303 "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;
+ if (yych == 'L') goto yy1086;
+ if (yych >= 'U') goto yy1085;
     } else {
         if (yych <= 'l') {
- if (yych >= 'l') goto yy1023;
+ if (yych >= 'l') goto yy1086;
         } else {
- if (yych == 'u') goto yy1022;
+ if (yych == 'u') goto yy1085;
         }
     }
-yy1021:
-#line 434 "cpp.re"
+yy1084:
+#line 444 "cpp.re"
     { BOOST_WAVE_RET(T_INTLIT); }
-#line 6966 "cpp_re.inc"
-yy1022:
+#line 7321 "cpp_re.inc"
+yy1085:
     yych = *++YYCURSOR;
- if (yych == 'L') goto yy1028;
- if (yych == 'l') goto yy1028;
- goto yy1021;
-yy1023:
+ if (yych == 'L') goto yy1091;
+ if (yych == 'l') goto yy1091;
+ goto yy1084;
+yy1086:
     yych = *++YYCURSOR;
     if (yych <= 'U') {
- if (yych == 'L') goto yy1025;
- if (yych <= 'T') goto yy1021;
+ if (yych == 'L') goto yy1088;
+ if (yych <= 'T') goto yy1084;
     } else {
         if (yych <= 'l') {
- if (yych <= 'k') goto yy1021;
- goto yy1025;
+ if (yych <= 'k') goto yy1084;
+ goto yy1088;
         } else {
- if (yych != 'u') goto yy1021;
+ if (yych != 'u') goto yy1084;
         }
     }
     yych = *++YYCURSOR;
- goto yy1021;
-yy1025:
+ goto yy1084;
+yy1088:
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == 'U') goto yy1027;
- if (yych == 'u') goto yy1027;
-yy1026:
-#line 431 "cpp.re"
+ if ((yych = *YYCURSOR) == 'U') goto yy1090;
+ if (yych == 'u') goto yy1090;
+yy1089:
+#line 441 "cpp.re"
     { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6994 "cpp_re.inc"
-yy1027:
+#line 7349 "cpp_re.inc"
+yy1090:
     yych = *++YYCURSOR;
- goto yy1026;
-yy1028:
+ goto yy1089;
+yy1091:
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == 'L') goto yy1027;
- if (yych == 'l') goto yy1027;
- goto yy1021;
+ if ((yych = *YYCURSOR) == 'L') goto yy1090;
+ if (yych == 'l') goto yy1090;
+ goto yy1084;
 }
-#line 435 "cpp.re"
+#line 445 "cpp.re"
 
     }
 }

Modified: trunk/libs/wave/src/cpplexer/re2clex/strict_cpp.re
==============================================================================
--- trunk/libs/wave/src/cpplexer/re2clex/strict_cpp.re (original)
+++ trunk/libs/wave/src/cpplexer/re2clex/strict_cpp.re 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -44,6 +44,8 @@
     "//" { goto cppcomment; }
     "."? Digit { goto pp_number; }
 
+ "alignas" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
+ "alignof" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
     "asm" { BOOST_WAVE_RET(T_ASM); }
     "auto" { BOOST_WAVE_RET(T_AUTO); }
     "bool" { BOOST_WAVE_RET(T_BOOL); }
@@ -51,10 +53,14 @@
     "case" { BOOST_WAVE_RET(T_CASE); }
     "catch" { BOOST_WAVE_RET(T_CATCH); }
     "char" { BOOST_WAVE_RET(T_CHAR); }
+ "char16_t" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
+ "char32_t" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
     "class" { BOOST_WAVE_RET(T_CLASS); }
     "const" { BOOST_WAVE_RET(T_CONST); }
+ "constexpr" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
     "const_cast" { BOOST_WAVE_RET(T_CONSTCAST); }
     "continue" { BOOST_WAVE_RET(T_CONTINUE); }
+ "decltype" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
     "default" { BOOST_WAVE_RET(T_DEFAULT); }
     "delete" { BOOST_WAVE_RET(T_DELETE); }
     "do" { BOOST_WAVE_RET(T_DO); }
@@ -78,6 +84,8 @@
     "mutable" { BOOST_WAVE_RET(T_MUTABLE); }
     "namespace" { BOOST_WAVE_RET(T_NAMESPACE); }
     "new" { BOOST_WAVE_RET(T_NEW); }
+ "noexcept" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
+ "nullptr" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
     "operator" { BOOST_WAVE_RET(T_OPERATOR); }
     "private" { BOOST_WAVE_RET(T_PRIVATE); }
     "protected" { BOOST_WAVE_RET(T_PROTECTED); }
@@ -90,10 +98,12 @@
     "sizeof" { BOOST_WAVE_RET(T_SIZEOF); }
     "static" { BOOST_WAVE_RET(T_STATIC); }
     "static_cast" { BOOST_WAVE_RET(T_STATICCAST); }
+ "static_assert" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
     "struct" { BOOST_WAVE_RET(T_STRUCT); }
     "switch" { BOOST_WAVE_RET(T_SWITCH); }
     "template" { BOOST_WAVE_RET(T_TEMPLATE); }
     "this" { BOOST_WAVE_RET(T_THIS); }
+ "thread_local" { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
     "throw" { BOOST_WAVE_RET(T_THROW); }
     "true" { BOOST_WAVE_RET(T_TRUE); }
     "try" { BOOST_WAVE_RET(T_TRY); }

Modified: trunk/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc
==============================================================================
--- trunk/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc (original)
+++ trunk/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -1,4 +1,4 @@
-/* Generated by re2c 0.13.5 on Fri May 22 14:32:21 2009 */
+/* Generated by re2c 0.13.5 on Tue Dec 07 10:44:39 2010 */
 #line 1 "strict_cpp.re"
 /*=============================================================================
     Boost.Wave: A Standard compliant C++ preprocessor library
@@ -226,26 +226,26 @@
 yy2:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '.') {
- if (yych == '*') goto yy922;
+ if (yych == '*') goto yy985;
     } else {
- if (yych <= '/') goto yy920;
- if (yych == '=') goto yy918;
+ if (yych <= '/') goto yy983;
+ if (yych == '=') goto yy981;
     }
-#line 178 "strict_cpp.re"
+#line 188 "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;
+ if (yych == '*') goto yy975;
     } else {
- if (yych <= '.') goto yy914;
+ if (yych <= '.') goto yy977;
         if (yych <= '/') goto yy5;
- if (yych <= '9') goto yy915;
+ if (yych <= '9') goto yy978;
     }
 yy5:
-#line 164 "strict_cpp.re"
+#line 174 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DOT); }
 #line 251 "strict_cpp_re.inc"
 yy6:
@@ -257,136 +257,140 @@
 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;
+ switch (yych) {
+ case 'l': goto yy951;
+ case 'n': goto yy952;
+ case 's': goto yy953;
+ case 'u': goto yy954;
+ default: goto yy195;
     }
 yy9:
-#line 243 "strict_cpp.re"
+#line 253 "strict_cpp.re"
     { BOOST_WAVE_RET(T_IDENTIFIER); }
-#line 272 "strict_cpp_re.inc"
+#line 271 "strict_cpp_re.inc"
 yy10:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'n') {
- if (yych == 'i') goto yy880;
+ if (yych == 'i') goto yy933;
         goto yy195;
     } else {
- if (yych <= 'o') goto yy881;
- if (yych == 'r') goto yy882;
+ if (yych <= 'o') goto yy934;
+ if (yych == 'r') goto yy935;
         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;
+ case 'a': goto yy880;
+ case 'h': goto yy881;
+ case 'l': goto yy882;
+ case 'o': goto yy883;
     default: goto yy195;
     }
 yy12:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'n') {
- if (yych == 'e') goto yy811;
+ if (yych == 'e') goto yy842;
         goto yy195;
     } else {
- if (yych <= 'o') goto yy812;
- if (yych == 'y') goto yy814;
+ if (yych <= 'o') goto yy843;
+ if (yych == 'y') goto yy845;
         goto yy195;
     }
 yy13:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'm') {
- if (yych == 'l') goto yy786;
+ if (yych == 'l') goto yy817;
         goto yy195;
     } else {
- if (yych <= 'n') goto yy787;
- if (yych == 'x') goto yy788;
+ if (yych <= 'n') goto yy818;
+ if (yych == 'x') goto yy819;
         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;
+ case 'a': goto yy798;
+ case 'l': goto yy799;
+ case 'o': goto yy800;
+ case 'r': goto yy801;
     default: goto yy195;
     }
 yy15:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy763;
+ if (yych == 'o') goto yy794;
     goto yy195;
 yy16:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'l') {
- if (yych == 'f') goto yy747;
+ if (yych == 'f') goto yy778;
         goto yy195;
     } else {
- if (yych <= 'm') goto yy749;
- if (yych <= 'n') goto yy750;
+ if (yych <= 'm') goto yy780;
+ if (yych <= 'n') goto yy781;
         goto yy195;
     }
 yy17:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy743;
+ if (yych == 'o') goto yy774;
     goto yy195;
 yy18:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'u') goto yy736;
+ if (yych == 'u') goto yy767;
     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;
+ if (yych <= 'e') {
+ if (yych == 'a') goto yy734;
+ if (yych <= 'd') goto yy195;
+ goto yy735;
+ } else {
+ if (yych <= 'o') {
+ if (yych <= 'n') goto yy195;
+ goto yy736;
+ } else {
+ if (yych == 'u') goto yy737;
+ goto yy195;
+ }
     }
 yy20:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy703;
- if (yych == 'r') goto yy704;
+ if (yych == 'p') goto yy720;
+ if (yych == 'r') goto yy721;
     goto yy195;
 yy21:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'r') goto yy682;
- if (yych == 'u') goto yy683;
+ if (yych == 'r') goto yy699;
+ if (yych == 'u') goto yy700;
     goto yy195;
 yy22:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy654;
+ if (yych == 'e') goto yy671;
     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;
+ if (yych <= 'h') goto yy625;
+ if (yych <= 'i') goto yy626;
         goto yy195;
     } else {
- if (yych <= 't') goto yy617;
- if (yych == 'w') goto yy618;
+ if (yych <= 't') goto yy627;
+ if (yych == 'w') goto yy628;
         goto yy195;
     }
 yy24:
@@ -439,17 +443,17 @@
     }
 yy29:
     ++YYCURSOR;
-#line 128 "strict_cpp.re"
+#line 138 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE); }
-#line 445 "strict_cpp_re.inc"
+#line 449 "strict_cpp_re.inc"
 yy31:
     yyaccept = 2;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych == '?') goto yy407;
 yy32:
-#line 153 "strict_cpp.re"
+#line 163 "strict_cpp.re"
     { BOOST_WAVE_RET(T_QUESTION_MARK); }
-#line 453 "strict_cpp_re.inc"
+#line 457 "strict_cpp_re.inc"
 yy33:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= ':') {
@@ -461,14 +465,14 @@
         if (yych <= '=') goto yy397;
     }
 yy34:
-#line 194 "strict_cpp.re"
+#line 204 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LESS); }
-#line 467 "strict_cpp_re.inc"
+#line 471 "strict_cpp_re.inc"
 yy35:
     ++YYCURSOR;
-#line 131 "strict_cpp.re"
+#line 141 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE); }
-#line 472 "strict_cpp_re.inc"
+#line 476 "strict_cpp_re.inc"
 yy37:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '<') {
@@ -477,26 +481,26 @@
         if (yych <= '=') goto yy390;
         if (yych <= '>') goto yy392;
     }
-#line 179 "strict_cpp.re"
+#line 189 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PERCENT); }
-#line 483 "strict_cpp_re.inc"
+#line 487 "strict_cpp_re.inc"
 yy39:
     ++YYCURSOR;
-#line 134 "strict_cpp.re"
+#line 144 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET); }
-#line 488 "strict_cpp_re.inc"
+#line 492 "strict_cpp_re.inc"
 yy41:
     ++YYCURSOR;
-#line 137 "strict_cpp.re"
+#line 147 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-#line 493 "strict_cpp_re.inc"
+#line 497 "strict_cpp_re.inc"
 yy43:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == ':') goto yy384;
     if (yych == '>') goto yy386;
-#line 151 "strict_cpp.re"
+#line 161 "strict_cpp.re"
     { BOOST_WAVE_RET(T_COLON); }
-#line 500 "strict_cpp_re.inc"
+#line 504 "strict_cpp_re.inc"
 yy45:
     yyaccept = 3;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -535,31 +539,31 @@
         }
     }
 yy46:
-#line 140 "strict_cpp.re"
+#line 150 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND); }
-#line 541 "strict_cpp_re.inc"
+#line 545 "strict_cpp_re.inc"
 yy47:
     ++YYCURSOR;
-#line 148 "strict_cpp.re"
+#line 158 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTPAREN); }
-#line 546 "strict_cpp_re.inc"
+#line 550 "strict_cpp_re.inc"
 yy49:
     ++YYCURSOR;
-#line 149 "strict_cpp.re"
+#line 159 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTPAREN); }
-#line 551 "strict_cpp_re.inc"
+#line 555 "strict_cpp_re.inc"
 yy51:
     ++YYCURSOR;
-#line 150 "strict_cpp.re"
+#line 160 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SEMICOLON); }
-#line 556 "strict_cpp_re.inc"
+#line 560 "strict_cpp_re.inc"
 yy53:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '+') goto yy256;
     if (yych == '=') goto yy258;
-#line 175 "strict_cpp.re"
+#line 185 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PLUS); }
-#line 563 "strict_cpp_re.inc"
+#line 567 "strict_cpp_re.inc"
 yy55:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) <= '<') {
@@ -568,21 +572,21 @@
         if (yych <= '=') goto yy252;
         if (yych <= '>') goto yy248;
     }
-#line 176 "strict_cpp.re"
+#line 186 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MINUS); }
-#line 574 "strict_cpp_re.inc"
+#line 578 "strict_cpp_re.inc"
 yy57:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy246;
-#line 177 "strict_cpp.re"
+#line 187 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STAR); }
-#line 580 "strict_cpp_re.inc"
+#line 584 "strict_cpp_re.inc"
 yy59:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy244;
-#line 180 "strict_cpp.re"
+#line 190 "strict_cpp.re"
     { BOOST_WAVE_RET(T_XOR); }
-#line 586 "strict_cpp_re.inc"
+#line 590 "strict_cpp_re.inc"
 yy61:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -592,9 +596,9 @@
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '&') goto yy233;
     if (yych == '=') goto yy235;
-#line 183 "strict_cpp.re"
+#line 193 "strict_cpp.re"
     { BOOST_WAVE_RET(T_AND); }
-#line 598 "strict_cpp_re.inc"
+#line 602 "strict_cpp_re.inc"
 yy64:
     yyaccept = 4;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -605,40 +609,40 @@
         if (yych == '|') goto yy226;
     }
 yy65:
-#line 185 "strict_cpp.re"
+#line 195 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OR); }
-#line 611 "strict_cpp_re.inc"
+#line 615 "strict_cpp_re.inc"
 yy66:
     ++YYCURSOR;
-#line 188 "strict_cpp.re"
+#line 198 "strict_cpp.re"
     { BOOST_WAVE_RET(T_COMPL); }
-#line 616 "strict_cpp_re.inc"
+#line 620 "strict_cpp_re.inc"
 yy68:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy223;
-#line 191 "strict_cpp.re"
+#line 201 "strict_cpp.re"
     { BOOST_WAVE_RET(T_NOT); }
-#line 622 "strict_cpp_re.inc"
+#line 626 "strict_cpp_re.inc"
 yy70:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy221;
-#line 193 "strict_cpp.re"
+#line 203 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ASSIGN); }
-#line 628 "strict_cpp_re.inc"
+#line 632 "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"
+#line 205 "strict_cpp.re"
     { BOOST_WAVE_RET(T_GREATER); }
-#line 637 "strict_cpp_re.inc"
+#line 641 "strict_cpp_re.inc"
 yy74:
     ++YYCURSOR;
-#line 227 "strict_cpp.re"
+#line 237 "strict_cpp.re"
     { BOOST_WAVE_RET(T_COMMA); }
-#line 642 "strict_cpp_re.inc"
+#line 646 "strict_cpp_re.inc"
 yy76:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -668,9 +672,9 @@
     if (yych == 'U') goto yy186;
     if (yych == 'u') goto yy185;
 yy79:
-#line 299 "strict_cpp.re"
+#line 309 "strict_cpp.re"
     { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-#line 674 "strict_cpp_re.inc"
+#line 678 "strict_cpp_re.inc"
 yy80:
     yyaccept = 5;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -699,29 +703,29 @@
     yych = *YYCURSOR;
     goto yy95;
 yy83:
-#line 279 "strict_cpp.re"
+#line 289 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SPACE); }
-#line 705 "strict_cpp_re.inc"
+#line 709 "strict_cpp_re.inc"
 yy84:
     yych = *++YYCURSOR;
     goto yy95;
 yy85:
     ++YYCURSOR;
 yy86:
-#line 282 "strict_cpp.re"
+#line 292 "strict_cpp.re"
     {
         s->line++;
         cursor.column = 1;
         BOOST_WAVE_RET(T_NEWLINE);
     }
-#line 718 "strict_cpp_re.inc"
+#line 722 "strict_cpp_re.inc"
 yy87:
     yych = *++YYCURSOR;
     if (yych == '\n') goto yy93;
     goto yy86;
 yy88:
     ++YYCURSOR;
-#line 289 "strict_cpp.re"
+#line 299 "strict_cpp.re"
     {
         if (s->eof && cursor != s->eof)
         {
@@ -731,20 +735,20 @@
         }
         BOOST_WAVE_RET(T_EOF);
     }
-#line 735 "strict_cpp_re.inc"
+#line 739 "strict_cpp_re.inc"
 yy90:
     yych = *++YYCURSOR;
     goto yy79;
 yy91:
     ++YYCURSOR;
-#line 302 "strict_cpp.re"
+#line 312 "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"
+#line 752 "strict_cpp_re.inc"
 yy93:
     yych = *++YYCURSOR;
     goto yy86;
@@ -771,10 +775,10 @@
     goto yy100;
 yy98:
     YYCURSOR = YYMARKER;
- if (yyaccept <= 51) {
- if (yyaccept <= 25) {
- if (yyaccept <= 12) {
- if (yyaccept <= 6) {
+ if (yyaccept <= 56) {
+ if (yyaccept <= 28) {
+ if (yyaccept <= 14) {
+ if (yyaccept <= 7) {
                     if (yyaccept <= 3) {
                         if (yyaccept <= 1) {
                             if (yyaccept <= 0) {
@@ -797,113 +801,113 @@
                                 goto yy79;
                             }
                         } else {
- goto yy102;
+ if (yyaccept <= 6) {
+ goto yy102;
+ } else {
+ goto yy152;
+ }
                         }
                     }
                 } else {
- if (yyaccept <= 9) {
- if (yyaccept <= 8) {
- if (yyaccept <= 7) {
- goto yy152;
- } else {
+ if (yyaccept <= 11) {
+ if (yyaccept <= 9) {
+ if (yyaccept <= 8) {
                                 goto yy239;
+ } else {
+ goto yy243;
                             }
                         } else {
- goto yy243;
- }
- } else {
- if (yyaccept <= 11) {
                             if (yyaccept <= 10) {
                                 goto yy279;
                             } else {
                                 goto yy294;
                             }
+ }
+ } else {
+ if (yyaccept <= 13) {
+ if (yyaccept <= 12) {
+ goto yy389;
+ } else {
+ goto yy417;
+ }
                         } else {
- goto yy389;
+ goto yy421;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 19) {
- if (yyaccept <= 16) {
- if (yyaccept <= 14) {
- if (yyaccept <= 13) {
- goto yy417;
- } else {
- goto yy421;
- }
- } else {
+ if (yyaccept <= 21) {
+ if (yyaccept <= 18) {
+ if (yyaccept <= 16) {
                             if (yyaccept <= 15) {
                                 goto yy425;
                             } else {
                                 goto yy456;
                             }
- }
- } else {
- if (yyaccept <= 18) {
+ } else {
                             if (yyaccept <= 17) {
                                 goto yy462;
                             } else {
                                 goto yy470;
                             }
+ }
+ } else {
+ if (yyaccept <= 20) {
+ if (yyaccept <= 19) {
+ goto yy478;
+ } else {
+ goto yy483;
+ }
                         } else {
- goto yy478;
+ goto yy488;
                         }
                     }
                 } else {
- if (yyaccept <= 22) {
- if (yyaccept <= 21) {
- if (yyaccept <= 20) {
- goto yy483;
+ if (yyaccept <= 25) {
+ if (yyaccept <= 23) {
+ if (yyaccept <= 22) {
+ goto yy491;
                             } else {
- goto yy488;
+ goto yy501;
                             }
                         } else {
- goto yy491;
+ if (yyaccept <= 24) {
+ goto yy507;
+ } else {
+ goto yy510;
+ }
                         }
                     } else {
- if (yyaccept <= 24) {
- if (yyaccept <= 23) {
- goto yy501;
+ if (yyaccept <= 27) {
+ if (yyaccept <= 26) {
+ goto yy517;
                             } else {
- goto yy507;
+ goto yy524;
                             }
                         } else {
- goto yy510;
+ goto yy526;
                         }
                     }
                 }
             }
         } else {
- if (yyaccept <= 38) {
- if (yyaccept <= 32) {
- if (yyaccept <= 29) {
- if (yyaccept <= 27) {
- if (yyaccept <= 26) {
- goto yy517;
+ if (yyaccept <= 42) {
+ if (yyaccept <= 35) {
+ if (yyaccept <= 32) {
+ if (yyaccept <= 30) {
+ if (yyaccept <= 29) {
+ goto yy528;
                             } else {
- goto yy524;
+ goto yy530;
                             }
                         } else {
- if (yyaccept <= 28) {
- goto yy526;
+ if (yyaccept <= 31) {
+ goto yy536;
                             } else {
- goto yy528;
+ goto yy542;
                             }
                         }
                     } 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;
@@ -913,7 +917,9 @@
                         } else {
                             goto yy560;
                         }
- } else {
+ }
+ } else {
+ if (yyaccept <= 39) {
                         if (yyaccept <= 37) {
                             if (yyaccept <= 36) {
                                 goto yy566;
@@ -921,263 +927,301 @@
                                 goto yy574;
                             }
                         } else {
- goto yy577;
+ if (yyaccept <= 38) {
+ goto yy577;
+ } else {
+ goto yy590;
+ }
+ }
+ } else {
+ if (yyaccept <= 41) {
+ if (yyaccept <= 40) {
+ goto yy592;
+ } else {
+ goto yy595;
+ }
+ } else {
+ goto yy598;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 45) {
- if (yyaccept <= 42) {
- if (yyaccept <= 40) {
- if (yyaccept <= 39) {
- goto yy590;
+ if (yyaccept <= 49) {
+ if (yyaccept <= 46) {
+ if (yyaccept <= 44) {
+ if (yyaccept <= 43) {
+ goto yy600;
                             } else {
- goto yy592;
+ goto yy606;
                             }
                         } else {
- if (yyaccept <= 41) {
- goto yy595;
+ if (yyaccept <= 45) {
+ goto yy615;
                             } else {
- goto yy598;
+ goto yy617;
                             }
                         }
                     } else {
- if (yyaccept <= 44) {
- if (yyaccept <= 43) {
- goto yy600;
+ if (yyaccept <= 48) {
+ if (yyaccept <= 47) {
+ goto yy624;
                             } else {
- goto yy605;
+ goto yy633;
                             }
                         } else {
- goto yy607;
+ goto yy639;
                         }
                     }
                 } else {
- if (yyaccept <= 48) {
- if (yyaccept <= 47) {
- if (yyaccept <= 46) {
- goto yy614;
+ if (yyaccept <= 53) {
+ if (yyaccept <= 51) {
+ if (yyaccept <= 50) {
+ goto yy643;
                             } else {
- goto yy623;
+ goto yy650;
                             }
                         } else {
- goto yy629;
+ if (yyaccept <= 52) {
+ goto yy656;
+ } else {
+ goto yy662;
+ }
                         }
                     } else {
- if (yyaccept <= 50) {
- if (yyaccept <= 49) {
- goto yy633;
+ if (yyaccept <= 55) {
+ if (yyaccept <= 54) {
+ goto yy666;
                             } else {
- goto yy639;
+ goto yy670;
                             }
                         } else {
- goto yy645;
+ goto yy678;
                         }
                     }
                 }
             }
         }
     } else {
- if (yyaccept <= 77) {
- if (yyaccept <= 64) {
- if (yyaccept <= 58) {
- if (yyaccept <= 55) {
- if (yyaccept <= 53) {
- if (yyaccept <= 52) {
- goto yy649;
+ if (yyaccept <= 85) {
+ if (yyaccept <= 71) {
+ if (yyaccept <= 64) {
+ if (yyaccept <= 60) {
+ if (yyaccept <= 58) {
+ if (yyaccept <= 57) {
+ goto yy692;
                             } else {
- goto yy653;
+ goto yy698;
                             }
                         } else {
- if (yyaccept <= 54) {
- goto yy661;
+ if (yyaccept <= 59) {
+ goto yy705;
                             } else {
- goto yy675;
+ goto yy714;
                             }
                         }
                     } else {
- if (yyaccept <= 57) {
- if (yyaccept <= 56) {
- goto yy681;
+ if (yyaccept <= 62) {
+ if (yyaccept <= 61) {
+ goto yy719;
                             } else {
- goto yy688;
+ goto yy722;
                             }
                         } else {
- goto yy697;
+ if (yyaccept <= 63) {
+ goto yy726;
+ } else {
+ goto yy733;
+ }
                         }
                     }
                 } else {
- if (yyaccept <= 61) {
- if (yyaccept <= 60) {
- if (yyaccept <= 59) {
- goto yy702;
+ if (yyaccept <= 68) {
+ if (yyaccept <= 66) {
+ if (yyaccept <= 65) {
+ goto yy743;
                             } else {
- goto yy705;
+ goto yy746;
                             }
                         } else {
- goto yy709;
+ if (yyaccept <= 67) {
+ goto yy750;
+ } else {
+ goto yy756;
+ }
                         }
                     } else {
- if (yyaccept <= 63) {
- if (yyaccept <= 62) {
- goto yy716;
+ if (yyaccept <= 70) {
+ if (yyaccept <= 69) {
+ goto yy758;
                             } else {
- goto yy721;
+ goto yy766;
                             }
                         } else {
- goto yy725;
+ goto yy773;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 71) {
- if (yyaccept <= 68) {
- if (yyaccept <= 66) {
- if (yyaccept <= 65) {
- goto yy727;
+ if (yyaccept <= 78) {
+ if (yyaccept <= 75) {
+ if (yyaccept <= 73) {
+ if (yyaccept <= 72) {
+ goto yy777;
                             } else {
- goto yy735;
+ goto yy779;
                             }
                         } else {
- if (yyaccept <= 67) {
- goto yy742;
+ if (yyaccept <= 74) {
+ goto yy784;
                             } else {
- goto yy746;
+ goto yy788;
                             }
                         }
                     } else {
- if (yyaccept <= 70) {
- if (yyaccept <= 69) {
- goto yy748;
+ if (yyaccept <= 77) {
+ if (yyaccept <= 76) {
+ goto yy793;
                             } else {
- goto yy753;
+ goto yy797;
                             }
                         } else {
- goto yy757;
+ goto yy806;
                         }
                     }
                 } else {
- if (yyaccept <= 74) {
- if (yyaccept <= 73) {
- if (yyaccept <= 72) {
- goto yy762;
+ if (yyaccept <= 82) {
+ if (yyaccept <= 80) {
+ if (yyaccept <= 79) {
+ goto yy808;
                             } else {
- goto yy766;
+ goto yy812;
                             }
                         } else {
- goto yy775;
+ if (yyaccept <= 81) {
+ goto yy816;
+ } else {
+ goto yy825;
+ }
                         }
                     } else {
- if (yyaccept <= 76) {
- if (yyaccept <= 75) {
- goto yy777;
+ if (yyaccept <= 84) {
+ if (yyaccept <= 83) {
+ goto yy830;
                             } else {
- goto yy781;
+ goto yy835;
                             }
                         } else {
- goto yy785;
+ goto yy838;
                         }
                     }
                 }
             }
         } else {
- if (yyaccept <= 90) {
- if (yyaccept <= 84) {
- if (yyaccept <= 81) {
- if (yyaccept <= 79) {
- if (yyaccept <= 78) {
- goto yy794;
+ if (yyaccept <= 99) {
+ if (yyaccept <= 92) {
+ if (yyaccept <= 89) {
+ if (yyaccept <= 87) {
+ if (yyaccept <= 86) {
+ goto yy841;
                             } else {
- goto yy799;
+ goto yy844;
                             }
                         } else {
- if (yyaccept <= 80) {
- goto yy804;
+ if (yyaccept <= 88) {
+ goto yy856;
                             } else {
- goto yy807;
+ goto yy861;
                             }
                         }
                     } else {
- if (yyaccept <= 83) {
- if (yyaccept <= 82) {
- goto yy810;
+ if (yyaccept <= 91) {
+ if (yyaccept <= 90) {
+ goto yy868;
                             } else {
- goto yy813;
+ goto yy873;
                             }
                         } else {
- goto yy825;
+ goto yy879;
                         }
                     }
                 } else {
- if (yyaccept <= 87) {
- if (yyaccept <= 86) {
- if (yyaccept <= 85) {
- goto yy830;
+ if (yyaccept <= 96) {
+ if (yyaccept <= 94) {
+ if (yyaccept <= 93) {
+ goto yy888;
                             } else {
- goto yy836;
+ goto yy895;
                             }
                         } else {
- goto yy841;
+ if (yyaccept <= 95) {
+ goto yy897;
+ } else {
+ goto yy903;
+ }
                         }
                     } else {
- if (yyaccept <= 89) {
- if (yyaccept <= 88) {
- goto yy850;
+ if (yyaccept <= 98) {
+ if (yyaccept <= 97) {
+ goto yy908;
                             } else {
- goto yy857;
+ goto yy912;
                             }
                         } else {
- goto yy859;
+ goto yy915;
                         }
                     }
                 }
             } else {
- if (yyaccept <= 97) {
- if (yyaccept <= 94) {
- if (yyaccept <= 92) {
- if (yyaccept <= 91) {
- goto yy865;
+ if (yyaccept <= 106) {
+ if (yyaccept <= 103) {
+ if (yyaccept <= 101) {
+ if (yyaccept <= 100) {
+ goto yy921;
                             } else {
- goto yy869;
+ goto yy925;
                             }
                         } else {
- if (yyaccept <= 93) {
- goto yy872;
+ if (yyaccept <= 102) {
+ goto yy930;
                             } else {
- goto yy877;
+ goto yy932;
                             }
                         }
                     } else {
- if (yyaccept <= 96) {
- if (yyaccept <= 95) {
- goto yy879;
+ if (yyaccept <= 105) {
+ if (yyaccept <= 104) {
+ goto yy939;
                             } else {
- goto yy886;
+ goto yy942;
                             }
                         } else {
- goto yy889;
+ goto yy947;
                         }
                     }
                 } else {
- if (yyaccept <= 100) {
- if (yyaccept <= 99) {
- if (yyaccept <= 98) {
- goto yy894;
+ if (yyaccept <= 110) {
+ if (yyaccept <= 108) {
+ if (yyaccept <= 107) {
+ goto yy950;
                             } else {
- goto yy897;
+ goto yy957;
                             }
                         } else {
- goto yy903;
+ if (yyaccept <= 109) {
+ goto yy959;
+ } else {
+ goto yy961;
+ }
                         }
                     } else {
- if (yyaccept <= 102) {
- if (yyaccept <= 101) {
- goto yy905;
+ if (yyaccept <= 112) {
+ if (yyaccept <= 111) {
+ goto yy965;
                             } else {
- goto yy907;
+ goto yy972;
                             }
                         } else {
- goto yy911;
+ goto yy974;
                         }
                     }
                 }
@@ -1244,9 +1288,9 @@
 yy101:
     ++YYCURSOR;
 yy102:
-#line 249 "strict_cpp.re"
+#line 259 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STRINGLIT); }
-#line 1250 "strict_cpp_re.inc"
+#line 1294 "strict_cpp_re.inc"
 yy103:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -2091,9 +2135,9 @@
 yy151:
     ++YYCURSOR;
 yy152:
-#line 246 "strict_cpp.re"
+#line 256 "strict_cpp.re"
     { BOOST_WAVE_RET(T_CHARLIT); }
-#line 2097 "strict_cpp_re.inc"
+#line 2141 "strict_cpp_re.inc"
 yy153:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3021,61 +3065,61 @@
     goto yy142;
 yy215:
     ++YYCURSOR;
-#line 217 "strict_cpp.re"
+#line 227 "strict_cpp.re"
     { BOOST_WAVE_RET(T_GREATEREQUAL); }
-#line 3027 "strict_cpp_re.inc"
+#line 3071 "strict_cpp_re.inc"
 yy217:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy219;
-#line 210 "strict_cpp.re"
+#line 220 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-#line 3033 "strict_cpp_re.inc"
+#line 3077 "strict_cpp_re.inc"
 yy219:
     ++YYCURSOR;
-#line 211 "strict_cpp.re"
+#line 221 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-#line 3038 "strict_cpp_re.inc"
+#line 3082 "strict_cpp_re.inc"
 yy221:
     ++YYCURSOR;
-#line 213 "strict_cpp.re"
+#line 223 "strict_cpp.re"
     { BOOST_WAVE_RET(T_EQUAL); }
-#line 3043 "strict_cpp_re.inc"
+#line 3087 "strict_cpp_re.inc"
 yy223:
     ++YYCURSOR;
-#line 214 "strict_cpp.re"
+#line 224 "strict_cpp.re"
     { BOOST_WAVE_RET(T_NOTEQUAL); }
-#line 3048 "strict_cpp_re.inc"
+#line 3092 "strict_cpp_re.inc"
 yy225:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy230;
     goto yy98;
 yy226:
     ++YYCURSOR;
-#line 220 "strict_cpp.re"
+#line 230 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OROR); }
-#line 3057 "strict_cpp_re.inc"
+#line 3101 "strict_cpp_re.inc"
 yy228:
     ++YYCURSOR;
-#line 206 "strict_cpp.re"
+#line 216 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ORASSIGN); }
-#line 3062 "strict_cpp_re.inc"
+#line 3106 "strict_cpp_re.inc"
 yy230:
     yych = *++YYCURSOR;
     if (yych != '!') goto yy98;
     ++YYCURSOR;
-#line 222 "strict_cpp.re"
+#line 232 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3069 "strict_cpp_re.inc"
+#line 3113 "strict_cpp_re.inc"
 yy233:
     ++YYCURSOR;
-#line 218 "strict_cpp.re"
+#line 228 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ANDAND); }
-#line 3074 "strict_cpp_re.inc"
+#line 3118 "strict_cpp_re.inc"
 yy235:
     ++YYCURSOR;
-#line 204 "strict_cpp.re"
+#line 214 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ANDASSIGN); }
-#line 3079 "strict_cpp_re.inc"
+#line 3123 "strict_cpp_re.inc"
 yy237:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3100,9 +3144,9 @@
         }
     }
 yy239:
-#line 182 "strict_cpp.re"
+#line 192 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-#line 3106 "strict_cpp_re.inc"
+#line 3150 "strict_cpp_re.inc"
 yy240:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3118,38 +3162,38 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy243:
-#line 202 "strict_cpp.re"
+#line 212 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-#line 3124 "strict_cpp_re.inc"
+#line 3168 "strict_cpp_re.inc"
 yy244:
     ++YYCURSOR;
-#line 201 "strict_cpp.re"
+#line 211 "strict_cpp.re"
     { BOOST_WAVE_RET(T_XORASSIGN); }
-#line 3129 "strict_cpp_re.inc"
+#line 3173 "strict_cpp_re.inc"
 yy246:
     ++YYCURSOR;
-#line 198 "strict_cpp.re"
+#line 208 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STARASSIGN); }
-#line 3134 "strict_cpp_re.inc"
+#line 3178 "strict_cpp_re.inc"
 yy248:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '*') goto yy254;
-#line 238 "strict_cpp.re"
+#line 248 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ARROW); }
-#line 3140 "strict_cpp_re.inc"
+#line 3184 "strict_cpp_re.inc"
 yy250:
     ++YYCURSOR;
-#line 226 "strict_cpp.re"
+#line 236 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MINUSMINUS); }
-#line 3145 "strict_cpp_re.inc"
+#line 3189 "strict_cpp_re.inc"
 yy252:
     ++YYCURSOR;
-#line 197 "strict_cpp.re"
+#line 207 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MINUSASSIGN); }
-#line 3150 "strict_cpp_re.inc"
+#line 3194 "strict_cpp_re.inc"
 yy254:
     ++YYCURSOR;
-#line 229 "strict_cpp.re"
+#line 239 "strict_cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -3159,17 +3203,17 @@
                 BOOST_WAVE_RET(T_ARROWSTAR);
             }
         }
-#line 3163 "strict_cpp_re.inc"
+#line 3207 "strict_cpp_re.inc"
 yy256:
     ++YYCURSOR;
-#line 225 "strict_cpp.re"
+#line 235 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PLUSPLUS); }
-#line 3168 "strict_cpp_re.inc"
+#line 3212 "strict_cpp_re.inc"
 yy258:
     ++YYCURSOR;
-#line 196 "strict_cpp.re"
+#line 206 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PLUSASSIGN); }
-#line 3173 "strict_cpp_re.inc"
+#line 3217 "strict_cpp_re.inc"
 yy260:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
@@ -3265,16 +3309,16 @@
     goto yy98;
 yy272:
     ++YYCURSOR;
-#line 143 "strict_cpp.re"
+#line 153 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND); }
-#line 3271 "strict_cpp_re.inc"
+#line 3315 "strict_cpp_re.inc"
 yy274:
     yych = *++YYCURSOR;
     if (yych != '=') goto yy98;
     ++YYCURSOR;
-#line 144 "strict_cpp.re"
+#line 154 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3278 "strict_cpp_re.inc"
+#line 3322 "strict_cpp_re.inc"
 yy277:
     yych = *++YYCURSOR;
     if (yych == 'c') goto yy289;
@@ -3285,9 +3329,9 @@
     if (yych == 'd') goto yy281;
     if (yych == 'n') goto yy280;
 yy279:
-#line 261 "strict_cpp.re"
+#line 271 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_IF); }
-#line 3291 "strict_cpp_re.inc"
+#line 3335 "strict_cpp_re.inc"
 yy280:
     yych = *++YYCURSOR;
     if (yych == 'd') goto yy285;
@@ -3298,18 +3342,18 @@
     yych = *++YYCURSOR;
     if (yych != 'f') goto yy98;
     ++YYCURSOR;
-#line 262 "strict_cpp.re"
+#line 272 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_IFDEF); }
-#line 3304 "strict_cpp_re.inc"
+#line 3348 "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"
+#line 273 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_IFNDEF); }
-#line 3313 "strict_cpp_re.inc"
+#line 3357 "strict_cpp_re.inc"
 yy289:
     yych = *++YYCURSOR;
     if (yych != 'l') goto yy98;
@@ -3324,9 +3368,9 @@
     if (yych == '_') goto yy295;
     goto yy297;
 yy294:
-#line 259 "strict_cpp.re"
+#line 269 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_INCLUDE); }
-#line 3330 "strict_cpp_re.inc"
+#line 3374 "strict_cpp_re.inc"
 yy295:
     yych = *++YYCURSOR;
     if (yych == 'n') goto yy316;
@@ -3380,9 +3424,9 @@
     }
     if (yych <= '!') goto yy98;
     ++YYCURSOR;
-#line 256 "strict_cpp.re"
+#line 266 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_QHEADER); }
-#line 3386 "strict_cpp_re.inc"
+#line 3430 "strict_cpp_re.inc"
 yy305:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3393,9 +3437,9 @@
     }
     if (yych <= '=') goto yy98;
     ++YYCURSOR;
-#line 253 "strict_cpp.re"
+#line 263 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_HHEADER); }
-#line 3399 "strict_cpp_re.inc"
+#line 3443 "strict_cpp_re.inc"
 yy309:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3457,9 +3501,9 @@
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     ++YYCURSOR;
-#line 267 "strict_cpp.re"
+#line 277 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_DEFINE); }
-#line 3463 "strict_cpp_re.inc"
+#line 3507 "strict_cpp_re.inc"
 yy325:
     yych = *++YYCURSOR;
     if (yych != 'd') goto yy98;
@@ -3468,18 +3512,18 @@
     yych = *++YYCURSOR;
     if (yych != 'f') goto yy98;
     ++YYCURSOR;
-#line 268 "strict_cpp.re"
+#line 278 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_UNDEF); }
-#line 3474 "strict_cpp_re.inc"
+#line 3518 "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"
+#line 279 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_LINE); }
-#line 3483 "strict_cpp_re.inc"
+#line 3527 "strict_cpp_re.inc"
 yy334:
     yych = *++YYCURSOR;
     if (yych != 'a') goto yy98;
@@ -3490,9 +3534,9 @@
     yych = *++YYCURSOR;
     if (yych != 'a') goto yy98;
     ++YYCURSOR;
-#line 271 "strict_cpp.re"
+#line 281 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_PRAGMA); }
-#line 3496 "strict_cpp_re.inc"
+#line 3540 "strict_cpp_re.inc"
 yy340:
     yych = *++YYCURSOR;
     if (yych != 'r') goto yy98;
@@ -3505,9 +3549,9 @@
     yych = *++YYCURSOR;
     if (yych != 'g') goto yy98;
     ++YYCURSOR;
-#line 273 "strict_cpp.re"
+#line 283 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_WARNING); }
-#line 3511 "strict_cpp_re.inc"
+#line 3555 "strict_cpp_re.inc"
 yy347:
     yych = *++YYCURSOR;
     if (yych != 'g') goto yy98;
@@ -3518,9 +3562,9 @@
     yych = *++YYCURSOR;
     if (yych != 'n') goto yy98;
     ++YYCURSOR;
-#line 275 "strict_cpp.re"
+#line 285 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-#line 3524 "strict_cpp_re.inc"
+#line 3568 "strict_cpp_re.inc"
 yy353:
     yych = *++YYCURSOR;
     if (yych == 'i') goto yy371;
@@ -3538,9 +3582,9 @@
     yych = *++YYCURSOR;
     if (yych != 'r') goto yy98;
     ++YYCURSOR;
-#line 270 "strict_cpp.re"
+#line 280 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_ERROR); }
-#line 3544 "strict_cpp_re.inc"
+#line 3588 "strict_cpp_re.inc"
 yy360:
     yych = *++YYCURSOR;
     if (yych == 'i') goto yy361;
@@ -3562,14 +3606,14 @@
     yych = *++YYCURSOR;
     if (yych != 'n') goto yy98;
     ++YYCURSOR;
-#line 276 "strict_cpp.re"
+#line 286 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-#line 3568 "strict_cpp_re.inc"
+#line 3612 "strict_cpp_re.inc"
 yy369:
     ++YYCURSOR;
-#line 266 "strict_cpp.re"
+#line 276 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_ENDIF); }
-#line 3573 "strict_cpp_re.inc"
+#line 3617 "strict_cpp_re.inc"
 yy371:
     yych = *++YYCURSOR;
     if (yych == 'f') goto yy375;
@@ -3578,14 +3622,14 @@
     yych = *++YYCURSOR;
     if (yych != 'e') goto yy98;
     ++YYCURSOR;
-#line 264 "strict_cpp.re"
+#line 274 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_ELSE); }
-#line 3584 "strict_cpp_re.inc"
+#line 3628 "strict_cpp_re.inc"
 yy375:
     ++YYCURSOR;
-#line 265 "strict_cpp.re"
+#line 275 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_ELIF); }
-#line 3589 "strict_cpp_re.inc"
+#line 3633 "strict_cpp_re.inc"
 yy377:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
@@ -3641,7 +3685,7 @@
     }
 yy384:
     ++YYCURSOR;
-#line 155 "strict_cpp.re"
+#line 165 "strict_cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -3651,12 +3695,12 @@
                 BOOST_WAVE_RET(T_COLON_COLON);
             }
         }
-#line 3655 "strict_cpp_re.inc"
+#line 3699 "strict_cpp_re.inc"
 yy386:
     ++YYCURSOR;
-#line 139 "strict_cpp.re"
+#line 149 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-#line 3660 "strict_cpp_re.inc"
+#line 3704 "strict_cpp_re.inc"
 yy388:
     yyaccept = 12;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3694,52 +3738,52 @@
         }
     }
 yy389:
-#line 141 "strict_cpp.re"
+#line 151 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_ALT); }
-#line 3700 "strict_cpp_re.inc"
+#line 3744 "strict_cpp_re.inc"
 yy390:
     ++YYCURSOR;
-#line 200 "strict_cpp.re"
+#line 210 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-#line 3705 "strict_cpp_re.inc"
+#line 3749 "strict_cpp_re.inc"
 yy392:
     ++YYCURSOR;
-#line 133 "strict_cpp.re"
+#line 143 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-#line 3710 "strict_cpp_re.inc"
+#line 3754 "strict_cpp_re.inc"
 yy394:
     yych = *++YYCURSOR;
     if (yych != ':') goto yy98;
     ++YYCURSOR;
-#line 147 "strict_cpp.re"
+#line 157 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-#line 3717 "strict_cpp_re.inc"
+#line 3761 "strict_cpp_re.inc"
 yy397:
     ++YYCURSOR;
-#line 216 "strict_cpp.re"
+#line 226 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LESSEQUAL); }
-#line 3722 "strict_cpp_re.inc"
+#line 3766 "strict_cpp_re.inc"
 yy399:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy405;
-#line 209 "strict_cpp.re"
+#line 219 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SHIFTLEFT); }
-#line 3728 "strict_cpp_re.inc"
+#line 3772 "strict_cpp_re.inc"
 yy401:
     ++YYCURSOR;
-#line 136 "strict_cpp.re"
+#line 146 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-#line 3733 "strict_cpp_re.inc"
+#line 3777 "strict_cpp_re.inc"
 yy403:
     ++YYCURSOR;
-#line 130 "strict_cpp.re"
+#line 140 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-#line 3738 "strict_cpp_re.inc"
+#line 3782 "strict_cpp_re.inc"
 yy405:
     ++YYCURSOR;
-#line 212 "strict_cpp.re"
+#line 222 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-#line 3743 "strict_cpp_re.inc"
+#line 3787 "strict_cpp_re.inc"
 yy407:
     yych = *++YYCURSOR;
     switch (yych) {
@@ -3756,24 +3800,24 @@
     }
 yy408:
     ++YYCURSOR;
-#line 129 "strict_cpp.re"
+#line 139 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-#line 3762 "strict_cpp_re.inc"
+#line 3806 "strict_cpp_re.inc"
 yy410:
     ++YYCURSOR;
-#line 132 "strict_cpp.re"
+#line 142 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-#line 3767 "strict_cpp_re.inc"
+#line 3811 "strict_cpp_re.inc"
 yy412:
     ++YYCURSOR;
-#line 135 "strict_cpp.re"
+#line 145 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-#line 3772 "strict_cpp_re.inc"
+#line 3816 "strict_cpp_re.inc"
 yy414:
     ++YYCURSOR;
-#line 138 "strict_cpp.re"
+#line 148 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-#line 3777 "strict_cpp_re.inc"
+#line 3821 "strict_cpp_re.inc"
 yy416:
     yyaccept = 13;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3812,15 +3856,15 @@
         }
     }
 yy417:
-#line 142 "strict_cpp.re"
+#line 152 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-#line 3818 "strict_cpp_re.inc"
+#line 3862 "strict_cpp_re.inc"
 yy418:
     ++YYCURSOR;
     if ((yych = *YYCURSOR) == '=') goto yy434;
-#line 181 "strict_cpp.re"
+#line 191 "strict_cpp.re"
     { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-#line 3824 "strict_cpp_re.inc"
+#line 3868 "strict_cpp_re.inc"
 yy420:
     yyaccept = 14;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3831,65 +3875,65 @@
         if (yych == '|') goto yy427;
     }
 yy421:
-#line 187 "strict_cpp.re"
+#line 197 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-#line 3837 "strict_cpp_re.inc"
+#line 3881 "strict_cpp_re.inc"
 yy422:
     ++YYCURSOR;
-#line 189 "strict_cpp.re"
+#line 199 "strict_cpp.re"
     { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-#line 3842 "strict_cpp_re.inc"
+#line 3886 "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"
+#line 249 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-#line 3851 "strict_cpp_re.inc"
+#line 3895 "strict_cpp_re.inc"
 yy426:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy431;
     goto yy98;
 yy427:
     ++YYCURSOR;
-#line 221 "strict_cpp.re"
+#line 231 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3860 "strict_cpp_re.inc"
+#line 3904 "strict_cpp_re.inc"
 yy429:
     ++YYCURSOR;
-#line 208 "strict_cpp.re"
+#line 218 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-#line 3865 "strict_cpp_re.inc"
+#line 3909 "strict_cpp_re.inc"
 yy431:
     yych = *++YYCURSOR;
     if (yych != '!') goto yy98;
     ++YYCURSOR;
-#line 224 "strict_cpp.re"
+#line 234 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3872 "strict_cpp_re.inc"
+#line 3916 "strict_cpp_re.inc"
 yy434:
     ++YYCURSOR;
-#line 203 "strict_cpp.re"
+#line 213 "strict_cpp.re"
     { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-#line 3877 "strict_cpp_re.inc"
+#line 3921 "strict_cpp_re.inc"
 yy436:
     yych = *++YYCURSOR;
     if (yych == '?') goto yy439;
     goto yy98;
 yy437:
     ++YYCURSOR;
-#line 145 "strict_cpp.re"
+#line 155 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3886 "strict_cpp_re.inc"
+#line 3930 "strict_cpp_re.inc"
 yy439:
     yych = *++YYCURSOR;
     if (yych != '=') goto yy98;
     ++YYCURSOR;
-#line 146 "strict_cpp.re"
+#line 156 "strict_cpp.re"
     { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3893 "strict_cpp_re.inc"
+#line 3937 "strict_cpp_re.inc"
 yy442:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3963,9 +4007,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy456:
-#line 120 "strict_cpp.re"
+#line 130 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-#line 3969 "strict_cpp_re.inc"
+#line 4013 "strict_cpp_re.inc"
 yy457:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -3988,9 +4032,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy462:
-#line 125 "strict_cpp.re"
+#line 135 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-#line 3994 "strict_cpp_re.inc"
+#line 4038 "strict_cpp_re.inc"
 yy463:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4018,9 +4062,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy470:
-#line 119 "strict_cpp.re"
+#line 129 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-#line 4024 "strict_cpp_re.inc"
+#line 4068 "strict_cpp_re.inc"
 yy471:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4048,9 +4092,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy478:
-#line 117 "strict_cpp.re"
+#line 127 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-#line 4054 "strict_cpp_re.inc"
+#line 4098 "strict_cpp_re.inc"
 yy479:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4069,9 +4113,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy483:
-#line 118 "strict_cpp.re"
+#line 128 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-#line 4075 "strict_cpp_re.inc"
+#line 4119 "strict_cpp_re.inc"
 yy484:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4090,9 +4134,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy488:
-#line 116 "strict_cpp.re"
+#line 126 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-#line 4096 "strict_cpp_re.inc"
+#line 4140 "strict_cpp_re.inc"
 yy489:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4105,9 +4149,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy491:
-#line 126 "strict_cpp.re"
+#line 136 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-#line 4111 "strict_cpp_re.inc"
+#line 4155 "strict_cpp_re.inc"
 yy492:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4150,9 +4194,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy501:
-#line 124 "strict_cpp.re"
+#line 134 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-#line 4156 "strict_cpp_re.inc"
+#line 4200 "strict_cpp_re.inc"
 yy502:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4174,9 +4218,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy507:
-#line 122 "strict_cpp.re"
+#line 132 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-#line 4180 "strict_cpp_re.inc"
+#line 4224 "strict_cpp_re.inc"
 yy508:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4189,9 +4233,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy510:
-#line 121 "strict_cpp.re"
+#line 131 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-#line 4195 "strict_cpp_re.inc"
+#line 4239 "strict_cpp_re.inc"
 yy511:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4216,9 +4260,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy517:
-#line 123 "strict_cpp.re"
+#line 133 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-#line 4222 "strict_cpp_re.inc"
+#line 4266 "strict_cpp_re.inc"
 yy518:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4257,9 +4301,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy524:
-#line 112 "strict_cpp.re"
+#line 122 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-#line 4263 "strict_cpp_re.inc"
+#line 4307 "strict_cpp_re.inc"
 yy525:
     yyaccept = 28;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4269,9 +4313,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy526:
-#line 115 "strict_cpp.re"
+#line 125 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-#line 4275 "strict_cpp_re.inc"
+#line 4319 "strict_cpp_re.inc"
 yy527:
     yyaccept = 29;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4281,9 +4325,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy528:
-#line 114 "strict_cpp.re"
+#line 124 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-#line 4287 "strict_cpp_re.inc"
+#line 4331 "strict_cpp_re.inc"
 yy529:
     yyaccept = 30;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4293,9 +4337,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy530:
-#line 113 "strict_cpp.re"
+#line 123 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-#line 4299 "strict_cpp_re.inc"
+#line 4343 "strict_cpp_re.inc"
 yy531:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4319,9 +4363,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy536:
-#line 110 "strict_cpp.re"
+#line 120 "strict_cpp.re"
     { BOOST_WAVE_RET(T_WHILE); }
-#line 4325 "strict_cpp_re.inc"
+#line 4369 "strict_cpp_re.inc"
 yy537:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4343,9 +4387,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy542:
-#line 109 "strict_cpp.re"
+#line 119 "strict_cpp.re"
     { BOOST_WAVE_RET(T_WCHART); }
-#line 4349 "strict_cpp_re.inc"
+#line 4393 "strict_cpp_re.inc"
 yy543:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4386,9 +4430,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy552:
-#line 108 "strict_cpp.re"
+#line 118 "strict_cpp.re"
     { BOOST_WAVE_RET(T_VOLATILE); }
-#line 4392 "strict_cpp_re.inc"
+#line 4436 "strict_cpp_re.inc"
 yy553:
     yyaccept = 34;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4398,9 +4442,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy554:
-#line 107 "strict_cpp.re"
+#line 117 "strict_cpp.re"
     { BOOST_WAVE_RET(T_VOID); }
-#line 4404 "strict_cpp_re.inc"
+#line 4448 "strict_cpp_re.inc"
 yy555:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4422,9 +4466,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy560:
-#line 106 "strict_cpp.re"
+#line 116 "strict_cpp.re"
     { BOOST_WAVE_RET(T_VIRTUAL); }
-#line 4428 "strict_cpp_re.inc"
+#line 4472 "strict_cpp_re.inc"
 yy561:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4449,9 +4493,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy566:
-#line 105 "strict_cpp.re"
+#line 115 "strict_cpp.re"
     { BOOST_WAVE_RET(T_USING); }
-#line 4455 "strict_cpp_re.inc"
+#line 4499 "strict_cpp_re.inc"
 yy567:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4481,9 +4525,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy574:
-#line 104 "strict_cpp.re"
+#line 114 "strict_cpp.re"
     { BOOST_WAVE_RET(T_UNSIGNED); }
-#line 4487 "strict_cpp_re.inc"
+#line 4531 "strict_cpp_re.inc"
 yy575:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4496,13 +4540,13 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy577:
-#line 103 "strict_cpp.re"
+#line 113 "strict_cpp.re"
     { BOOST_WAVE_RET(T_UNION); }
-#line 4502 "strict_cpp_re.inc"
+#line 4546 "strict_cpp_re.inc"
 yy578:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy608;
+ if (yych == 'm') goto yy618;
     goto yy195;
 yy579:
     yyaccept = 1;
@@ -4559,9 +4603,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy590:
-#line 102 "strict_cpp.re"
+#line 112 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TYPENAME); }
-#line 4565 "strict_cpp_re.inc"
+#line 4609 "strict_cpp_re.inc"
 yy591:
     yyaccept = 40;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4571,9 +4615,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy592:
-#line 101 "strict_cpp.re"
+#line 111 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TYPEID); }
-#line 4577 "strict_cpp_re.inc"
+#line 4621 "strict_cpp_re.inc"
 yy593:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4586,9 +4630,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy595:
-#line 100 "strict_cpp.re"
+#line 110 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TYPEDEF); }
-#line 4592 "strict_cpp_re.inc"
+#line 4636 "strict_cpp_re.inc"
 yy596:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4603,9 +4647,9 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy598:
-#line 99 "strict_cpp.re"
+#line 109 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TRY); }
-#line 4609 "strict_cpp_re.inc"
+#line 4653 "strict_cpp_re.inc"
 yy599:
     yyaccept = 43;
     yych = *(YYMARKER = ++YYCURSOR);
@@ -4615,18 +4659,26 @@
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
 yy600:
-#line 98 "strict_cpp.re"
+#line 108 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TRUE); }
-#line 4621 "strict_cpp_re.inc"
+#line 4665 "strict_cpp_re.inc"
 yy601:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 's') goto yy606;
+ if (yych == 's') goto yy616;
     goto yy195;
 yy602:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'o') goto yy195;
+ if (yych == 'e') goto yy603;
+ if (yych == 'o') goto yy604;
+ goto yy195;
+yy603:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'a') goto yy607;
+ goto yy195;
+yy604:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'w') goto yy195;
@@ -4637,11 +4689,32 @@
     }
     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:
+#line 107 "strict_cpp.re"
+ { BOOST_WAVE_RET(T_THROW); }
+#line 4696 "strict_cpp_re.inc"
+yy607:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'd') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != '_') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'l') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'o') 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 = 45;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
@@ -4649,11 +4722,23 @@
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy607:
-#line 96 "strict_cpp.re"
+yy615:
+#line 106 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_THREADLOCAL : T_IDENTIFIER); }
+#line 4729 "strict_cpp_re.inc"
+yy616:
+ yyaccept = 46;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy617:
+#line 105 "strict_cpp.re"
     { BOOST_WAVE_RET(T_THIS); }
-#line 4656 "strict_cpp_re.inc"
-yy608:
+#line 4741 "strict_cpp_re.inc"
+yy618:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'p') goto yy195;
@@ -4669,35 +4754,35 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 46;
+ yyaccept = 47;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy614:
-#line 95 "strict_cpp.re"
+yy624:
+#line 104 "strict_cpp.re"
     { BOOST_WAVE_RET(T_TEMPLATE); }
-#line 4683 "strict_cpp_re.inc"
-yy615:
+#line 4768 "strict_cpp_re.inc"
+yy625:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy650;
+ if (yych == 'o') goto yy667;
     goto yy195;
-yy616:
+yy626:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'g') goto yy640;
- if (yych == 'z') goto yy641;
+ if (yych == 'g') goto yy657;
+ if (yych == 'z') goto yy658;
     goto yy195;
-yy617:
+yy627:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy624;
- if (yych == 'r') goto yy625;
+ if (yych == 'a') goto yy634;
+ if (yych == 'r') goto yy635;
     goto yy195;
-yy618:
+yy628:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -4710,23 +4795,23 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'h') goto yy195;
- yyaccept = 47;
+ yyaccept = 48;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy623:
-#line 94 "strict_cpp.re"
+yy633:
+#line 103 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SWITCH); }
-#line 4724 "strict_cpp_re.inc"
-yy624:
+#line 4809 "strict_cpp_re.inc"
+yy634:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy630;
+ if (yych == 't') goto yy640;
     goto yy195;
-yy625:
+yy635:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -4736,29 +4821,29 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 48;
+ yyaccept = 49;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy629:
-#line 93 "strict_cpp.re"
+yy639:
+#line 102 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STRUCT); }
-#line 4750 "strict_cpp_re.inc"
-yy630:
+#line 4835 "strict_cpp_re.inc"
+yy640:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
- yyaccept = 49;
+ yyaccept = 50;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'Z') {
         if (yych <= '>') {
- if (yych <= '/') goto yy633;
+ if (yych <= '/') goto yy643;
             if (yych <= '9') goto yy194;
         } else {
             if (yych <= '?') goto yy197;
@@ -4768,19 +4853,27 @@
         if (yych <= '^') {
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy634;
- if (yych <= '`') goto yy633;
+ if (yych <= '_') goto yy644;
+ if (yych <= '`') goto yy643;
             if (yych <= 'z') goto yy194;
         }
     }
-yy633:
-#line 91 "strict_cpp.re"
+yy643:
+#line 99 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STATIC); }
-#line 4780 "strict_cpp_re.inc"
-yy634:
+#line 4865 "strict_cpp_re.inc"
+yy644:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'c') goto yy195;
+ if (yych == 'a') goto yy645;
+ if (yych == 'c') goto yy646;
+ goto yy195;
+yy645:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 's') goto yy651;
+ goto yy195;
+yy646:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
@@ -4790,23 +4883,47 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 50;
+ yyaccept = 51;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy639:
-#line 92 "strict_cpp.re"
+yy650:
+#line 100 "strict_cpp.re"
     { BOOST_WAVE_RET(T_STATICCAST); }
-#line 4804 "strict_cpp_re.inc"
-yy640:
+#line 4897 "strict_cpp_re.inc"
+yy651:
+ 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 != 'r') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 't') goto yy195;
+ yyaccept = 52;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy656:
+#line 101 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_STATICASSERT : T_IDENTIFIER); }
+#line 4921 "strict_cpp_re.inc"
+yy657:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy646;
+ if (yych == 'n') goto yy663;
     goto yy195;
-yy641:
+yy658:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -4816,73 +4933,73 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'f') goto yy195;
- yyaccept = 51;
+ yyaccept = 53;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy645:
-#line 90 "strict_cpp.re"
+yy662:
+#line 98 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SIZEOF); }
-#line 4830 "strict_cpp_re.inc"
-yy646:
+#line 4947 "strict_cpp_re.inc"
+yy663:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 52;
+ yyaccept = 54;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy649:
-#line 89 "strict_cpp.re"
+yy666:
+#line 97 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SIGNED); }
-#line 4848 "strict_cpp_re.inc"
-yy650:
+#line 4965 "strict_cpp_re.inc"
+yy667:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 53;
+ yyaccept = 55;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy653:
-#line 88 "strict_cpp.re"
+yy670:
+#line 96 "strict_cpp.re"
     { BOOST_WAVE_RET(T_SHORT); }
-#line 4866 "strict_cpp_re.inc"
-yy654:
+#line 4983 "strict_cpp_re.inc"
+yy671:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'h') {
         if (yych != 'g') goto yy195;
     } else {
- if (yych <= 'i') goto yy656;
- if (yych == 't') goto yy657;
+ if (yych <= 'i') goto yy673;
+ if (yych == 't') goto yy674;
         goto yy195;
     }
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy676;
+ if (yych == 'i') goto yy693;
     goto yy195;
-yy656:
+yy673:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy662;
+ if (yych == 'n') goto yy679;
     goto yy195;
-yy657:
+yy674:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -4892,18 +5009,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
- yyaccept = 54;
+ yyaccept = 56;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy661:
-#line 87 "strict_cpp.re"
+yy678:
+#line 95 "strict_cpp.re"
     { BOOST_WAVE_RET(T_RETURN); }
-#line 4906 "strict_cpp_re.inc"
-yy662:
+#line 5023 "strict_cpp_re.inc"
+yy679:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -4940,18 +5057,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 55;
+ yyaccept = 57;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy675:
-#line 86 "strict_cpp.re"
+yy692:
+#line 94 "strict_cpp.re"
     { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-#line 4954 "strict_cpp_re.inc"
-yy676:
+#line 5071 "strict_cpp_re.inc"
+yy693:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 's') goto yy195;
@@ -4964,24 +5081,24 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 56;
+ yyaccept = 58;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy681:
-#line 85 "strict_cpp.re"
+yy698:
+#line 93 "strict_cpp.re"
     { BOOST_WAVE_RET(T_REGISTER); }
-#line 4978 "strict_cpp_re.inc"
-yy682:
+#line 5095 "strict_cpp_re.inc"
+yy699:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy689;
- if (yych == 'o') goto yy690;
+ if (yych == 'i') goto yy706;
+ if (yych == 'o') goto yy707;
     goto yy195;
-yy683:
+yy700:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'b') goto yy195;
@@ -4994,23 +5111,23 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
- yyaccept = 57;
+ yyaccept = 59;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy688:
-#line 84 "strict_cpp.re"
+yy705:
+#line 92 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PUBLIC); }
-#line 5008 "strict_cpp_re.inc"
-yy689:
+#line 5125 "strict_cpp_re.inc"
+yy706:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'v') goto yy698;
+ if (yych == 'v') goto yy715;
     goto yy195;
-yy690:
+yy707:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -5029,18 +5146,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 58;
+ yyaccept = 60;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy697:
-#line 83 "strict_cpp.re"
+yy714:
+#line 91 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PROTECTED); }
-#line 5043 "strict_cpp_re.inc"
-yy698:
+#line 5160 "strict_cpp_re.inc"
+yy715:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
@@ -5050,28 +5167,28 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 59;
+ yyaccept = 61;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy702:
-#line 82 "strict_cpp.re"
+yy719:
+#line 90 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PRIVATE); }
-#line 5064 "strict_cpp_re.inc"
-yy703:
+#line 5181 "strict_cpp_re.inc"
+yy720:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy710;
+ if (yych == 'e') goto yy727;
     goto yy195;
-yy704:
- yyaccept = 60;
+yy721:
+ yyaccept = 62;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'Z') {
         if (yych <= '>') {
- if (yych <= '/') goto yy705;
+ if (yych <= '/') goto yy722;
             if (yych <= '9') goto yy194;
         } else {
             if (yych <= '?') goto yy197;
@@ -5081,34 +5198,34 @@
         if (yych <= '^') {
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy706;
- if (yych <= '`') goto yy705;
+ if (yych <= '_') goto yy723;
+ if (yych <= '`') goto yy722;
             if (yych <= 'z') goto yy194;
         }
     }
-yy705:
-#line 223 "strict_cpp.re"
+yy722:
+#line 233 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-#line 5093 "strict_cpp_re.inc"
-yy706:
+#line 5210 "strict_cpp_re.inc"
+yy723:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 61;
+ yyaccept = 63;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy709:
-#line 207 "strict_cpp.re"
+yy726:
+#line 217 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-#line 5111 "strict_cpp_re.inc"
-yy710:
+#line 5228 "strict_cpp_re.inc"
+yy727:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
@@ -5124,36 +5241,71 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 62;
+ yyaccept = 64;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy716:
-#line 81 "strict_cpp.re"
+yy733:
+#line 89 "strict_cpp.re"
     { BOOST_WAVE_RET(T_OPERATOR); }
-#line 5138 "strict_cpp_re.inc"
-yy717:
+#line 5255 "strict_cpp_re.inc"
+yy734:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy728;
+ if (yych == 'm') goto yy759;
     goto yy195;
-yy718:
+yy735:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'w') goto yy726;
+ if (yych == 'w') goto yy757;
     goto yy195;
-yy719:
+yy736:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'e') goto yy744;
+ if (yych == 't') goto yy745;
+ goto yy195;
+yy737:
+ 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 != 'p') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 63;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'r') goto yy195;
+ yyaccept = 65;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy743:
+#line 88 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NULLPTR : T_IDENTIFIER); }
+#line 5298 "strict_cpp_re.inc"
+yy744:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'x') goto yy751;
+ goto yy195;
+yy745:
+ yyaccept = 66;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'Z') {
         if (yych <= '>') {
- if (yych <= '/') goto yy721;
+ if (yych <= '/') goto yy746;
             if (yych <= '9') goto yy194;
         } else {
             if (yych <= '?') goto yy197;
@@ -5163,46 +5315,70 @@
         if (yych <= '^') {
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy722;
- if (yych <= '`') goto yy721;
+ if (yych <= '_') goto yy747;
+ if (yych <= '`') goto yy746;
             if (yych <= 'z') goto yy194;
         }
     }
-yy721:
-#line 192 "strict_cpp.re"
+yy746:
+#line 202 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-#line 5175 "strict_cpp_re.inc"
-yy722:
+#line 5327 "strict_cpp_re.inc"
+yy747:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 64;
+ yyaccept = 67;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy725:
-#line 215 "strict_cpp.re"
+yy750:
+#line 225 "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;
+#line 5345 "strict_cpp_re.inc"
+yy751:
+ 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 = 68;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy727:
-#line 80 "strict_cpp.re"
+yy756:
+#line 87 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_NOEXCEPT : T_IDENTIFIER); }
+#line 5369 "strict_cpp_re.inc"
+yy757:
+ yyaccept = 69;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy758:
+#line 86 "strict_cpp.re"
     { BOOST_WAVE_RET(T_NEW); }
-#line 5205 "strict_cpp_re.inc"
-yy728:
+#line 5381 "strict_cpp_re.inc"
+yy759:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5221,18 +5397,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 66;
+ yyaccept = 70;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy735:
-#line 79 "strict_cpp.re"
+yy766:
+#line 85 "strict_cpp.re"
     { BOOST_WAVE_RET(T_NAMESPACE); }
-#line 5235 "strict_cpp_re.inc"
-yy736:
+#line 5411 "strict_cpp_re.inc"
+yy767:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
@@ -5248,94 +5424,94 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 67;
+ yyaccept = 71;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy742:
-#line 78 "strict_cpp.re"
+yy773:
+#line 84 "strict_cpp.re"
     { BOOST_WAVE_RET(T_MUTABLE); }
-#line 5262 "strict_cpp_re.inc"
-yy743:
+#line 5438 "strict_cpp_re.inc"
+yy774:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'g') goto yy195;
- yyaccept = 68;
+ yyaccept = 72;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy746:
-#line 77 "strict_cpp.re"
+yy777:
+#line 83 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LONG); }
-#line 5280 "strict_cpp_re.inc"
-yy747:
- yyaccept = 69;
+#line 5456 "strict_cpp_re.inc"
+yy778:
+ yyaccept = 73;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy748:
-#line 73 "strict_cpp.re"
+yy779:
+#line 79 "strict_cpp.re"
     { BOOST_WAVE_RET(T_IF); }
-#line 5292 "strict_cpp_re.inc"
-yy749:
+#line 5468 "strict_cpp_re.inc"
+yy780:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy758;
+ if (yych == 'p') goto yy789;
     goto yy195;
-yy750:
+yy781:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy751;
- if (yych == 't') goto yy752;
+ if (yych == 'l') goto yy782;
+ if (yych == 't') goto yy783;
     goto yy195;
-yy751:
+yy782:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy754;
+ if (yych == 'i') goto yy785;
     goto yy195;
-yy752:
- yyaccept = 70;
+yy783:
+ yyaccept = 74;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy753:
-#line 76 "strict_cpp.re"
+yy784:
+#line 82 "strict_cpp.re"
     { BOOST_WAVE_RET(T_INT); }
-#line 5320 "strict_cpp_re.inc"
-yy754:
+#line 5496 "strict_cpp_re.inc"
+yy785:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 71;
+ yyaccept = 75;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy757:
-#line 75 "strict_cpp.re"
+yy788:
+#line 81 "strict_cpp.re"
     { BOOST_WAVE_RET(T_INLINE); }
-#line 5338 "strict_cpp_re.inc"
-yy758:
+#line 5514 "strict_cpp_re.inc"
+yy789:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
@@ -5345,51 +5521,51 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 72;
+ yyaccept = 76;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy762:
-#line 74 "strict_cpp.re"
+yy793:
+#line 80 "strict_cpp.re"
     { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-#line 5359 "strict_cpp_re.inc"
-yy763:
+#line 5535 "strict_cpp_re.inc"
+yy794:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
- yyaccept = 73;
+ yyaccept = 77;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy766:
-#line 72 "strict_cpp.re"
+yy797:
+#line 78 "strict_cpp.re"
     { BOOST_WAVE_RET(T_GOTO); }
-#line 5377 "strict_cpp_re.inc"
-yy767:
+#line 5553 "strict_cpp_re.inc"
+yy798:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy782;
+ if (yych == 'l') goto yy813;
     goto yy195;
-yy768:
+yy799:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy778;
+ if (yych == 'o') goto yy809;
     goto yy195;
-yy769:
+yy800:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'r') goto yy776;
+ if (yych == 'r') goto yy807;
     goto yy195;
-yy770:
+yy801:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -5402,88 +5578,88 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 74;
+ yyaccept = 78;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy775:
-#line 71 "strict_cpp.re"
+yy806:
+#line 77 "strict_cpp.re"
     { BOOST_WAVE_RET(T_FRIEND); }
-#line 5416 "strict_cpp_re.inc"
-yy776:
- yyaccept = 75;
+#line 5592 "strict_cpp_re.inc"
+yy807:
+ yyaccept = 79;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy777:
-#line 70 "strict_cpp.re"
+yy808:
+#line 76 "strict_cpp.re"
     { BOOST_WAVE_RET(T_FOR); }
-#line 5428 "strict_cpp_re.inc"
-yy778:
+#line 5604 "strict_cpp_re.inc"
+yy809:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'a') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 76;
+ yyaccept = 80;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy781:
-#line 69 "strict_cpp.re"
+yy812:
+#line 75 "strict_cpp.re"
     { BOOST_WAVE_RET(T_FLOAT); }
-#line 5446 "strict_cpp_re.inc"
-yy782:
+#line 5622 "strict_cpp_re.inc"
+yy813:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 's') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 77;
+ yyaccept = 81;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy785:
-#line 68 "strict_cpp.re"
+yy816:
+#line 74 "strict_cpp.re"
     { BOOST_WAVE_RET(T_FALSE); }
-#line 5464 "strict_cpp_re.inc"
-yy786:
+#line 5640 "strict_cpp_re.inc"
+yy817:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 's') goto yy808;
+ if (yych == 's') goto yy839;
     goto yy195;
-yy787:
+yy818:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'u') goto yy805;
+ if (yych == 'u') goto yy836;
     goto yy195;
-yy788:
+yy819:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'p') goto yy789;
- if (yych == 't') goto yy790;
+ if (yych == 'p') goto yy820;
+ if (yych == 't') goto yy821;
     goto yy195;
-yy789:
+yy820:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'l') goto yy795;
- if (yych == 'o') goto yy796;
+ if (yych == 'l') goto yy826;
+ if (yych == 'o') goto yy827;
     goto yy195;
-yy790:
+yy821:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5493,41 +5669,41 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
- yyaccept = 78;
+ yyaccept = 82;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy794:
-#line 67 "strict_cpp.re"
+yy825:
+#line 73 "strict_cpp.re"
     { BOOST_WAVE_RET(T_EXTERN); }
-#line 5507 "strict_cpp_re.inc"
-yy795:
+#line 5683 "strict_cpp_re.inc"
+yy826:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'i') goto yy800;
+ if (yych == 'i') goto yy831;
     goto yy195;
-yy796:
+yy827:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 79;
+ yyaccept = 83;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy799:
-#line 66 "strict_cpp.re"
+yy830:
+#line 72 "strict_cpp.re"
     { BOOST_WAVE_RET(T_EXPORT); }
-#line 5530 "strict_cpp_re.inc"
-yy800:
+#line 5706 "strict_cpp_re.inc"
+yy831:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
@@ -5537,63 +5713,68 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 80;
+ yyaccept = 84;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy804:
-#line 65 "strict_cpp.re"
+yy835:
+#line 71 "strict_cpp.re"
     { BOOST_WAVE_RET(T_EXPLICIT); }
-#line 5551 "strict_cpp_re.inc"
-yy805:
+#line 5727 "strict_cpp_re.inc"
+yy836:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'm') goto yy195;
- yyaccept = 81;
+ yyaccept = 85;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy807:
-#line 64 "strict_cpp.re"
+yy838:
+#line 70 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ENUM); }
-#line 5566 "strict_cpp_re.inc"
-yy808:
+#line 5742 "strict_cpp_re.inc"
+yy839:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 82;
+ yyaccept = 86;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy810:
-#line 63 "strict_cpp.re"
+yy841:
+#line 69 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ELSE); }
-#line 5581 "strict_cpp_re.inc"
-yy811:
+#line 5757 "strict_cpp_re.inc"
+yy842:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'f') goto yy831;
- if (yych == 'l') goto yy832;
- goto yy195;
-yy812:
- yyaccept = 83;
+ if (yych <= 'e') {
+ if (yych == 'c') goto yy862;
+ goto yy195;
+ } else {
+ if (yych <= 'f') goto yy863;
+ if (yych == 'l') goto yy864;
+ goto yy195;
+ }
+yy843:
+ yyaccept = 87;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= '[') {
         if (yych <= '>') {
- if (yych <= '/') goto yy813;
+ if (yych <= '/') goto yy844;
             if (yych <= '9') goto yy194;
         } else {
             if (yych <= '?') goto yy197;
- if (yych <= '@') goto yy813;
+ if (yych <= '@') goto yy844;
             if (yych <= 'Z') goto yy194;
         }
     } else {
@@ -5601,15 +5782,15 @@
             if (yych <= '\\') goto yy196;
             if (yych == '_') goto yy194;
         } else {
- if (yych == 'u') goto yy826;
+ if (yych == 'u') goto yy857;
             if (yych <= 'z') goto yy194;
         }
     }
-yy813:
-#line 60 "strict_cpp.re"
+yy844:
+#line 66 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DO); }
-#line 5612 "strict_cpp_re.inc"
-yy814:
+#line 5793 "strict_cpp_re.inc"
+yy845:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'n') goto yy195;
@@ -5640,18 +5821,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 84;
+ yyaccept = 88;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy825:
-#line 62 "strict_cpp.re"
+yy856:
+#line 68 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DYNAMICCAST); }
-#line 5654 "strict_cpp_re.inc"
-yy826:
+#line 5835 "strict_cpp_re.inc"
+yy857:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'b') goto yy195;
@@ -5661,23 +5842,28 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 85;
+ yyaccept = 89;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy830:
-#line 61 "strict_cpp.re"
+yy861:
+#line 67 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DOUBLE); }
-#line 5675 "strict_cpp_re.inc"
-yy831:
+#line 5856 "strict_cpp_re.inc"
+yy862:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'l') goto yy874;
+ goto yy195;
+yy863:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy837;
+ if (yych == 'a') goto yy869;
     goto yy195;
-yy832:
+yy864:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5687,18 +5873,18 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 86;
+ yyaccept = 90;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy836:
-#line 59 "strict_cpp.re"
+yy868:
+#line 65 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DELETE); }
-#line 5701 "strict_cpp_re.inc"
-yy837:
+#line 5887 "strict_cpp_re.inc"
+yy869:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'u') goto yy195;
@@ -5708,70 +5894,94 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 87;
+ yyaccept = 91;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy841:
-#line 58 "strict_cpp.re"
+yy873:
+#line 64 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DEFAULT); }
-#line 5722 "strict_cpp_re.inc"
-yy842:
+#line 5908 "strict_cpp_re.inc"
+yy874:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 't') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'y') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'p') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'e') goto yy195;
+ yyaccept = 92;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy879:
+#line 63 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_DECLTYPE : T_IDENTIFIER); }
+#line 5932 "strict_cpp_re.inc"
+yy880:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'r') goto yy195;
- if (yych <= 's') goto yy873;
- if (yych <= 't') goto yy874;
+ if (yych <= 's') goto yy926;
+ if (yych <= 't') goto yy927;
     goto yy195;
-yy843:
+yy881:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy870;
+ if (yych == 'a') goto yy913;
     goto yy195;
-yy844:
+yy882:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy866;
+ if (yych == 'a') goto yy909;
     goto yy195;
-yy845:
+yy883:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'l') goto yy195;
- if (yych <= 'm') goto yy847;
+ if (yych <= 'm') goto yy885;
     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;
+ if (yych <= 's') goto yy889;
+ if (yych <= 't') goto yy890;
     goto yy195;
-yy847:
+yy885:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'p') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'l') goto yy195;
- yyaccept = 88;
+ yyaccept = 93;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy850:
-#line 190 "strict_cpp.re"
+yy888:
+#line 200 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-#line 5769 "strict_cpp_re.inc"
-yy851:
+#line 5979 "strict_cpp_re.inc"
+yy889:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy858;
+ if (yych == 't') goto yy896;
     goto yy195;
-yy852:
+yy890:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'i') goto yy195;
@@ -5784,144 +5994,231 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
- yyaccept = 89;
+ yyaccept = 94;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy857:
-#line 57 "strict_cpp.re"
+yy895:
+#line 62 "strict_cpp.re"
     { BOOST_WAVE_RET(T_CONTINUE); }
-#line 5798 "strict_cpp_re.inc"
-yy858:
- yyaccept = 90;
+#line 6008 "strict_cpp_re.inc"
+yy896:
+ yyaccept = 95;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '[') {
+ if (yych <= '>') {
+ if (yych <= '/') goto yy897;
+ if (yych <= '9') goto yy194;
+ } else {
+ if (yych <= '?') goto yy197;
+ if (yych <= '@') goto yy897;
+ if (yych <= 'Z') goto yy194;
+ }
+ } else {
+ if (yych <= '`') {
+ if (yych <= '\\') goto yy196;
+ if (yych == '_') goto yy898;
+ } else {
+ if (yych == 'e') goto yy899;
+ if (yych <= 'z') goto yy194;
+ }
+ }
+yy897:
+#line 59 "strict_cpp.re"
+ { BOOST_WAVE_RET(T_CONST); }
+#line 6033 "strict_cpp_re.inc"
+yy898:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'c') goto yy904;
+ goto yy195;
+yy899:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'x') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'p') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'r') goto yy195;
+ yyaccept = 96;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy903:
+#line 60 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CONSTEXPR : T_IDENTIFIER); }
+#line 6059 "strict_cpp_re.inc"
+yy904:
+ 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 = 97;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy908:
+#line 61 "strict_cpp.re"
+ { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 6080 "strict_cpp_re.inc"
+yy909:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy195;
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 's') goto yy195;
+ yyaccept = 98;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy912:
+#line 58 "strict_cpp.re"
+ { BOOST_WAVE_RET(T_CLASS); }
+#line 6098 "strict_cpp_re.inc"
+yy913:
+ yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych <= 'Z') {
- if (yych <= '>') {
- if (yych <= '/') goto yy859;
- if (yych <= '9') goto yy194;
+ if (yych != 'r') goto yy195;
+ yyaccept = 99;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych <= '?') {
+ if (yych <= '2') {
+ if (yych <= '/') goto yy915;
+ if (yych == '1') goto yy916;
+ goto yy194;
         } else {
- if (yych <= '?') goto yy197;
- if (yych >= 'A') goto yy194;
+ if (yych <= '3') goto yy917;
+ if (yych <= '9') goto yy194;
+ if (yych >= '?') goto yy197;
         }
     } else {
- if (yych <= '^') {
- if (yych == '\\') goto yy196;
+ if (yych <= '\\') {
+ if (yych <= '@') goto yy915;
+ if (yych <= 'Z') goto yy194;
+ if (yych >= '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy860;
- if (yych <= '`') goto yy859;
- if (yych <= 'z') goto yy194;
+ if (yych <= '_') {
+ if (yych >= '_') goto yy194;
+ } else {
+ if (yych <= '`') goto yy915;
+ if (yych <= 'z') goto yy194;
+ }
         }
     }
-yy859:
+yy915:
 #line 55 "strict_cpp.re"
- { BOOST_WAVE_RET(T_CONST); }
-#line 5822 "strict_cpp_re.inc"
-yy860:
+ { BOOST_WAVE_RET(T_CHAR); }
+#line 6132 "strict_cpp_re.inc"
+yy916:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'c') goto yy195;
+ if (yych == '6') goto yy922;
+ goto yy195;
+yy917:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'a') goto yy195;
+ if (yych != '2') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 's') goto yy195;
+ if (yych != '_') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
- yyaccept = 91;
+ yyaccept = 100;
     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;
+yy921:
+#line 57 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR32_T : T_IDENTIFIER); }
+#line 6158 "strict_cpp_re.inc"
+yy922:
     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:
+ if (yych != '_') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych != 'r') goto yy195;
- yyaccept = 93;
+ if (yych != 't') goto yy195;
+ yyaccept = 101;
     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:
+yy925:
+#line 56 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_CHAR16_T : T_IDENTIFIER); }
+#line 6176 "strict_cpp_re.inc"
+yy926:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'e') goto yy878;
+ if (yych == 'e') goto yy931;
     goto yy195;
-yy874:
+yy927:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'c') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'h') goto yy195;
- yyaccept = 94;
+ yyaccept = 102;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy877:
-#line 52 "strict_cpp.re"
+yy930:
+#line 54 "strict_cpp.re"
     { BOOST_WAVE_RET(T_CATCH); }
-#line 5902 "strict_cpp_re.inc"
-yy878:
- yyaccept = 95;
+#line 6199 "strict_cpp_re.inc"
+yy931:
+ yyaccept = 103;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy879:
-#line 51 "strict_cpp.re"
+yy932:
+#line 53 "strict_cpp.re"
     { BOOST_WAVE_RET(T_CASE); }
-#line 5914 "strict_cpp_re.inc"
-yy880:
+#line 6211 "strict_cpp_re.inc"
+yy933:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 't') goto yy890;
+ if (yych == 't') goto yy943;
     goto yy195;
-yy881:
+yy934:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'o') goto yy887;
+ if (yych == 'o') goto yy940;
     goto yy195;
-yy882:
+yy935:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
@@ -5931,119 +6228,124 @@
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'k') goto yy195;
- yyaccept = 96;
+ yyaccept = 104;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy886:
-#line 50 "strict_cpp.re"
+yy939:
+#line 52 "strict_cpp.re"
     { BOOST_WAVE_RET(T_BREAK); }
-#line 5945 "strict_cpp_re.inc"
-yy887:
+#line 6242 "strict_cpp_re.inc"
+yy940:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'l') goto yy195;
- yyaccept = 97;
+ yyaccept = 105;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy889:
-#line 49 "strict_cpp.re"
+yy942:
+#line 51 "strict_cpp.re"
     { BOOST_WAVE_RET(T_BOOL); }
-#line 5960 "strict_cpp_re.inc"
-yy890:
+#line 6257 "strict_cpp_re.inc"
+yy943:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'a') goto yy891;
- if (yych == 'o') goto yy892;
+ if (yych == 'a') goto yy944;
+ if (yych == 'o') goto yy945;
     goto yy195;
-yy891:
+yy944:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'n') goto yy895;
+ if (yych == 'n') goto yy948;
     goto yy195;
-yy892:
+yy945:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'r') goto yy195;
- yyaccept = 98;
+ yyaccept = 106;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy894:
-#line 186 "strict_cpp.re"
+yy947:
+#line 196 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-#line 5986 "strict_cpp_re.inc"
-yy895:
+#line 6283 "strict_cpp_re.inc"
+yy948:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'd') goto yy195;
- yyaccept = 99;
+ yyaccept = 107;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy897:
-#line 184 "strict_cpp.re"
+yy950:
+#line 194 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-#line 6001 "strict_cpp_re.inc"
-yy898:
+#line 6298 "strict_cpp_re.inc"
+yy951:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'd') goto yy906;
+ if (yych == 'i') goto yy966;
     goto yy195;
-yy899:
+yy952:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
- if (yych == 'm') goto yy904;
+ if (yych == 'd') goto yy960;
     goto yy195;
-yy900:
+yy953:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 'm') goto yy958;
+ goto yy195;
+yy954:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 't') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'o') goto yy195;
- yyaccept = 100;
+ yyaccept = 108;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy903:
-#line 48 "strict_cpp.re"
+yy957:
+#line 50 "strict_cpp.re"
     { BOOST_WAVE_RET(T_AUTO); }
-#line 6029 "strict_cpp_re.inc"
-yy904:
- yyaccept = 101;
+#line 6331 "strict_cpp_re.inc"
+yy958:
+ yyaccept = 109;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy905:
-#line 47 "strict_cpp.re"
+yy959:
+#line 49 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ASM); }
-#line 6041 "strict_cpp_re.inc"
-yy906:
- yyaccept = 102;
+#line 6343 "strict_cpp_re.inc"
+yy960:
+ yyaccept = 110;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych <= 'Z') {
         if (yych <= '>') {
- if (yych <= '/') goto yy907;
+ if (yych <= '/') goto yy961;
             if (yych <= '9') goto yy194;
         } else {
             if (yych <= '?') goto yy197;
@@ -6053,36 +6355,80 @@
         if (yych <= '^') {
             if (yych == '\\') goto yy196;
         } else {
- if (yych <= '_') goto yy908;
- if (yych <= '`') goto yy907;
+ if (yych <= '_') goto yy962;
+ if (yych <= '`') goto yy961;
             if (yych <= 'z') goto yy194;
         }
     }
-yy907:
-#line 219 "strict_cpp.re"
+yy961:
+#line 229 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-#line 6065 "strict_cpp_re.inc"
-yy908:
+#line 6367 "strict_cpp_re.inc"
+yy962:
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'e') goto yy195;
     yyaccept = 1;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yych != 'q') goto yy195;
- yyaccept = 103;
+ yyaccept = 111;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 4) {
         goto yy194;
     }
     if (yych == '?') goto yy197;
     if (yych == '\\') goto yy196;
-yy911:
-#line 205 "strict_cpp.re"
+yy965:
+#line 215 "strict_cpp.re"
     { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-#line 6083 "strict_cpp_re.inc"
-yy912:
+#line 6385 "strict_cpp_re.inc"
+yy966:
+ 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 == 'a') goto yy969;
+ if (yych == 'o') goto yy970;
+ goto yy195;
+yy969:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych == 's') goto yy973;
+ goto yy195;
+yy970:
+ yyaccept = 1;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yych != 'f') goto yy195;
+ yyaccept = 112;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy972:
+#line 48 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNOF : T_IDENTIFIER); }
+#line 6417 "strict_cpp_re.inc"
+yy973:
+ yyaccept = 113;
+ yych = *(YYMARKER = ++YYCURSOR);
+ if (yybm[0+yych] & 4) {
+ goto yy194;
+ }
+ if (yych == '?') goto yy197;
+ if (yych == '\\') goto yy196;
+yy974:
+#line 47 "strict_cpp.re"
+ { BOOST_WAVE_RET(s->act_in_cpp0x_mode ? T_ALIGNAS : T_IDENTIFIER); }
+#line 6429 "strict_cpp_re.inc"
+yy975:
     ++YYCURSOR;
-#line 166 "strict_cpp.re"
+#line 176 "strict_cpp.re"
     {
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
@@ -6092,71 +6438,71 @@
                 BOOST_WAVE_RET(T_DOTSTAR);
             }
         }
-#line 6096 "strict_cpp_re.inc"
-yy914:
+#line 6442 "strict_cpp_re.inc"
+yy977:
     yych = *++YYCURSOR;
- if (yych == '.') goto yy916;
+ if (yych == '.') goto yy979;
     goto yy98;
-yy915:
+yy978:
     yych = *++YYCURSOR;
     goto yy7;
-yy916:
+yy979:
     ++YYCURSOR;
-#line 152 "strict_cpp.re"
+#line 162 "strict_cpp.re"
     { BOOST_WAVE_RET(T_ELLIPSIS); }
-#line 6108 "strict_cpp_re.inc"
-yy918:
+#line 6454 "strict_cpp_re.inc"
+yy981:
     ++YYCURSOR;
-#line 199 "strict_cpp.re"
+#line 209 "strict_cpp.re"
     { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-#line 6113 "strict_cpp_re.inc"
-yy920:
+#line 6459 "strict_cpp_re.inc"
+yy983:
     ++YYCURSOR;
 #line 44 "strict_cpp.re"
     { goto cppcomment; }
-#line 6118 "strict_cpp_re.inc"
-yy922:
+#line 6464 "strict_cpp_re.inc"
+yy985:
     ++YYCURSOR;
 #line 43 "strict_cpp.re"
     { goto ccomment; }
-#line 6123 "strict_cpp_re.inc"
+#line 6469 "strict_cpp_re.inc"
 }
-#line 308 "strict_cpp.re"
+#line 318 "strict_cpp.re"
 
 
 ccomment:
 
-#line 6130 "strict_cpp_re.inc"
+#line 6476 "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;
+ if (yych <= 0x00) goto yy996;
+ goto yy998;
         } else {
- if (yych == '\n') goto yy928;
- goto yy931;
+ if (yych == '\n') goto yy991;
+ goto yy994;
         }
     } else {
         if (yych <= 0x1F) {
- if (yych <= '\r') goto yy930;
- goto yy935;
+ if (yych <= '\r') goto yy993;
+ goto yy998;
         } else {
- if (yych != '*') goto yy932;
+ if (yych != '*') goto yy995;
         }
     }
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == '/') goto yy938;
-yy927:
-#line 323 "strict_cpp.re"
+ if ((yych = *YYCURSOR) == '/') goto yy1001;
+yy990:
+#line 333 "strict_cpp.re"
     { goto ccomment; }
-#line 6156 "strict_cpp_re.inc"
-yy928:
+#line 6502 "strict_cpp_re.inc"
+yy991:
     ++YYCURSOR;
-yy929:
-#line 315 "strict_cpp.re"
+yy992:
+#line 325 "strict_cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
         /*s->tok = cursor; */
@@ -6164,20 +6510,20 @@
         cursor.column = 1;
         goto ccomment;
     }
-#line 6168 "strict_cpp_re.inc"
-yy930:
+#line 6514 "strict_cpp_re.inc"
+yy993:
     yych = *++YYCURSOR;
- if (yych == '\n') goto yy937;
- goto yy929;
-yy931:
+ if (yych == '\n') goto yy1000;
+ goto yy992;
+yy994:
     yych = *++YYCURSOR;
- goto yy927;
-yy932:
+ goto yy990;
+yy995:
     yych = *++YYCURSOR;
- goto yy927;
-yy933:
+ goto yy990;
+yy996:
     ++YYCURSOR;
-#line 326 "strict_cpp.re"
+#line 336 "strict_cpp.re"
     {
         if(cursor == s->eof)
         {
@@ -6193,49 +6539,49 @@
                 "invalid character: '\\000' in input stream");
         }
     }
-#line 6197 "strict_cpp_re.inc"
-yy935:
+#line 6543 "strict_cpp_re.inc"
+yy998:
     ++YYCURSOR;
-#line 343 "strict_cpp.re"
+#line 353 "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:
+#line 6553 "strict_cpp_re.inc"
+yy1000:
     yych = *++YYCURSOR;
- goto yy929;
-yy938:
+ goto yy992;
+yy1001:
     ++YYCURSOR;
-#line 312 "strict_cpp.re"
+#line 322 "strict_cpp.re"
     { BOOST_WAVE_RET(T_CCOMMENT); }
-#line 6215 "strict_cpp_re.inc"
+#line 6561 "strict_cpp_re.inc"
 }
-#line 349 "strict_cpp.re"
+#line 359 "strict_cpp.re"
 
 
 cppcomment:
 
-#line 6222 "strict_cpp_re.inc"
+#line 6568 "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;
+ if (yych <= 0x00) goto yy1011;
+ if (yych <= 0x08) goto yy1013;
+ if (yych <= '\t') goto yy1008;
+ } else {
+ if (yych <= '\f') goto yy1008;
+ if (yych <= '\r') goto yy1007;
+ if (yych <= 0x1F) goto yy1013;
+ goto yy1010;
     }
     ++YYCURSOR;
-yy943:
-#line 354 "strict_cpp.re"
+yy1006:
+#line 364 "strict_cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
         /*s->tok = cursor; */
@@ -6243,23 +6589,23 @@
         cursor.column = 1;
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-#line 6247 "strict_cpp_re.inc"
-yy944:
+#line 6593 "strict_cpp_re.inc"
+yy1007:
     yych = *++YYCURSOR;
- if (yych == '\n') goto yy952;
- goto yy943;
-yy945:
+ if (yych == '\n') goto yy1015;
+ goto yy1006;
+yy1008:
     ++YYCURSOR;
-yy946:
-#line 362 "strict_cpp.re"
+yy1009:
+#line 372 "strict_cpp.re"
     { goto cppcomment; }
-#line 6257 "strict_cpp_re.inc"
-yy947:
+#line 6603 "strict_cpp_re.inc"
+yy1010:
     yych = *++YYCURSOR;
- goto yy946;
-yy948:
+ goto yy1009;
+yy1011:
     ++YYCURSOR;
-#line 365 "strict_cpp.re"
+#line 375 "strict_cpp.re"
     {
         if (s->eof && cursor != s->eof)
         {
@@ -6278,23 +6624,23 @@
         }
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-#line 6282 "strict_cpp_re.inc"
-yy950:
+#line 6628 "strict_cpp_re.inc"
+yy1013:
     ++YYCURSOR;
-#line 385 "strict_cpp.re"
+#line 395 "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:
+#line 6638 "strict_cpp_re.inc"
+yy1015:
     ++YYCURSOR;
     yych = *YYCURSOR;
- goto yy943;
+ goto yy1006;
 }
-#line 391 "strict_cpp.re"
+#line 401 "strict_cpp.re"
 
 
 /* this subscanner is called whenever a pp_number has been started */
@@ -6306,7 +6652,7 @@
 
     if (s->detect_pp_numbers) {
     
-#line 6310 "strict_cpp_re.inc"
+#line 6656 "strict_cpp_re.inc"
 {
     YYCTYPE yych;
     static const unsigned char yybm[] = {
@@ -6345,245 +6691,245 @@
     };
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
- if (yych == '.') goto yy956;
- if (yych <= '/') goto yy955;
- if (yych <= '9') goto yy957;
-yy955:
+ if (yych == '.') goto yy1019;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+yy1018:
     YYCURSOR = YYMARKER;
- goto yy959;
-yy956:
+ goto yy1022;
+yy1019:
     yych = *++YYCURSOR;
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
-yy957:
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
+yy1020:
     YYMARKER = ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 64) {
- goto yy957;
+ goto yy1020;
     }
     if (yych <= 'Z') {
- if (yych == '?') goto yy963;
- if (yych >= 'A') goto yy960;
+ if (yych == '?') goto yy1026;
+ if (yych >= 'A') goto yy1023;
     } else {
         if (yych <= '\\') {
- if (yych >= '\\') goto yy962;
+ if (yych >= '\\') goto yy1025;
         } else {
- if (yych == 'e') goto yy960;
+ if (yych == 'e') goto yy1023;
         }
     }
-yy959:
-#line 403 "strict_cpp.re"
+yy1022:
+#line 413 "strict_cpp.re"
     { BOOST_WAVE_RET(T_PP_NUMBER); }
-#line 6379 "strict_cpp_re.inc"
-yy960:
+#line 6725 "strict_cpp_re.inc"
+yy1023:
     YYMARKER = ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy960;
+ goto yy1023;
     }
     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;
+ if (yych == '+') goto yy1020;
+ if (yych <= ',') goto yy1022;
+ goto yy1020;
+ } else {
+ if (yych <= '/') goto yy1022;
+ if (yych <= '9') goto yy1020;
+ if (yych <= '>') goto yy1022;
+ goto yy1026;
         }
     } else {
         if (yych <= '\\') {
- if (yych <= '@') goto yy959;
- if (yych <= 'Z') goto yy957;
- if (yych <= '[') goto yy959;
+ if (yych <= '@') goto yy1022;
+ if (yych <= 'Z') goto yy1020;
+ if (yych <= '[') goto yy1022;
         } else {
             if (yych <= '_') {
- if (yych <= '^') goto yy959;
- goto yy957;
+ if (yych <= '^') goto yy1022;
+ goto yy1020;
             } else {
- if (yych <= '`') goto yy959;
- if (yych <= 'z') goto yy957;
- goto yy959;
+ if (yych <= '`') goto yy1022;
+ if (yych <= 'z') goto yy1020;
+ goto yy1022;
             }
         }
     }
-yy962:
+yy1025:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych == 'U') goto yy966;
- if (yych == 'u') goto yy965;
- goto yy955;
-yy963:
+ if (yych == 'U') goto yy1029;
+ if (yych == 'u') goto yy1028;
+ goto yy1018;
+yy1026:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych != '?') goto yy955;
+ if (yych != '?') goto yy1018;
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
- if (yych == '/') goto yy962;
- goto yy955;
-yy965:
+ if (yych == '/') goto yy1025;
+ goto yy1018;
+yy1028:
     ++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;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1037;
+ goto yy1018;
+ } else {
+ if (yych <= 'F') goto yy1037;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1037;
+ goto yy1018;
     }
-yy966:
+yy1029:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy967;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1030;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy967:
+yy1030:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy968;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1031;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy968:
+yy1031:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy969;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1032;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy969:
+yy1032:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy970;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1033;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy970:
+yy1033:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy971;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1034;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy971:
+yy1034:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy972;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1035;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy972:
+yy1035:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy973;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1036;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy973:
+yy1036:
     ++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;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+ goto yy1018;
+ } else {
+ if (yych <= 'F') goto yy1020;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1020;
+ goto yy1018;
     }
-yy974:
+yy1037:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy975;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1038;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy975:
+yy1038:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych >= ':') goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych >= ':') goto yy1018;
     } else {
- if (yych <= 'F') goto yy976;
- if (yych <= '`') goto yy955;
- if (yych >= 'g') goto yy955;
+ if (yych <= 'F') goto yy1039;
+ if (yych <= '`') goto yy1018;
+ if (yych >= 'g') goto yy1018;
     }
-yy976:
+yy1039:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yych <= '@') {
- if (yych <= '/') goto yy955;
- if (yych <= '9') goto yy957;
- goto yy955;
+ if (yych <= '/') goto yy1018;
+ if (yych <= '9') goto yy1020;
+ goto yy1018;
     } else {
- if (yych <= 'F') goto yy957;
- if (yych <= '`') goto yy955;
- if (yych <= 'f') goto yy957;
- goto yy955;
+ if (yych <= 'F') goto yy1020;
+ if (yych <= '`') goto yy1018;
+ if (yych <= 'f') goto yy1020;
+ goto yy1018;
     }
 }
-#line 404 "strict_cpp.re"
+#line 414 "strict_cpp.re"
 
     }
     else {
     
-#line 6587 "strict_cpp_re.inc"
+#line 6933 "strict_cpp_re.inc"
 {
     YYCTYPE yych;
     unsigned int yyaccept = 0;
@@ -6624,228 +6970,228 @@
     if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
     yych = *YYCURSOR;
     if (yych <= '/') {
- if (yych == '.') goto yy984;
+ if (yych == '.') goto yy1047;
     } else {
- if (yych <= '0') goto yy980;
- if (yych <= '9') goto yy982;
+ if (yych <= '0') goto yy1043;
+ if (yych <= '9') goto yy1045;
     }
-yy979:
+yy1042:
     YYCURSOR = YYMARKER;
     if (yyaccept <= 0) {
- goto yy981;
+ goto yy1044;
     } else {
- goto yy987;
+ goto yy1050;
     }
-yy980:
+yy1043:
     yyaccept = 0;
     yych = *(YYMARKER = ++YYCURSOR);
     if (yybm[0+yych] & 64) {
- goto yy999;
+ goto yy1062;
     }
     if (yych <= 'E') {
         if (yych <= '/') {
- if (yych == '.') goto yy985;
+ if (yych == '.') goto yy1048;
         } else {
- if (yych <= '9') goto yy1002;
- if (yych >= 'E') goto yy995;
+ if (yych <= '9') goto yy1065;
+ if (yych >= 'E') goto yy1058;
         }
     } else {
         if (yych <= 'd') {
- if (yych == 'X') goto yy1001;
+ if (yych == 'X') goto yy1064;
         } else {
- if (yych <= 'e') goto yy995;
- if (yych == 'x') goto yy1001;
+ if (yych <= 'e') goto yy1058;
+ if (yych == 'x') goto yy1064;
         }
     }
-yy981:
-#line 411 "strict_cpp.re"
+yy1044:
+#line 421 "strict_cpp.re"
     { goto integer_suffix; }
-#line 6664 "strict_cpp_re.inc"
-yy982:
+#line 7010 "strict_cpp_re.inc"
+yy1045:
     yyaccept = 0;
     YYMARKER = ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 32) {
- goto yy982;
+ goto yy1045;
     }
     if (yych <= 'D') {
- if (yych == '.') goto yy985;
- goto yy981;
+ if (yych == '.') goto yy1048;
+ goto yy1044;
     } 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:
+ if (yych <= 'E') goto yy1058;
+ if (yych == 'e') goto yy1058;
+ goto yy1044;
+ }
+yy1047:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1048:
     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;
+ if (yych <= '/') goto yy1050;
+ if (yych <= '9') goto yy1048;
         } else {
- if (yych <= 'E') goto yy988;
- if (yych <= 'F') goto yy989;
+ if (yych <= 'E') goto yy1051;
+ if (yych <= 'F') goto yy1052;
         }
     } else {
         if (yych <= 'e') {
- if (yych <= 'L') goto yy990;
- if (yych >= 'e') goto yy988;
+ if (yych <= 'L') goto yy1053;
+ if (yych >= 'e') goto yy1051;
         } else {
- if (yych <= 'f') goto yy989;
- if (yych == 'l') goto yy990;
+ if (yych <= 'f') goto yy1052;
+ if (yych == 'l') goto yy1053;
         }
     }
-yy987:
-#line 409 "strict_cpp.re"
+yy1050:
+#line 419 "strict_cpp.re"
     { BOOST_WAVE_RET(T_FLOATLIT); }
-#line 6710 "strict_cpp_re.inc"
-yy988:
+#line 7056 "strict_cpp_re.inc"
+yy1051:
     yych = *++YYCURSOR;
     if (yych <= ',') {
- if (yych == '+') goto yy992;
- goto yy979;
+ if (yych == '+') goto yy1055;
+ goto yy1042;
     } 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:
+ if (yych <= '-') goto yy1055;
+ if (yych <= '/') goto yy1042;
+ if (yych <= '9') goto yy1056;
+ goto yy1042;
+ }
+yy1052:
+ yych = *++YYCURSOR;
+ if (yych == 'L') goto yy1054;
+ if (yych == 'l') goto yy1054;
+ goto yy1050;
+yy1053:
+ yych = *++YYCURSOR;
+ if (yych == 'F') goto yy1054;
+ if (yych != 'f') goto yy1050;
+yy1054:
+ yych = *++YYCURSOR;
+ goto yy1050;
+yy1055:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1056:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
     if (yych <= 'K') {
         if (yych <= '9') {
- if (yych <= '/') goto yy987;
- goto yy993;
+ if (yych <= '/') goto yy1050;
+ goto yy1056;
         } else {
- if (yych == 'F') goto yy989;
- goto yy987;
+ if (yych == 'F') goto yy1052;
+ goto yy1050;
         }
     } else {
         if (yych <= 'f') {
- if (yych <= 'L') goto yy990;
- if (yych <= 'e') goto yy987;
- goto yy989;
+ if (yych <= 'L') goto yy1053;
+ if (yych <= 'e') goto yy1050;
+ goto yy1052;
         } else {
- if (yych == 'l') goto yy990;
- goto yy987;
+ if (yych == 'l') goto yy1053;
+ goto yy1050;
         }
     }
-yy995:
+yy1058:
     yych = *++YYCURSOR;
     if (yych <= ',') {
- if (yych != '+') goto yy979;
+ if (yych != '+') goto yy1042;
     } 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:
+ if (yych <= '-') goto yy1059;
+ if (yych <= '/') goto yy1042;
+ if (yych <= '9') goto yy1060;
+ goto yy1042;
+ }
+yy1059:
+ yych = *++YYCURSOR;
+ if (yych <= '/') goto yy1042;
+ if (yych >= ':') goto yy1042;
+yy1060:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
     yych = *YYCURSOR;
     if (yych <= 'K') {
         if (yych <= '9') {
- if (yych <= '/') goto yy987;
- goto yy997;
+ if (yych <= '/') goto yy1050;
+ goto yy1060;
         } else {
- if (yych == 'F') goto yy989;
- goto yy987;
+ if (yych == 'F') goto yy1052;
+ goto yy1050;
         }
     } else {
         if (yych <= 'f') {
- if (yych <= 'L') goto yy990;
- if (yych <= 'e') goto yy987;
- goto yy989;
+ if (yych <= 'L') goto yy1053;
+ if (yych <= 'e') goto yy1050;
+ goto yy1052;
         } else {
- if (yych == 'l') goto yy990;
- goto yy987;
+ if (yych == 'l') goto yy1053;
+ goto yy1050;
         }
     }
-yy999:
+yy1062:
     yyaccept = 0;
     YYMARKER = ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 64) {
- goto yy999;
+ goto yy1062;
     }
     if (yych <= '9') {
- if (yych == '.') goto yy985;
- if (yych <= '/') goto yy981;
- goto yy1002;
+ if (yych == '.') goto yy1048;
+ if (yych <= '/') goto yy1044;
+ goto yy1065;
     } else {
         if (yych <= 'E') {
- if (yych <= 'D') goto yy981;
- goto yy995;
+ if (yych <= 'D') goto yy1044;
+ goto yy1058;
         } else {
- if (yych == 'e') goto yy995;
- goto yy981;
+ if (yych == 'e') goto yy1058;
+ goto yy1044;
         }
     }
-yy1001:
+yy1064:
     yych = *++YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy1004;
+ goto yy1067;
     }
- goto yy979;
-yy1002:
+ goto yy1042;
+yy1065:
     ++YYCURSOR;
     if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
     yych = *YYCURSOR;
     if (yych <= '9') {
- if (yych == '.') goto yy985;
- if (yych <= '/') goto yy979;
- goto yy1002;
+ if (yych == '.') goto yy1048;
+ if (yych <= '/') goto yy1042;
+ goto yy1065;
     } else {
         if (yych <= 'E') {
- if (yych <= 'D') goto yy979;
- goto yy995;
+ if (yych <= 'D') goto yy1042;
+ goto yy1058;
         } else {
- if (yych == 'e') goto yy995;
- goto yy979;
+ if (yych == 'e') goto yy1058;
+ goto yy1042;
         }
     }
-yy1004:
+yy1067:
     ++YYCURSOR;
     if (YYLIMIT <= YYCURSOR) YYFILL(1);
     yych = *YYCURSOR;
     if (yybm[0+yych] & 128) {
- goto yy1004;
+ goto yy1067;
     }
- goto yy981;
+ goto yy1044;
 }
-#line 412 "strict_cpp.re"
+#line 422 "strict_cpp.re"
 
     }
 }
@@ -6855,140 +7201,140 @@
 {
     if (s->enable_ms_extensions) {
     
-#line 6859 "strict_cpp_re.inc"
+#line 7205 "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;
+ if (yych >= 'L') goto yy1073;
         } else {
- if (yych == 'U') goto yy1009;
+ if (yych == 'U') goto yy1072;
         }
     } else {
         if (yych <= 'l') {
- if (yych <= 'i') goto yy1011;
- if (yych >= 'l') goto yy1010;
+ if (yych <= 'i') goto yy1074;
+ if (yych >= 'l') goto yy1073;
         } else {
- if (yych == 'u') goto yy1009;
+ if (yych == 'u') goto yy1072;
         }
     }
-yy1008:
-#line 425 "strict_cpp.re"
+yy1071:
+#line 435 "strict_cpp.re"
     { BOOST_WAVE_RET(T_INTLIT); }
-#line 6881 "strict_cpp_re.inc"
-yy1009:
+#line 7227 "strict_cpp_re.inc"
+yy1072:
     yych = *++YYCURSOR;
- if (yych == 'L') goto yy1018;
- if (yych == 'l') goto yy1018;
- goto yy1008;
-yy1010:
+ if (yych == 'L') goto yy1081;
+ if (yych == 'l') goto yy1081;
+ goto yy1071;
+yy1073:
     yych = *++YYCURSOR;
     if (yych <= 'U') {
- if (yych == 'L') goto yy1017;
- if (yych <= 'T') goto yy1008;
- goto yy1016;
+ if (yych == 'L') goto yy1080;
+ if (yych <= 'T') goto yy1071;
+ goto yy1079;
     } else {
         if (yych <= 'l') {
- if (yych <= 'k') goto yy1008;
- goto yy1017;
+ if (yych <= 'k') goto yy1071;
+ goto yy1080;
         } else {
- if (yych == 'u') goto yy1016;
- goto yy1008;
+ if (yych == 'u') goto yy1079;
+ goto yy1071;
         }
     }
-yy1011:
+yy1074:
     yych = *++YYCURSOR;
- if (yych == '6') goto yy1013;
-yy1012:
+ if (yych == '6') goto yy1076;
+yy1075:
     YYCURSOR = YYMARKER;
- goto yy1008;
-yy1013:
+ goto yy1071;
+yy1076:
     yych = *++YYCURSOR;
- if (yych != '4') goto yy1012;
-yy1014:
+ if (yych != '4') goto yy1075;
+yy1077:
     ++YYCURSOR;
-yy1015:
-#line 422 "strict_cpp.re"
+yy1078:
+#line 432 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6916 "strict_cpp_re.inc"
-yy1016:
+#line 7262 "strict_cpp_re.inc"
+yy1079:
     yych = *++YYCURSOR;
- goto yy1008;
-yy1017:
+ goto yy1071;
+yy1080:
     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;
+ if (yych == 'U') goto yy1077;
+ if (yych == 'u') goto yy1077;
+ goto yy1078;
+yy1081:
+ ++YYCURSOR;
+ if ((yych = *YYCURSOR) == 'L') goto yy1077;
+ if (yych == 'l') goto yy1077;
+ goto yy1071;
 }
-#line 426 "strict_cpp.re"
+#line 436 "strict_cpp.re"
 
     }
     else {
     
-#line 6936 "strict_cpp_re.inc"
+#line 7282 "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;
+ if (yych == 'L') goto yy1086;
+ if (yych >= 'U') goto yy1085;
     } else {
         if (yych <= 'l') {
- if (yych >= 'l') goto yy1023;
+ if (yych >= 'l') goto yy1086;
         } else {
- if (yych == 'u') goto yy1022;
+ if (yych == 'u') goto yy1085;
         }
     }
-yy1021:
-#line 434 "strict_cpp.re"
+yy1084:
+#line 444 "strict_cpp.re"
     { BOOST_WAVE_RET(T_INTLIT); }
-#line 6954 "strict_cpp_re.inc"
-yy1022:
+#line 7300 "strict_cpp_re.inc"
+yy1085:
     yych = *++YYCURSOR;
- if (yych == 'L') goto yy1028;
- if (yych == 'l') goto yy1028;
- goto yy1021;
-yy1023:
+ if (yych == 'L') goto yy1091;
+ if (yych == 'l') goto yy1091;
+ goto yy1084;
+yy1086:
     yych = *++YYCURSOR;
     if (yych <= 'U') {
- if (yych == 'L') goto yy1025;
- if (yych <= 'T') goto yy1021;
+ if (yych == 'L') goto yy1088;
+ if (yych <= 'T') goto yy1084;
     } else {
         if (yych <= 'l') {
- if (yych <= 'k') goto yy1021;
- goto yy1025;
+ if (yych <= 'k') goto yy1084;
+ goto yy1088;
         } else {
- if (yych != 'u') goto yy1021;
+ if (yych != 'u') goto yy1084;
         }
     }
     yych = *++YYCURSOR;
- goto yy1021;
-yy1025:
+ goto yy1084;
+yy1088:
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == 'U') goto yy1027;
- if (yych == 'u') goto yy1027;
-yy1026:
-#line 431 "strict_cpp.re"
+ if ((yych = *YYCURSOR) == 'U') goto yy1090;
+ if (yych == 'u') goto yy1090;
+yy1089:
+#line 441 "strict_cpp.re"
     { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6982 "strict_cpp_re.inc"
-yy1027:
+#line 7328 "strict_cpp_re.inc"
+yy1090:
     yych = *++YYCURSOR;
- goto yy1026;
-yy1028:
+ goto yy1089;
+yy1091:
     ++YYCURSOR;
- if ((yych = *YYCURSOR) == 'L') goto yy1027;
- if (yych == 'l') goto yy1027;
- goto yy1021;
+ if ((yych = *YYCURSOR) == 'L') goto yy1090;
+ if (yych == 'l') goto yy1090;
+ goto yy1084;
 }
-#line 435 "strict_cpp.re"
+#line 445 "strict_cpp.re"
 
     }
 }

Modified: trunk/libs/wave/src/token_ids.cpp
==============================================================================
--- trunk/libs/wave/src/token_ids.cpp (original)
+++ trunk/libs/wave/src/token_ids.cpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -210,6 +210,17 @@
     /* 420 */ "MSEXT_ENDREGION",
     
     /* 421 */ "IMPORT",
+
+ /* 422 */ "ALIGNAS",
+ /* 423 */ "ALIGNOF",
+ /* 424 */ "CHAR16_T",
+ /* 425 */ "CHAR32_T",
+ /* 426 */ "CONSTEXPR",
+ /* 427 */ "DECLTYPE",
+ /* 428 */ "NOEXCEPT",
+ /* 429 */ "NULLPTR",
+ /* 430 */ "STATIC_ASSERT",
+ /* 431 */ "THREADLOCAL",
     };
 
     // make sure, I have not forgotten any commas (as I did more than once)
@@ -400,6 +411,17 @@
     /* 420 */ "#endregion",
     
     /* 421 */ "import",
+
+ /* 422 */ "alignas",
+ /* 423 */ "alignof",
+ /* 424 */ "char16_t",
+ /* 425 */ "char32_t",
+ /* 426 */ "constexpr",
+ /* 427 */ "decltype",
+ /* 428 */ "noexcept",
+ /* 429 */ "nullptr",
+ /* 430 */ "static_assert",
+ /* 431 */ "threadlocal",
     };
      
     // make sure, I have not forgotten any commas (as I did more than once)

Modified: trunk/libs/wave/test/testwave/collect_hooks_information.hpp
==============================================================================
--- trunk/libs/wave/test/testwave/collect_hooks_information.hpp (original)
+++ trunk/libs/wave/test/testwave/collect_hooks_information.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -10,6 +10,7 @@
 #if !defined(BOOST_WAVE_LIBS_WAVE_TEST_COLLECT_HOOKS_INFORMATION_HPP)
 #define BOOST_WAVE_LIBS_WAVE_TEST_COLLECT_HOOKS_INFORMATION_HPP
 
+#include <boost/config.hpp>
 #include <boost/lexical_cast.hpp>
 #include <boost/filesystem/path.hpp>
 #include <boost/filesystem/operations.hpp>
@@ -82,6 +83,19 @@
     return result;
 }
 
+#if defined(BOOST_WINDOWS)
+template <typename String>
+inline String replace_slashes(String value)
+{
+ typename String::size_type p = value.find_first_of("\\");
+ while (p != value.npos) {
+ value[p] = '/';
+ p = value.find_first_of("\\", p+1);
+ }
+ return value;
+}
+#endif
+
 ///////////////////////////////////////////////////////////////////////////////
 template <typename Token>
 class collect_hooks_information
@@ -298,11 +312,19 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename Context>
     void
- opened_include_file(Context const& ctx, std::string const& relname,
- std::string const& absname, bool is_system_include)
+ opened_include_file(Context const& ctx, std::string relname,
+ std::string absname, bool is_system_include)
     {
+ using boost::wave::util::impl::escape_lit;
+
+#if defined(BOOST_WINDOWS)
+ relname = replace_slashes(relname);
+ absname = replace_slashes(absname);
+#endif
+
         BOOST_WAVETEST_OSSTREAM strm;
- strm << "05: " << relname << " (" << absname << ")" << std::endl;
+ strm << "05: " << escape_lit(relname)
+ << " (" << escape_lit(absname) << ")" << std::endl;
         hooks_trace += BOOST_WAVETEST_GETSTRING(strm);
     }
     
@@ -750,11 +772,18 @@
     ///////////////////////////////////////////////////////////////////////////
     template <typename ContextT>
     void
- detected_include_guard(ContextT const& ctx, std::string const& filename,
+ detected_include_guard(ContextT const& ctx, std::string filename,
         std::string const& include_guard)
     {
+ using boost::wave::util::impl::escape_lit;
+
+#if defined(BOOST_WINDOWS)
+ filename = replace_slashes(filename);
+#endif
+
         BOOST_WAVETEST_OSSTREAM strm;
- strm << "19: " << filename << ": " << include_guard << std::endl;
+ strm << "19: " << escape_lit(filename) << ": "
+ << include_guard << std::endl;
         hooks_trace += BOOST_WAVETEST_GETSTRING(strm);
     }
 
@@ -782,11 +811,18 @@
     template <typename ContextT, typename TokenT>
     void
     detected_pragma_once(ContextT const& ctx, TokenT const& pragma_token,
- std::string const& filename)
+ std::string filename)
     {
+ using boost::wave::util::impl::escape_lit;
+
+#if defined(BOOST_WINDOWS)
+ filename = replace_slashes(filename);
+#endif
+
         BOOST_WAVETEST_OSSTREAM strm;
         strm << "20: " << repr(pragma_token.get_position()) << ": "
- << pragma_token.get_value() << ": " << filename << std::endl;
+ << pragma_token.get_value() << ": "
+ << escape_lit(filename) << std::endl;
         hooks_trace += BOOST_WAVETEST_GETSTRING(strm);
     }
 #endif

Modified: trunk/libs/wave/test/testwave/testwave.cpp
==============================================================================
--- trunk/libs/wave/test/testwave/testwave.cpp (original)
+++ trunk/libs/wave/test/testwave/testwave.cpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -181,7 +181,7 @@
                          iit != iend; ++iit)
                     {
                     // correct the file name (pre-pend the config file path)
- fs::path cfgpath = fs::complete(
+ fs::path cfgpath = boost::wave::util::complete_path(
                             boost::wave::util::create_path(*cit),
                             boost::wave::util::current_path());
                         fs::path filepath =

Modified: trunk/libs/wave/test/testwave/testwave_app.cpp
==============================================================================
--- trunk/libs/wave/test/testwave/testwave_app.cpp (original)
+++ trunk/libs/wave/test/testwave/testwave_app.cpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -192,7 +192,7 @@
             case 'B': // same as 'P', but forward slashes on Windows
                 {
                     fs::path fullpath (
- fs::complete(
+ boost::wave::util::complete_path(
                             boost::wave::util::create_path(filename),
                             boost::wave::util::current_path())
                         );
@@ -216,8 +216,14 @@
                                     boost::wave::util::normalize(fullpath)));
                         }
                         else {
- full_result += escape_lit(
+#if defined(BOOST_WINDOWS)
+ std::string p = replace_slashes(
+ boost::wave::util::normalize(fullpath).string());
+#else
+ std::string p (
                                 boost::wave::util::normalize(fullpath).string());
+#endif
+ full_result += escape_lit(p);
                         }
                         pos1 = expected.find_first_of ("$",
                             pos = pos1 + 4 + base.size());
@@ -230,6 +236,11 @@
                                 boost::wave::util::native_file_string(fullpath));
                         }
                         else {
+#if defined(BOOST_WINDOWS)
+ std::string p = replace_slashes(fullpath.string());
+#else
+ std::string p (fullpath.string());
+#endif
                             full_result += escape_lit(fullpath.string());
                         }
                         pos1 = expected.find_first_of ("$", pos = pos1 + 2);
@@ -265,8 +276,14 @@
                                     boost::wave::util::normalize(relpath)));
                         }
                         else {
- full_result += escape_lit(
+#if defined(BOOST_WINDOWS)
+ std::string p = replace_slashes(
+ boost::wave::util::normalize(relpath).string());
+#else
+ std::string p (
                                 boost::wave::util::normalize(relpath).string());
+#endif
+ full_result += escape_lit(p);
                         }
                         pos1 = expected.find_first_of ("$",
                             pos = pos1 + 4 + base.size());
@@ -279,7 +296,12 @@
                                 boost::wave::util::native_file_string(relpath));
                         }
                         else {
- full_result += escape_lit(relpath.string());
+#if defined(BOOST_WINDOWS)
+ std::string p = replace_slashes(relpath.string());
+#else
+ std::string p (relpath.string());
+#endif
+ full_result += escape_lit(p);
                         }
                         pos1 = expected.find_first_of ("$", pos = pos1 + 2);
                     }

Modified: trunk/tools/wave/build/Jamfile.v2
==============================================================================
--- trunk/tools/wave/build/Jamfile.v2 (original)
+++ trunk/tools/wave/build/Jamfile.v2 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -8,6 +8,22 @@
 # Software License, Version 1.0. (See accompanying file
 # LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
+# Make sure all of Wave is compiled with threading disabled. We still need
+# to link with Boost.Thread, but no multi-threaded features are being used
+# in the Wave tool anyway.
+
+import feature ;
+
+feature.feature wavetool
+ : on
+ : optional composite propagated
+ ;
+
+feature.compose <wavetool>on
+ : <define>BOOST_WAVE_SUPPORT_THREADING=0
+ ;
+
+###############################################################################
 project
     : requirements
       <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
@@ -27,6 +43,7 @@
     :
     <threading>multi
 # <debug-symbols>on
+ <wavetool>on
     :
     release
     ;

Modified: trunk/tools/wave/cpp.cpp
==============================================================================
--- trunk/tools/wave/cpp.cpp (original)
+++ trunk/tools/wave/cpp.cpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -539,7 +539,7 @@
         fs::path macronames_file (boost::wave::util::create_path(filename));
 
         if (macronames_file != "-") {
- macronames_file = fs::complete(macronames_file);
+ macronames_file = boost::wave::util::complete_path(macronames_file);
             fs::create_directories(boost::wave::util::branch_path(macronames_file));
             macronames_out.open(macronames_file.string().c_str());
             if (!macronames_out.is_open()) {
@@ -608,7 +608,7 @@
         fs::path macrocounts_file (boost::wave::util::create_path(filename));
 
         if (macrocounts_file != "-") {
- macrocounts_file = fs::complete(macrocounts_file);
+ macrocounts_file = boost::wave::util::complete_path(macrocounts_file);
             fs::create_directories(boost::wave::util::branch_path(macrocounts_file));
             macrocounts_out.open(macrocounts_file.string().c_str());
             if (!macrocounts_out.is_open()) {
@@ -816,6 +816,24 @@
             ctx.set_language(boost::wave::enable_variadics(ctx.get_language()));
         }
 #endif // BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+ if (vm.count("c++0x")) {
+ ctx.set_language(
+ boost::wave::language_support(
+ boost::wave::support_cpp0x
+ | boost::wave::support_option_convert_trigraphs
+ | boost::wave::support_option_long_long
+ | boost::wave::support_option_emit_line_directives
+#if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
+ | boost::wave::support_option_include_guard_detection
+#endif
+#if BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES != 0
+ | boost::wave::support_option_emit_pragma_directives
+#endif
+ | boost::wave::support_option_insert_whitespace
+ ));
+ }
+#endif // BOOST_WAVE_SUPPORT_CPP0X != 0
 
     // enable long long support, if appropriate
         if (vm.count("long_long")) {
@@ -961,7 +979,7 @@
                 default_outfile = "-";
             }
             else {
- out_file = fs::complete(out_file);
+ out_file = boost::wave::util::complete_path(out_file);
                 fs::create_directories(boost::wave::util::branch_path(out_file));
                 output.open(out_file.string().c_str());
                 if (!output.is_open()) {
@@ -1212,6 +1230,9 @@
             ("variadics", "enable certain C99 extensions in C++ mode")
             ("c99", "enable C99 mode (implies --variadics)")
 #endif
+#if BOOST_WAVE_SUPPORT_CPP0X != 0
+ ("c++0x", "enable C++0x mode (implies --variadics and --long_long)")
+#endif
             ("listincludes,l", po::value<std::string>(),
                 "list names of included files to a file [arg] or to stdout [-]")
             ("macronames,m", po::value<std::string>(),
@@ -1284,7 +1305,7 @@
     // file for all files in a certain project.
         if (arguments.size() > 0 && arguments[0].value[0] != "-") {
         // construct full path of input file
- fs::path input_dir (fs::complete(
+ fs::path input_dir (boost::wave::util::complete_path(
                 boost::wave::util::create_path(arguments[0].value[0])));
 
         // chop of file name

Modified: trunk/tools/wave/trace_macro_expansion.hpp
==============================================================================
--- trunk/tools/wave/trace_macro_expansion.hpp (original)
+++ trunk/tools/wave/trace_macro_expansion.hpp 2010-12-07 20:29:47 EST (Tue, 07 Dec 2010)
@@ -1045,7 +1045,7 @@
             string_type fname ((*it).get_value());
             fs::path fpath (boost::wave::util::create_path(
                 util::impl::unescape_lit(fname.substr(1, fname.size()-2)).c_str()));
- fpath = fs::complete(fpath, ctx.get_current_directory());
+ fpath = boost::wave::util::complete_path(fpath, ctx.get_current_directory());
             result = interpret_pragma_option_output_open(fpath, ctx, act_token);
         }
         else if (T_IDENTIFIER == id) {
@@ -1058,8 +1058,8 @@
                 if (output_options.empty() && current_outfile.empty() &&
                     !default_outfile.empty() && default_outfile != "-")
                 {
- current_outfile = fs::complete(default_outfile,
- ctx.get_current_directory());
+ current_outfile = boost::wave::util::complete_path(
+ default_outfile, ctx.get_current_directory());
                 }
 
             // push current output option onto the internal option stack


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk