$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: troy_at_[hidden]
Date: 2008-06-30 10:49:42
Author: troy
Date: 2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
New Revision: 46914
URL: http://svn.boost.org/trac/boost/changeset/46914
Log:
merge from release branch
Added:
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/
      - copied from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/build/
      - copied from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/build/
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/build/Jamfile.v2
      - copied unchanged from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/build/Jamfile.v2
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/example.cpp
      - copied unchanged from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/example.cpp
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.cpp
      - copied unchanged from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.cpp
   branches/CMake/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.hpp
      - copied unchanged from r46902, /branches/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.hpp
   branches/CMake/release/libs/wave/test/testwave/testfiles/t_9_019.cpp
      - copied unchanged from r46902, /branches/release/libs/wave/test/testwave/testfiles/t_9_019.cpp
   branches/CMake/release/libs/wave/test/testwave/testfiles/t_9_019.hpp
      - copied unchanged from r46902, /branches/release/libs/wave/test/testwave/testfiles/t_9_019.hpp
Properties modified: 
   branches/CMake/release/libs/wave/ChangeLog   (contents, props changed)
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp.re   (contents, props changed)
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc   (contents, props changed)
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re   (contents, props changed)
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc   (contents, props changed)
Text files modified: 
   branches/CMake/release/libs/wave/ChangeLog                                   |  3475 +++---                                  
   branches/CMake/release/libs/wave/doc/compiletime_config.html                 |    17                                         
   branches/CMake/release/libs/wave/doc/tracing_facility.html                   |     2                                         
   branches/CMake/release/libs/wave/samples/Jamfile.v2                          |     1                                         
   branches/CMake/release/libs/wave/samples/hannibal/hannibal.cpp               |    14                                         
   branches/CMake/release/libs/wave/samples/hannibal/translation_unit_parser.h  |    24                                         
   branches/CMake/release/libs/wave/samples/hannibal/translation_unit_skipper.h |    12                                         
   branches/CMake/release/libs/wave/samples/waveidl/idl.cpp                     |     2                                         
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp.re                 |   840                                         
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc             | 14012 +++++++++++++-------------              
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re          |  7213 +++++++++++++                           
   branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc      | 20985 ++++++++++++++++++++++++++------------- 
   branches/CMake/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp         |     2                                         
   branches/CMake/release/libs/wave/src/instantiate_cpp_grammar.cpp             |     3                                         
   branches/CMake/release/libs/wave/src/instantiate_cpp_literalgrs.cpp          |     1                                         
   branches/CMake/release/libs/wave/src/instantiate_defined_grammar.cpp         |     8                                         
   branches/CMake/release/libs/wave/src/instantiate_predef_macros.cpp           |     8                                         
   branches/CMake/release/libs/wave/src/instantiate_re2c_lexer.cpp              |     2                                         
   18 files changed, 30118 insertions(+), 16503 deletions(-)
Modified: branches/CMake/release/libs/wave/ChangeLog
==============================================================================
--- branches/CMake/release/libs/wave/ChangeLog	(original)
+++ branches/CMake/release/libs/wave/ChangeLog	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -1,1722 +1,1753 @@
-Boost.Wave: A Standard compliant C++ preprocessor library
-http://www.boost.org/
-
-Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
-Software License, Version 1.0. (See accompanying file
-LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
--------------------------------------------------------------------------------
-
-TODO (known issues):
-- Fix expansion of macros, which replacement-list terminates in a partial 
-  macro expansion.
-- Fix the re2c lexer for iterators others then string::iterator (or more 
-  generally for iterators, which aren't random access iterators)
-- Try to remove the second parameter from the pp_iterator<>::force_include
-  function.
-- Fix the trigraph backslash problem in the re2c (C/C++ and IDL) scanners, if 
-  there is the end of the (internal) buffer just in between a '??/' and a '\n'.
-- Change the cpp_exception::what() function to return more meaningful error 
-  texts.
-  
-- Do a sourceforge release.
-
--------------------------------------------------------------------------------
-
-CHANGELOG
-
-Boost V1.35.0
-- Wave Version 1.3
-- Changed the return value of the 'evaluated_conditional_expression()' pp hook
-  to 'bool' allowing to force Wave to re-evaluate the current conditional
-  expression. This was suggested by Felipe Magno de Almeida.
-- Added a wave::context object as first parameter to all pp hook functions. 
-  This is an interface compatibility breaking change. The new pp-hooks can be 
-  disabled by defining the BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS 
-  compile time constant to something not equal to zero. By default this 
-  constant will be defined to zero for Boost V1.35.0 and newer, switching to
-  the new interface by default.
-- Added optional support for the import keyword (needed for the C++ module
-  proposal). The identifier import will be recognized as a keyword, if 
-  the compile time constant BOOST_WAVE_SUPPORT_IMPORT_KEYWORD is defined to 
-  something not equal zero.
-- Added new preprocessing hook functions: found_error_directive() and 
-  found_warning_directive() to be called when #error/#warning directives are
-  encountered. This was suggested by Andreas Sæbjørnsen.
-- Added a new sample to Wave: hannibal, a partial C++ parser implementation
-  initially written by Danny Havenith (http://havenith-verlinden.nl/hannibal/)
-  who agreed to add this here. Thanks!
-- Added new preprocessing hook function: found_line_directive() to be called 
-  when a #line directive is encountered. This was suggested by Andreas
-  Sæbjørnsen.
-- Improved command line handling for the wave applet.
-- Incorporated latest bug fixes for the Hannibal sample provided by Danny 
-  Havenith. 
-- Added loading of a wave.cfg file from anywhere up the filesystem hierarchy 
-  starting from the main input file for the wave driver applet up to the 
-  root of the file system.
-- Added support_option_emit_pragma_directive to allow to control at runtime,
-  whether unknown #pragma directives should be emitted or not. To maintain 
-  compatibility with earlier versions this option is by default on if the
-  compile time constant BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES was defined to 
-  be not equal to zero and it is off otherwise.
-- Enabled XML serialization support.
-- Added the throw_exception preprocessing hook, which gets called for every 
-  occurring error (whenever an exception would have been thrown). The default
-  of this new hook function is to throw the corresponding exception, which 
-  reproduces the old behavior.
-- Implemented a new preprocessing hook: generated_token(), which get's called
-  whenever a token is about to be returned form the library. This function may
-  be used to alter the token before it gets returned to the calling 
-  application.
-- Added a new sample 'real_positions' demonstrating the new generated_token()
-  preprocessing hook and showing how to use Wave with a new token type without 
-  using a new lexer type.
-- Factored out the pure lex_input_interface to simplify writing different lexer 
-  types for Wave.
-- Added the token_statistics sample showing how to use Xpressive to build a 
-  lexer for Wave.
-- Changed the list_includes sample to use a lexer which is based on the lexertl 
-  library written by Ben Hanson (http://www.benhanson.net/lexertl.html).
-- Added a new support_option: insert_whitespace, allowing to switch off 
-  whitespace insertion which is normally (by default) in place to disambiugate
-  C++ tokens, which would otherwise form different tokens in the output.
-- Added a new commandline option to the Wave applet: --disambiguate, allowing
-  to control whitespace insertion. The default value for this option is 
-  --disambiguate=1, resembling the previous behaviour. Specifying the option
-  --disambiguate=0 allows to suppress whitespace insertion alltogether.
-- Added pragma option values push and pop to the line, preserve and output 
-  options allowing to store and restore the current option. The syntax is:
-    #pragma wave options(<option>: push) and
-    #pragma wave options(<option>: pop)
-  where <option> may be line, preserve or output. Thanks to Eric Niebler for 
-  suggesting this feature.
-- Added the possibility to use static pre-compiled DFA tables for the lexertl 
-  based lexer.
-- Incorporated the changes from Andrei's latest version of the flex_string 
-  class.
-- Added the is_macro_defined(name) function to the context object as described 
-  in the documentation. This function is usable with any string type compatible 
-  with std::string.
-- Changed behavior of the --force_include functionality, which now looks for 
-  the file to be (force-)included in the current directory first.
-- Switched to Re2C V0.11.2
-- Added const specifiers to some of the context member functions.
-- Fixed a problem in the SLex C++ lexer (cpp_tokens example).
-- Fixed a runtime problem in the Re2C generated lexers when feeded with
-  empty input files (thanks to Leo Davis for reporting and providing a patch).
-- Added the is_eoi() function to token classes, returning true if the token
-  has been initialized to be the end of input token (T_EOI) (thanks to Ovanes 
-  Markarian for suggesting this).
-- Added missing #includes <cstring>, <cstdlib>, and <new> to flex_string.hpp.
-- Added missing #include <climits> to cpp_chlit_grammar.hpp.
-- Changed found_include_directive hook function to return a bool indicating, 
-  whether the file should be included (true) or skipped (false). Thanks to 
-  Felipe Magno de Almeida for suggesting this feature.
-- Added code to the wave driver applet ignoring a #import directive (the whole
-  directive is passed through to the output) whenever the pp constant 
-  BOOST_WAVE_SUPPORT_MS_EXTENSIONS is defined to something not equal to zero.
-- Fixed the wave driver applet to correctly continue after a error or warning.
-- Added a macro introspection facility allowing to iterate on all defined macro 
-  names.
-- Added a new commandline option --macronames/-m to the Wave driver application
-  which lists all defined macros and their definitions to an optionally 
-  specified file (default is cout).
-- Fixed configuration to take into account thread related build settings.
-- Added the BOOST_WAVE_SUPPORT_LONGLONG_INTEGER_LITERALS pp constant allowing
-  to recognize large integer literals (larger in size than long/unsigned long) 
-  even if these do not have a 'll' suffix. This pp constant is effective only, 
-  if the target platform supports long long integers (BOOST_HAS_LONG_LONG is 
-  defined).
-- The following preprocessing hooks now return a boolean value, which when 
-  returning 'true' cause the Wave library to skip the execution of the related 
-  preprocessing action:
-    . found_directive: allows to skip the whole directive it is called for
-    . expanding_object_like_macro: allows to skip expansion of the given object
-        like macro, the macro symbol is copied to the output
-    . expanding_function_like_macro: allows to skip the expansion of the given
-        function like macro, the whole macro invocation (including all 
-        macro invocation parameters) are copied to the output without any 
-        further processing.
-- Changed the interpretation of the return value of the found_include_directive 
-  preprocessing hook: a return value of 'false' now processes the file 
-  to be included normally and a return value of 'true' now skips the processing 
-  of the include file directive (the file doesn't get included). 
-  This change was necessary to make the return values of the preprocessing 
-  hooks consistent. Now return 'false' generally means: normal execution and 
-  return 'true' generally means: skip execution of the corresponding 
-  preprocessor action.
-- Fixed compilation problems on gcc, fixed ambiguity with boost code (detail 
-  namespace was ambigious).
-- Fixed predefined macro support to be thread safe.
-- Added missing file to real_positions example. Thanks to Ludovic Aubert for 
-  spotting the problem.
-- Unterminated C++/C comment diagnostics are now a warning and not an error 
-  anymore.
-- Applied patch provided by Jens Seidel making sure every header compiles on 
-  its own.
-- Updates to the documentation.
-- Fixed a problem in flex_string::compare() (#include_next was non-functional).
-- Fixed a bug in the pp hook expanding_function_like_macro(), where the seqend
-  parameter was set to the first token after the closing parenthesis instead of
-  pointing at it.
-  
-Boost V1.34.0
-- Wave Version 1.2.4
-- Added the possibility to explicitly enable/disable the generation of #line 
-  directives. Added a corresponding commandline argument to the Wave driver 
-  tool (--line/-L) which takes either 0 or 1 as its parameter.
-- Added support for #pragma wave option(command: value) directives, which 
-  supports the following commands:
-   . #pragma wave option(line: [0|1])  
-        Enable/disable generation of #line directives
-   . #pragma wave option(preserve: [0|1|2])  
-        Control whitespace preservation
-   . #pragma wave option(output: ["filename" | null | default])
-        Redirect output to the given file (or no output, if 'null' is specified,
-        or output to the file as given on the command line, if 'default' is 
-        specified).
-        The filename is resolved relative to the directory of the processed
-        file.
-  These new #pragma directives are implemented in the Wave driver tool only.
-  It is possible to combine several options in one #pragma directive, i.e.
-  #pragma wave option(line: 0, preserve: 2).
-- Changed the signature of the may_skip_whitespace() preprocessing hook to 
-  additionally take the preprocessing context as its first parameter.
-- Added the possibility to the Wave tool to disable initial output by 
-  specifying a '-' as the output file. This is useful for syntax checks only or
-  in conjunction with the #pragma wave option(output: ...) to restrict the
-  generated output.
-- Improved error reporting in the Wave tool on bad output file stream state.
-- Switched to Re2C V0.10.0
-- Fixed some of the VC7.1 /W4 warnings.
-- The Wave tool now creates the directory hierarchy of output files as needed.
-- Applied some optimization, which causes skipping of the parsing for almost 
-  all preprocessor directives when the if block status is false. This gains
-  upto 10-20% in speed for average applications.
-- Added error diagnostic for #elif without matching #if, which was missing 
-  under certain circumstances.
-- Avoided the evaluation of #elif expressions if one of the previous #if/#elif
-  blocks of the same level was true. This gains upto another 5% of speed for
-  average applications.
-- The MS specific integer suffix 'i64' is now correctly supported by the Re2C
-  and SLex lexer components (only when BOOST_WAVE_SUPPORT_MS_EXTENSIONS is 
-  defined during compilation).
-- Changed the Wave tool to print the column number of an error/warning along
-  with the line number. The new format is: 'filename:line:column: error text'.
-- It is now possible to recover from the unbalanced #if/#endif statement 
-  warning in a proper way.
-- The Wave library now automaticaly recognizes include guards in headers files
-  and uses this information to avoid opening these header files more than once.
-  This speeds up things by upto 10-20% depending on the concrete include files.
-- Fixed the failing test t_6_023.cpp. Error reporting for illformed #else 
-  directives was broken (because of some recent changes).
-- Fixed the failing test t_5_007.cpp. This was caused by the automatic include 
-  guard detection, which prevented the second inclusion of the specified
-  include file the test was relying on.
-- Added the possibility to switch off the automatic include guard detection.
-- Added a new command line option to the Wave tool: --noguard/-G, which
-  disables the automatic include guard detection.
-- Now a header with include guards will be included correctly for a second time
-  after its include guard symbol gets undefined.
-- Added the generating platform to Wave's full version string.
-- Made the Wave tool fully interactive when started with input from stdin and
-  and output to stdout. In this mode the Wave tool preprocesses the input 
-  line by line and not only after receiving the full input as normally.
-- Added serialization support for the wave::context object, which stores 
-  all information about defined macros and all #pragma once header information.
-- Added the command line option --state (-s) to the Wave tool, which tries to 
-  load the serialized information from the file given as the argument to 
-  --state and save the state information at the end to the same file. 
-  This option is available in interactive mode only. 
-- Added possibility to verify the compatibility of the configuration used 
-  during compilation of the Wave library with the config info used for the 
-  application. Added a corresponding test to the Wave tool.
-- Added a new predefined macro __WAVE_CONFIG__ which expands to an integer
-  literal containg the configuration information the library was compiled
-  with.
-- Added proper versioning support to the serialization of state.
-- Fixed the macro tracing information to contain the column numbers of the macro
-  definitions as well (the format used is the same as for error messages).
-- Fixed a memory leak in the flex_string copy on write code (thanks to Tobias 
-  Schwinger for reporting this bug).
-- Fixed a memory corruption bug in the Re2C scanner buffer management code
-  (thanks to Andreas Sæbjørnsen for spotting the bug).
-- Fixed a major performance bottleneck in the lex_token class. This speeds up 
-  Wave for upto another 20-40% depending on the amount of macro expansions to 
-  perform.
-- Added the BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES and the
-  BOOST_SPIRIT_USE_LIST_FOR_TREES Spirit configration constants to the 
-  wave_config.hpp to allow to fine tune the generated Spirit tree code. VC7.1
-  gives best results when both are defined.
-- Fixed a memory corruption bug triggered by a possible dangling reference.
-- Fixed Wave tools startup crash when compiled with VC8.
-- Added the name of the generating compiler (BOOST_COMPILER) to the full 
-  Wave version info.
-- Fixed all Jamfile.v2 to correctly disable RTTI for VC7.1.
-- Added #pragma message("...") to be optionally supported by the Wave library.
-  This may be enabled by defining the BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE pp
-  constant to some value different from zero.
-- Fixed a couple of typos in the file cpp.cpp preventing it to compile on 
-  gcc 4.1.0 (thanks to Richard Guenther for reporting these).
-- Richard Guenther fixed another buffer overrun problem in the Re2C scanner.
-- Fixed Jamfile.v2 files for all sample applications.
-- Fixed a bug which lead to reporting of an illegal preprocessing directive
-  inside not-evaluated conditional blocks under certain circumstances (thanks
-  to Tobias Schwinger for reporting).
-- Fixed '#define true ...', '#define false ...' and other constructs, i.e. the 
-  usage of the boolean keywords as identifiers during the preprocessing. Added
-  a corresponding test case (t_9_017.cpp). Thanks to Andreas Sæbjørnsen for
-  reporting.
-- Corrected the Jamfile[.v2] of the waveidl sample to refer to correct file 
-  names (thanks to Juergen Hunold for submitting a patch).
-- Fixed a bug which prevented the main iterator from returning a T_EOF token 
-  at the overall end of the input. 
-- Fixed a problem, where non-evaluated #elif directives never got passed to the 
-  skippen_token() pp hook (thanks to Andreas Sæbjørnsen for reporting).
-- Fixed a problem in the get_tokenname() function.
-- Added a missing #define BOOST_WAVE_SOURCE 1 to the wave_config_constant.cpp
-  file.
-- Fixed exception specifications to catch all exceptions by const&.
-- Fixed predefined macros to appear to be defined at a position referring to 
-  a file named "<built-in>". Thanks to Andreas Sæbjørnsen for reporting.
-- Fixed the Re2C lexer not to segfault on empty files anymore.
-- Stripped leading and trailing whitespace for all lines in a config file (Wave
-  driver tool).
-- Fixed RTTI build issue for VC7.1/bjam --v2 (thanks to Rene Rivera for 
-  submitting a patch for the Wave Jamfile.v2).
-- Fixed certain problems reported by the Boost inspection tool.
-- Fixed a couple of SunPro5.8 warnings.
-- Fixed a bug resulting in a crash if a macro was redefined with a shorter
-  expansion list as it was defined initially. Added a corresponding test case.
-- Fixed a bug causing an infinite loop when there was a missing endif in the 
-  main preprocessed file.
-- Improved error recovery for illegal preprocessing directive errors.
-- Improved error handling and error recovery for conditional expressions 
-  (#if/#elif expressions).
-- Wave now passes 160 out of 161 tests from the MCPP V2.6.1 validation 
-  testsuite!
-- Added new warning for invalid #line number and filename arguments
-- Improved error diagnostics for invalid #line directives containing arbitrary
-  tokens after at the end of the line.
-- Improved error handling wrt the misuse of the __VA_ARG__ token in macro 
-  definitions.
-- The warning, that a file is not terminated by a newline is now issued for all
-  files, not only for the main file (as previous).
-- Added a couple of new test cases to verify various diagnostics.
-- Fixed wave applet not to report missing #endif's when in interactive mode.
-- Cleaned up the Re2C lexer code.
-- Fixed a bug, where a empty line followed by an arbitrary token and followed 
-  by a preprocessing directive interpreted the preprcessing directive as if it
-  were the first non-whitespace token on the line. This error occured only
-  if the #line directive generation was suppressed. Thanks to Joan Grant for
-  reporting this problem.
-- Fixed a problem in the Wave applet which prevented the correct recognition of 
-  Windows file paths in a configuration file, if this path was enclosed in 
-  quotes.
-- Extended the copyright notice to include the year 2007.
-- Fixed a problem in preserve=1 mode, when a C style comment triggered the 
-  generation of a #line directive.
-- Worked around a linker issue for the True64/CXX compiler, complaining about
-  multiple defined symbols when using the flex_string class.
-- Added missing documentation for the context::get_macro_definition function.
-- Added the BOOST_WAVE_SUPPORT_THREADING allowing to explicitely control 
-  whether the Wave library is built with threading support enabled. If not 
-  defined the build settings will be picked up from the Boost build environment
-  (BOOST_HAS_THREADS).
-
-Sat Feb 18 2005
-- Version 1.2.3
-- Added a missing throw() specification to the function 
-  cpp_exception::get_related_name().
-- Fix Boost bug ([ boost-Bugs-1395857 ] wave redefines BSIZE).
-- Added missing calls to the skipped_token() preprocessing hook which wasn't
-  called for pp directives inside disabled #if blocks.
-- Made the context<> type noncopyable.
-- Introduced the --extended/-x command line option to the wave driver 
-  executable, which enables the #pragma wave system() directive. This directive
-  is now disabled by default because it may cause a potential security threat.
-- Changed the what() function of the macro_handling_exception class, which now
-  correctly returns the name of the exception type itself.
-- Added a diagnostic message to the wave driver executable, which is issued 
-  whenever a #pragma wave system() directive is found, but the -x (--extended) 
-  command line argument was not given.
-- Fixed long integer suffix to be allowed to be mixed case (1Ll or 2lL).
-- Fixed the BOOST_PP_CAT(1e, -1) pp-token bug. Wave now correctly recognizes
-  pp-number tokens, which are converted to C++ tokens right before they are 
-  returned from the library.
-- Moved the implementation of the token_id query functions (get_token_name(), 
-  get_token_value()) to a separate source file.
-- Fixed a bug, which prevented to prefer pp-numbers in files preprocessed as
-  a result of #include directives.
-- Fixed a bug, which prevented to open #include'd files specified by an 
-  absolute path.
-- Fixed a problem in the expression parser value type.
-- Fixed a dynaload compilation problem with VC7.1 of the re2c lexer tests.
-
-Sat Dec 24 13:33:53 CST 2005
-- Version 1.2.2
-- Added three new preprocessing hooks: 'found_directive', 'skipped_token' and 
-  'evaluated_conditional_expression' (thanks to Andreas Sæbjørnsen for the 
-  suggestions).
-- Removed hook forwarding functions in the context_type.
-- Added missing include_next case branches for get_directivename() function.
-- Added new sample: advanced_hooks.
-- Fixed a possible buffer overflow in the cpplexer and cpp exception classes.
-- Made the cpp_grammar thread safe.
-- Removed the need for the get_directivename() function. Fixed typos in the 
-  predefined token table.
-- Removed assertions from get_token_name() and get_token_value() and replaced 
-  these with more meaningful code.
-- Added the BOOST_WAVE_USE_STRICT_LEXER configuration constant which allows to
-  decide, whether the '$' character will be recognized as a part of identifiers
-  or not (the default is BOOST_WAVE_USE_STRICT_LEXER == 0, i.e. '$' will be
-  recognized as part of identifiers).
-- Added the possibility to testwave to extract a tagged comment based on a
-  preprocessor constant (testwave V0.4.0).
-- Made the predefined_macros_grammar thread safe.
-- Added dll support for the generated Wave libraries.
-- Added the const_iterator based exlicit instantiations for the Re2C lexer to 
-  the built Wave library and dll.
-- Added the whitespace handling policy to the context object. This actually is 
-  no separate policy, it's a new preprocessing hook allowing to decide, whether
-  a concrete token has to be skipped.
-- Changed the --preserve option of the wave tool to take a single integer 
-  argument (0: no whitespace is preserved, 1: only comments are preserved, 
-  2: all whitespace is preserved)
-- Edited the command line option descriptions of the wave driver.
-- Fixed broken tags in documentation (magically inserted by DreamWeaver).
-- Merged the new whitespace_handling policy with the existing preprocessing 
-  hooks. The name of the new preprocessing hook ist may_skip_whitespace().
-- Fixed compatibility issues for CW9.4 in the Wave test aplication.
-- Added get_errorcode() member to the wave exception classes allowing to 
-  get back the reason for the exception.
-- Added boost::wave::is_recoverable(cpp_exception const&) alowing to decide,
-  whether it is possible to continue after a cpp_exception has been thrown.
-  This is a temporary hack to overcome the current limitation of the library
-  not allowing to do generic error recovery. It allows to recover from 75% of
-  the generated errors types.
-- The --timer command line option for the Wave driver now prints the elapsed 
-  time correctly even if a preprcessing error occured.
-- Fixed an error recovery problem which skipped one token after continuing in
-  case this was a pp directive.
-- Added the --autooutput (-E) option to the Wave driver applet which redirects 
-  the generated output to a file named after the input file changing the file 
-  extension to '.i'.
-- Changed all throw's to boost::throw_exception.
-- Added the possibility to configure the command keyword for the wave specific 
-  #pragma directives. It is now possible to define a string literal via
-  BOOST_WAVE_PRAGMA_COMMAND, which will be recognized and all corresponding
-  #pragma's are dispatched to the interpret_pragma() preprocessing hook.
-  The default value for BOOST_WAVE_PRAGMA_COMMAND is "wave", just to ensure 
-  complete backward compatibility.
-- Added missing #pragma warning(pop) directives.
-- Fixed a bug wrt error propagation in the expression parser.
-- Fixed an assertion fired when cpp_token is used to process the quick_start 
-  sample.
-- Fixed a (Windows specific) bug which triggered a boost::file_system exception
-  under certain conditions.
-- Switched to Re2C V0.9.11
-- Fixed a problem with the new '-E' (--autooutput) option.
-- Added better error reporting for duplicate macro definitions to the Wave 
-  tool. Added the macro_handling_exception type containing the corresponding 
-  macro name via the new (virtual) get_related_name() function.
-- Added the get_severity() function to the exceptions thrown by the Wave
-  library.
-- Extended the copyright notice to include the year 2006.
-  
-Mon Dec  5 22:05:22 CST 2005
-Boost V1.33.1
-- Version 1.2.1
-- Fixed bug reported as Sourceforge bug 1274584.
-- Switched to Re2C V0.9.9.
-- Fixed a bug where the 'parameters' and 'definition' parameters to the 
-  defined_macro callback of the preprocessing hooks were always empty (thanks
-  to Stefan Seefeld for reporting).
-- Fixed missing namespace specifiers in token definition macros (thanks to 
-  Jozsef Mihalicza for reporting).
-- Enabled --preserved and --long_long modes by default for the cpp_tokens 
-  sample.
-- Newline tokens reported a wrong line number (offset by one) when using the
-  Re2C generated lexer (thanks to Jozsef Mihalicza for pointing this out).
-- Changed file positions to carry 'unsigned int' line and column numbers.
-- Fixed tokens of a generated #line directive to carry the correct column 
-  numbers.
-- Tokens now contain the correct filename, line and column numbers even if
-  a #line directive was encountered.
-- Fixed wrong line numbering in reference comments of the tests t_5_002.cpp and 
-  t_5_035.cpp.
-- Made sure, that preprocessor expression errors get ignored for 'passive' 
-  #elif branches.
-- Fixed an issue reported by the gcc debug stl.
-- Added the <vc-7_1-stlport><*><rtti>off directive to all of the V1 Jamfiles.
-
-Wed Aug 17 20:21:00 CST 2005
-Boost V1.33.0
-Version 1.2
-- Fixed name clash wrt T_DIVIDE on FreeBSD.
-- Fixed documentation of the different language_support flags.
-- The support for long long suffixes is no longer bound to the variadics mode,
-  it has to be enabled by the new long_long mode (default in C99).
-- Fixed compilation if BOOST_WAVE_DUMP_PARSE_TREE is defined.
-- Fixed lexer error message wrt long_long mode.
-- Stefan Seefeld fixed a bug in the lexer, where include_next was assumed for
-  included files containg a "include_" in their name.
-- Fixed some trigraph token id's in the lexers.
-- Added column information to the re2c generated lexer.
-- Added tests for the different lexers.
-- Fixed the found_include_directive preprocessing hook to carry the information
-  about #include_next directives as well.
-- Separated the different lexer tests.
-- Fixed a bug in the whitespace eater.
-- Fixed a bug where Wave emitted the found C++ comments in --preserve mode even
-  if these were found inside of disabled #if/#endif blocks.
-- Removed the function local static grammars to avoid possible raise conditions
-  and to make CW8.3 happy.
-- Unified lexer interface, adjusted namespaces.
-- Added lexer testcases to the regression tests.
-- Fixed test cases to scale to 64 bit platforms.
-- Disabled the MS specific extensions in the lexer tests in a platform related
-  way.
-- Added special handling of the eof tokens inside the lexer iterator classes
-  for Comeau.
-- Applied a workaround proposed by David Abrahams to make the slex lexer work 
-  on the CodeWarrior platforms.
-  
-Sun May  8 17:22:59 WEDT 2005
-Version 1.1.17
-- Added ill_formed_character_literal and ill_formed_integer_literal errors.
-- Improved error handling and diagnostics for integer overflow in #if/#elif
-  expressions.
-- Fixed a bug in the testwave application which prevented the correct 
-  recognition of expected errors under certain circumstances.
-- Fixed a portability problem (for gcc 3.3.x) in the testwave application.
-- Enforced that #if/#endif are balanced file wise.
-- Changed the command line arguments for the Wave testrun to use absolute 
-  directories.
-- Changed the test application to return a value != zero if one of the given 
-  config files were not found.
-- Fixed a command line parsing problem caused by a change in the parameter
-  handling inside in the program_options library.
-- Switched to the most recent version of re2c (V0.9.7.dev).
-- Fixed a como compilation error and several como --a warnings.
-- The T_EOF token doesn't carry the value of the previous token anymore.
-- Added operator==() to the token classes to fix the ambiguity error reported
-  by the True64 compiler.
-- Improved the error message, when empty arguments are used in pure C++ mode.
-- Added character literal out of range testing and an additional corresponding 
-  error message.
-- Fixed parsing of long character literals (such as '\x1234').
-- Fixed almost all problems diagnosed by the Boost inspection report.
-- Several fixes to make the True64 compiler happy.
-- Added the long long suffix handling to the C99 mode (LL/ll).
-- Fixed a bug in the slex regex specifications.
-
-Thu Apr  7 10:07:45 WEDT 2005
-Version 1.1.16
-- Fixed a bug in the white space eating component, which prevented a C++ 
-  comment to be suppressed if it followed after another whitespace.
-- Fixed the inconsistencies between the documentation and the behaviour wrt the 
-  different include search paths. See the Wave driver docs for details of how
-  the '-I', '-I-', and '-S' options work.
-- Allowed to specify more than one config file ('@' syntax) on the command line
-  of the wave driver executable.
-- Changed copyrights in all files to reflect the acceptance of Wave into Boost.
-- Unknown preprocessing directives were not recognised as such anymore.
-- If comments shouldn't be preserved all C++ comments are replaced by newline
-  tokens (instead of beeing igored completely).
-- Fixed a bug in the white space eater component.
-- Fixed a bug which reported wrong line numbers for error encountered during 
-  retokenisation (concatination).
-- Fixed a bug in the unescaping code.
-- Fixed a compilation error of the testwave executable (added a missing 
-  namespace specifier).
-- Added a missing header to make cpp.re.cpp compile on CW.
-- The predefined macro __BASE_FILE__ now returns a properly escaped file name 
-  string.
-- Fixed the function boost::wave::util::impl::unescape_lit().
-- Added the Wave unit test framework. For now it contains about 60 unit tests
-  executed by a special test driver (testwave).
-- Added the '$F' replacement string to the testwave application. This allows
-  to handle file paths sensitive comparison of the expected and real results.
-- Fixed a minor problem in the whitespace eating component.
-- Added optional trigraph conversion.
-- Changed all size_t, time_t etc. to std::size_t, std::time_t etc (for CW).
-- If the comments should not be preserved every C comment containing at minimum 
-  one newline is now converted to a newline token.
-- Added the lexed_tokens sample.
-- Fixed warnings and errors reported by the CodeWarrior compiler.
-- Added the '$V' replacement string to the testwave application. It expands to 
-  the current BOOST_LIB_VERSION.
-- Diagnosed the attempt to redefine the alternative operators as and, or etc.
-- Improved error handling.
-- Disabled the flex_string class for VC7, enabled to fallback to std::string 
-  for this compiler.
-- Renamed files to comply with the Boost rules.
-- Added the first part of the MCPP validation suite to the Wave unit tests.
-- Added even more missing "using namespace std;" statements for functions from
-  the C runtime library. The Wave test suite now contains more than 100 unit
-  tests.
-- Added the $P/$P(basename) replacement string to the testwave application 
-  which expands to the full path of the current file ($P) or to the current 
-  directory/basename ($P(basename)).
-- Fixed a bunch of portability problmes revealed by the regression tests on
-  different platforms. Thanks to Stefan Slapeda for his support to make it work
-  on the cw-9_4 toolset (win32).
-  
-Tue Mar 22 14:52:45 WEST 2005
-Version 1.1.15
-- Fixed a bug where the complete set of C99 predefined macros were pre-defined
-  when in C++ mode and variadics were enabled.
-- When in variadics or C99 mode the __BASE_FILE__ predefined macro expanded to
-  <Unknown>.
-- Added the --listincludes option to the Wave driver executable which allows to
-  log the file names of the include files opened.
-- Fixed a gcc warning in token_cache.hpp (unused variable end).
-- Changed the logic behind #include_next. It now starts searching with the 
-  next directory after the directory the current file (the file containing the 
-  #include_next directive) is located in.
-- Changed the signature of the undefined_macro preprocessing hook to take the 
-  token itself and not the macro name only. This is important to pass the full
-  context information about the position of the #undef directive to the 
-  user provided hook (thanks to Stefan Seefeld for pointing that out).
-- Fixed several broken links in the Context Policy topic.
-- Fixed a bug in the handling of the #include_next directive inside of 
-  non-evaluated #if blocks.
-- Fixed a bug in the #include_next handling code (thanks to Stefan Seefeld).
-- Changed the signature of the opened_include_file() preprocessing hook which 
-  now receives not only the absolute file name of the openend include file but
-  additionally gets passed the (possibly) relative path of the openend include
-  file. This concrete format of the relative path depends on the format of the
-  include search directory given to the library.
-- Added a new preprocessing hook 'found_include_directive()' which gets called
-  for every #include directive (even for those where the file to include 
-  doesn't exist) and which gets passed the (expanded) token sequence found 
-  after the #include directive token.
-- The file names passed to the preprocessing hooks are now normalised.
-- Changed the opened_include_file() preprocessing hook to receive the correct
-  relative path even if the included file was found in the current directory.
-- Fixed a bug which reported 'defined(or)' as invalid (similarly all the other
-  alternative bit operation token types).
-- Fixed a bug which prevented to define variadic macros from the command line.
-- Added a 'preserve comments' mode to preserve the comments in the input stream
-  not inserted into macro definitions.
-- Added a new --preserve (-p) command line switch to the wave driver 
-  application to allow comments to be preserved in the generated output stream.
-  
-Mon Feb 21 09:30:04 WEST 2005
-Version 1.1.14 (Fixes in response to the Boost review)
-
-Wave was accepted into Boost! 
-
-With special thanks to Tom Brinkman, who volunteered to be the review manager.
-
-With thanks to David Abrahams, Beman Dewes, Reece Dunn, Larry Evans, 
-Doug Gregor, Joel de Guzman, Baptiste Lepilleur, Andy Little, Paul Mensonides, 
-Dan Nuffer, Andreas Pokorny, Vladimir Prus, Gennadiy Rozental, Michiel Salters, 
-Jonathan Turkanis, Chris Uzdavinis, Pavel Vozenilek, Michael Walter for bug 
-reports, fixes and hints.
-
-- Added support for the MS extensions #region and #endregion, which simply get
-  ignored by Wave. The support for these is enabled only, when the pp constant
-  BOOST_WAVE_SUPPORT_MS_EXTENSIONS is defined. Otherwise these get flagged as 
-  an illegal preprocessor directive (as before).
-- Fixed a problem, where the replacement text for a #pragma directive got lost
-  if this directive was on the last line of a processed (include-)file.
-- Changed the default value for BOOST_WAVE_SUPPORT_MS_EXTENSIONS for non-
-  Windows systems to zero.
-- Updated outdated external links in the documentation.
-- Fixed certain grammatical and stylistic quirks in the documentation.
-- Fixed a problem in libs/wave/build/Jamfile.v2 (as reported by Larry Evans).
-  Fixed the Jamfile.v2 in the samples directories accordingly.
-- Added the '<toolset>vc-7_1:<rtti>off' to all Jamfile.v2 files to adjust for 
-  the internal buffer overflow bug in the VC7.1 compiler (reported by Joel de 
-  Guzman).
-- Changed the '<toolset>vc-7_1:<rtti>off' to '<toolset>vc-7.1:<rtti>off' as
-  required by the Boost.Build.v2 library (suggested by Vladimir Prus).
-- Finally fixed the Jamfile.v2 file (after a suggestion from Reece Dunn)
-- Fixed the column number reported for tokens for Slex lexer based 
-  configurations (reported by Baptiste Lepilleur).
-- Added the __BASE_FILE__ predefined macro, which contains a string literal 
-  of the main file name to preprocess (the one the context<> template was
-  created with). (suggested by Pavel Vozenilek)
-- Used the boost::reverse_iterator instead of the std::reverse_iterator
-  for the flex_string class to allow compilation of Wave with VC7.0
-  (as suggested by Reece Dunn).
-- Fixed a problem in the include_path template, which throwed a 
-  boost::filesystem exception whenever a character was used in a file name
-  to include, which is marked as illegal by the default name checker of the
-  boost::filesystem::path.
-  
-Version 1.1.13 (Boost review candidate 2, bug fixed version)
-- Fixed a problem, where the context<> template referenced temporary iterator
-  objects from the underlying stream (thanks to Michiel Salters for reporting
-  this).
-- Fixed a bug in the re2c lexer, which allowed to dereference the end iterator 
-  of the underlying input stream (thanks to Doug Gregor for pointing this out).
-- Fixed several assertions fired by the iterator checking code of the VC8 stl.
-
-Version 1.1.12 (Boost review candidate)
-- A rough performance analysis showed, that 30% of the time is spent parsing 
-  the input for pp directives (cpp_grammar), 35% of the time is spent inside
-  the flex_string code, mainly in the copy constructor and assignment 
-  operator, 15% of the time is spent inside the list and vector member 
-  functions, 10% is spent for memory allocation but only 1% of the time is 
-  spent in the re2c lexer.
-- Identified a performance problem, where the token_cache was instantiated
-  for every created lexer object, but needed to be initialised only once.
-- Added #include <wave_version.hpp> to wave_config.hpp
-- Fixed problems reported by the gcc 3.4.1 compiler.
-- Adjusted Jamfiles for the new toolset names introduced in Boost V1.32.
-
-Version 1.1.11
-- Updated copyrights.
-- Fixed some bugs introduced by the latest refactoring.
-- Tried to fix the expansion of macros, which replacement-list terminates in a 
-  partial macro expansion. No success so far.
-
-Version 1.1.10
-- Refactored some of the macro map (macro namespace) code (added comments, 
-  splitted into separate files),
-- Fixed some typename errors in cpp_macromap.hpp (thanks to Vladimir Prus).
-- Fixed the BoostBuild V2 Jamfiles (thanks to Vladimir Prus).
-
-Version 1.1.9
-- Moved all of the #pragma wave option(value) operators out of the wavelib into 
-  the wave driver program. Removed enable_trace() and trace_flags() policy
-  functions. Renamed trace_policy into context_policy.
-- Added the defined_macro() and undefined_macro() preprocessing hooks to allow
-  easily to build macro cross referencers and such.
-
-Version 1.1.8
-- Replaced the usage of the string::erase() and string::insert() functions, 
-  which were the only non-const string member functions used.
-- Token pasting is now well defined in variadics mode (was in C++0x mode only).
-- Changed the timing code in the wave driver to include the parsing of 
-  files included by the --forceinclude command line switch.
-- Performance measurements (very informal) [sec], the files are some of the
-  preprocessor specific test cases from Paul Mensonides chaos_pp library.
-
-                        std::string   flex_string   const_string   const_string
-                                                      12 Byte        28 Byte
-    arithmetic.cpp        2.543          1.742         0.951           1.001
-    array.cpp             2.453          1.762         0.951           1.011
-    comparison.cpp        0.560          0.340         0.270           0.280
-    control.cpp           0.590          0.340         0.290           0.300
-    debug.cpp             0.370          0.310         0.190           0.190
-    detection.cpp         0.050          0.060         0.030           0.030
-    extended.cpp          0.370          0.260         0.190           0.190
-    facilities.cpp        0.610          0.340         0.290           0.300
-    iteration.cpp         1.081          0.550         0.410           0.450
-    list.cpp              1.742          1.141         0.811           0.851
-    logical.cpp           0.070          0.200         0.040           0.040
-    punctuation.cpp       0.030          0.080         0.020           0.020
-    repetition.cpp        1.392          0.851         0.650           0.690
-    selection.cpp         0.440          0.270         0.210           0.220
-    slot.cpp              0.680          0.350         0.240           0.270
-    tuple.cpp             0.420          0.240         0.190           0.210
-                      
-
-Wed Aug 25 13:23:27 WEDT 2004
-Version 1.1.7
-- Branched for Boost Release.
-- Removed several features from the code base:
-  . removed C++0x support
-  . removed TST support
-- Fixed the program_option validator syntax, which has changed since the last 
-  update.
-- Removed misleading configuration options from the cpp_config.hpp file, 
-  because the application will have to use the same config options as were used
-  during the compilation of the library.
-- Changed the naming convention of typedef'd types in the library. Removed the 
-  _t suffix, wherever possible.
-- Updated the documentation to reflect the removal of the C++0x features.
-
-- Changed the licensing scheme to:
-// Copyright 2004 Joe Coder. Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-Mon May 24 10:02:47 WEDT 2004
-Version 1.1.6
-- Fixed a incompatibility with the new program_options version.
-
-Version 1.1.5
-Version 1.0.6
-- Fixed a bug, which reported an #include statement as ill formed, if it was 
-  followed by an empty C comment only. This was an error in the cpp.re regular 
-  expression for C comments. Additionally, since this change simplified the 
-  Re2C generated lexer a lot it was possible to remove the compiler workaround 
-  for the VC7.1 compiler which prevented the optimization of this lexer.
-  
-Mon Mar 29 09:36:59 WEDT 2004
-- Corrected the signature of the main() functions (was main(int, char const*[])).
-
-Sun Mar 28 12:55:59 WEDT 2004
-Version 1.1.4
-- Fixed a problem, where the first returned token was lost, whenever a 
-  --forceinclude file was given.
-- Adjusted the Wave driver and the other samples to use the new program_options 
-  library syntax (V1.1.x only).
-  
-Mon Mar  1 19:14:21 WEST 2004
-Version 1.1.2
-Version 1.0.4
-- Fixed a problem, which does not report an error, if in a #define statement in 
-  between a macro name and its replacement list were no whitespace given.
-- Fixed a bug, which generated an unexpected exception of the $ character in the 
-  input.
-- Macro definitions, which differ by whitespace only (one definition contains 
-  whitespace at a certain position, the other definition does not) are correctly 
-  reported as a warning now.
-- Fixed a problem, where different formal argument names during macro 
-  redefinition were not flagged as a warning.
-- A wide character string used in a #line directive wasn't flagged as an error. 
-  
-Sun Feb 29 19:10:14 WEST 2004
-Used the test suite distributed with the mcpp V2.4 preprocessor to fix a bunch
-of mostly minor issues:
-- Fixed trigraph backslash followed by a newline handling (??/ \n) in the 
-  re2c (C/C++ and IDL) scanners.
-- Fixed a digraph/trigraph token type handling problem during macro expansion.
-- Fixed a digraph/trigraph token type problem during handling of the null 
-  preprocessor directive.
-- Fixed several signed/unsigned conversion bugs in the expression evaluator.
-- Fixed the || and && operators in the expression evaluator to stop evaluation,
-  as only the outcome of the overall expression is determined.
-- Fixed the expression evaluation engine to detect divide by zero errors.
-- Fixed a bug with operator || and && arithmetic (the deduced type was wrong).
-- Fixed a bug with the unary operators ! and - which IN conjunction with an 
-  arithmetic operation yielded A wrong result type.
-- Fixed a bug, which reported a macro definition as an invalid redefinition, if
-  it was different from the original definition only by different whitespaces.
-- Fixed a bug, which reported the redefinition of one of the alternative tokens
-  as 'and', 'bit_and' etc. as invalid.
-- Fixed a bug in the character literal parser, which prevented the recognition
-  of multibyte character literals.
-
-- Moved the cpp_token_ids.hpp header into the main wave.hpp header, because the
-  values defined therein aren't changeable by the user anyway.
-- Fixed some spelling errors in the documentation (thanks to Rob Stewart).
-
-Tue Feb  3 20:20:16 WEST 2004
-- Fixed the problem, that macro definitions in a config file were flagged as 
-  an error, if there was any whitespace in between the -D and the macro name
-  (same problem existed for -P).
-  
-Fri Jan 30 20:28:27 WEST 2004
-- Fixed a missing boostification in the trace support header.
-- Added a missing std:: namespace qualification to the list_includes.cpp sample 
-  file.
-- Fixed line ending problems with the cpp.re and idl.re files.
-- Added quick_start sample.
-
-Sun Jan 25 20:26:45 WEST 2004
-This version was submitted to Boost as the review candidate (V1.1.0)
-- Fixed invalid explicit instantiation syntax as reported by the Comeau 
-  compiler.
-- Added a missing header to flex_string.hpp.
-
-Sat Jan 24 19:47:44 WEST 2004
-- Completely decoupled the used lexer from the preprocessor.
-- Unfortunately had to change the template interface of the context class. It 
-  now instead of the token type takes the type of the lexer to use.
-- Reintroduced the cpp_tokens, list_includes and waveidl samples. 
-  . cpp_tokens is based on the SLex lexer
-  . list_includes shows the usage of the include file tracing capability
-  . waveidl uses the Re2C based IDL lexer in conjunction with the default token
-    type
-  
-Tue Jan 13 20:43:04 WEST 2004
-- Fixed several compilation issues under linux (gcc 3.2.3, gcc 3.3, gcc 3.3.2, 
-  gcc 3.4, Intel V7.1)
-- Fixed a compatibility problem with Spirit versions older than V1.7.
-
-Mon Jan 12 20:39:50 WEST 2004
-- Boostified the code base:
-  . Moved code into namespace boost.
-  . Prefixed all pp constants with "BOOST_".
-  . Refactured the directory structure.
-- Removed IDL mode and SLex lexer from the code base. These will be re-added as 
-  samples.
-- Changed the Wave configuration system to be more flexible (all 
-     #if defined(BOOST_WAVE_...) changed to #if BOOST_WAVE_... != 0),
-  which allows to configure the library without changing the code base itself
-  
-Sat Jan 10 18:17:50 WEST 2004
-- Incorporated Andrei Alexandrescu's latest changes to the flex_string class, 
-  which resulted in an overall spedd gain of about 5-10%.
-  
-Wed Jan  7 17:46:45 WEST 2004
-- Found a major performance hole! The achieved general speedup is about 50-70%.
-- Added missing old MS specific extensions to the re2c lexer (_based, 
-  _declspec, _cdecl, _fastcall, _stdcall, _inline and _asm).
-- Added support for #include_next (as implemented by gcc).
-- Fixed compilation problems with gcc 3.3.1
-- Avoid to look up in symbol table of a potential macro name twice.
-- Added the Spirit SLex lexer sample to the Wave source tree, because it was 
-  removed from the Spirit distribution.
-- Removed the configuration option, which allowed to reverse the names stored 
-  in the symbol tables.
-- Implemented experimental support for using a TST (ternary search tree) as the
-  container for the symbol tables.
-   
-Sun Jan  5 12:30:50     2004
-- Released V1.0.0
-
-Sun Jan  4 00:11:50     2004
-- Removed tabs from the flex_string.hpp file.
-- Modified the input_functor.hpp file to sqeeze out some milliseconds at 
-  runtime.
-- The --timer option now prints the overall elapsed time even if an error 
-  occured.
-- Added support for #pragma once.
-
-Fri Jan  2 22:58:54     2004
-- Fixed a bug in the code, which predefines the preprocessor constants.
-- Fixed a bug in intlit_grammar<> initialisation code.
-
-Thu Jan  1 21:15:03     2004
-- Fixed a bug while predefining a macro with a value through the commmand line.
-- Fixed a bug, which reported a macro definition as illegal, if the redefined 
-  macro was a function like macro with parameters.
-- Fixed a bug, if concatenation of two tokens resulted in a C++ comment start 
-  token.
-  
-Thu Jan  1 15:01:54     2004
-- Finished license migration.
-
-Wed Dec 31 12:23:55     2003
-- Changed the copyright and licensing policiy to be Boost compatible.
-
-Wed Dec 31 12:01:14     2003
-- Fixed a problem while compiling certain headers from the Microsoft Windows 
-  SDK:
-        #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
-        nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
-        CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
-        nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
-  where essentially is no whitespace between the parameter list and the macro
-  replacement list.
-- Fixed a problem with the MS extension __declspec, which now is recognized
-  correctly.
-  
-Sat Dec 27 14:48:29     2003
-- Fixed remaining problems with assign/assign_a.
-- Fixed some gcc warnings about signed/unsigned comparision mismatch.
-
-Tue Nov 11 20:51:41 WEST 2003
-- Changed the IDL mode to recognize identifiers only. All keywords (except 
-  'true' and 'false') are returned as identifiers. This allows for easy 
-  extension of the IDL language. The drawback is, that after preprocessing 
-  there needs to be just another lexing stage, which recognizes the keywords.
-- Fixed a possible problem, when in between a #if/#elif directive and a 
-  subsequent opening parenthesis Wave finds no whitespace:
-    #if(_WIN_VER >= 0x0500)
-  is now recognized correctly. 
-  (This problem was pointed out by Porter Schermerhorn).
-  
-Sun Nov  9 21:05:23 WEST 2003
-- Started to work on implementation of an IDL lexer for the TAO idl compiler.
-  . Branched off the Re2C C++ lexer and related files as a starting point for 
-    the new IDL lexer. Added connfiguration means to allow compile time
-    decision, in which mode to operatoe (C++ or IDL).
-  . Implemented the Re2C based IDL lexing component.
-  . Fixed all occurences of non-IDL tokens (as T_COLON_COLON and T_ELLIPSIS)
-
-Sat Nov  8 20:05:52 WEST 2003
-- Version 1.0.0
-- Munged the email addresses embedded within the source files.
-- Adjusted for the new actor names in Spirit (assign_a and append_a).
-
-Thu Aug 21 16:54:20     2003
-- Removed the internally used macro 'countof()' to avoid possible nameclashes 
-  with user code.
-- Fixed a bug, which prevented the execution of the concatination operator '##'
-  while expanding object-like macros.
-  
-Tue Aug  5 10:04:00     2003
-- Fixed a false assertion, if a #pragma directive started with some whitespace 
-  on the line.
-- Added the #pragma wave timer() directive to allow rough timings during 
-  processing. This is done on top of a new callback hook for unrecognized 
-  #pragma's, which allows to easily add new pragma commands without changing 
-  the Wave library.
-- Fixed a bug in the whitespace insertion engine, which prevented the insertion 
-  of a whitespace token in between two consecutive identifier tokens or a 
-  integer literal token followed by an identifier token.
-- Fixed a bug during macro concatenation, which allowed to concatenate 
-  unrelated tokens from the input stream:
-    #define CAT(a, b) PRIMITIVE_CAT(a, b)
-    #define PRIMITIVE_CAT(a, b) a ## b
-    #define X() B
-    #define ABC 1
-    CAT(A, X() C) // AB C
-    CAT(A, X()C)  // correct: AB C, was 1
-- Fixed a 64 bit portability problem.
-- Added pragma wave timer(suspend) and wave timer(resume)
-- Fixed a ODR problem with static initialization data for predefined macros.
-- Ported the iterators to the new iterator_adaptors.
-- Updated the documentation to reflect the recent changes
-
-Sun Jun 29 12:35:00     2003
-- Fixed 64 bit compatibility warnings.
-- Fixed a bug, which prevented the correct recognition of a #line directive, if
-  only the filename part of this directive was generated by a macro expansion.
-- Fixed a bug during macro expansion of conditional expressions, which 
-  prevented the correct expansion of certain scoped macros.
-  
-Fri Jun 27 09:50:14     2003
-- Changed the output of the overall elapsed time (option --timer) to cerr.
-- Added a configuration constant WAVE_REVERSE_MACRONAMES_FOR_SYMBOLTABLE, which
-  reverses the macro names while storing them into the symbol table, which 
-  allows to speed up name lookup especially, if the macro names are very long
-  and if these share a common prefix.
-- Fixed a very subtle bug, which prevented the recognition of fully qualified
-  macro names during the macro expansion of conditionals expressions (for 
-  #if/#elif).
-- Improved the error output for the illformed pp expression error.
-  
-Thu Jun 26 08:20:30     2003
-- Done a complete spell check of the source code comments.
-
-Wed Jun 25 20:33:52     2003
-- Changed the conditional expression engine to work with integer numeric 
-  literals only. Distinguished signed and unsigned literals.
-- Importing a region twice is allowed now.
-- Fixed a bug, which does not removed all placeholder tokens from a expanded 
-  token sequence while evaluating conditional expressions (C++0x mode only).
-
-Wed Jun 25 15:01:51     2003
-- Changed the conditional expression engine to respect the type of numeric 
-  literals, now expressions like '#if 1 / 10 == 0' evaluate correctly (to true
-  :-)
-- Fixed a bug, where macro names referring to global macros (as ::A::B) were 
-  not correctly recognized under certain circumstances.
-- Empty parameter lists for macros with ellipses only sometimes generated a 
-  placemarker token in the output:
-    #define STR(...) #__VA_ARGS__
-    STR()   // resulted in "§" instead of "" .
-
-Wed Jun 25 08:35:06     2003
-- Fixed several gcc compilation errors (missing typename's etc.)
-- Fixed a compilation problem, if Wave is built on top of the SLEX scanner.
-- Reformatted the --timer output from pure seconds to a more reasonable format.
-
-Fri Jun 20 19:33:30     2003
-- Changed the enable_tracing function of the tracing_policies to take a 
-  trace_flags variable instead of a bool, to allow to control tracing with more
-  granulation.
-- Added the tracing_enabled function to the tracing_policies, which returns the 
-  current tracing status.
-- Updated the documentation of the tracing policies.
-
-Thu Jun 19 21:45:39     2003
-- Reactivated the list_includes sample with the help of the new include file 
-  tracing facility.
-
-Thu Jun 19 17:55:35     2003
-- Eliminated the TraceT template parameter from the macromap<> template.
-- Added two hooks to the trace policy to allow to trace the opening and 
-  closing of include files.
-
-Thu Jun 19 14:08:10     2003
-- Added the command line option --timer, which enables the output to std::cout
-  of the overall elapsed time during the preprocessing of the given file.
-
-Fri Jun 13 09:11:29     2003
-- Emitted an error message, if an ellipses was found as a formal macro 
-  parameter and variadics were disabled.
-- Fixed a false error message, that the last line was not terminated with a 
-  newline, which occured, if no output was generated by the last line of the
-  source file.
-  
-Thu Jun 12 15:20:22     2003
-- Fixed the recent change in argument expansion for the variadics/C99/C++0x 
-  mode.
-- Fixed a problem, where an additional whitespace between _Pragma and the 
-  opening parenthesis resulted in a false error message.
-- Used a pool allocator for the token sequence containers (std::list<>'s),
-  which gives a speed gain of more than 60% (while profiling the Order 
-  library).
-  
-Wed Jun 11 22:18:54     2003
-- Fixed a macro scoping/expansion problem, when a macro returned a full scope
-  which is continued on the call site to form a full qualified name, the name 
-  wasn't recognized correctly:
-    # region A
-    #  define MACRO 1
-    #  region B
-    #   define MACRO 2
-    #  endregion
-    # endregion
-    # define ID(x) x
-    ID(A)::MACRO     // 1
-    ID(A::B)::MACRO  // 2, was expanded to A::B::MACRO
-- Changed the expansion of macro arguments such, that these will be expanded 
-  only, if the result is to be used for substitution during the expansion
-  of the replacement list.
-  
-Wed Jun 11 14:40:29     2003
-- Included a whitespace eating finite state machine (FSM) for minimal 
-  whitespace in the generated output. This was suggested by Paul Mensonides.
-- Updated the acknowledgement section
-
-Wed Jun  4 08:03:04     2003
-- Fixed a bug reported by Faisal Vali, which prevented the correct evaluation 
-  of conditional expressions, if these referenced macro names, which expanded 
-  to a sequence containing non-expandable tokens.
-- Fixed the above bug for #elif directives too (in the first place this was 
-  fixed for #if directives only)
-  
-Mon May 26 22:15:40     2003
-- Added missing copyrights in several files.
-- Fixed false output, if a unknown _Pragma were encountered.
-- Fixed a macro expansion problem with qualified names, were constructs like
-  the following were not expanded correctly:
-    #define ID(x) x
-    #region SCOPE
-    #  define TEST 1
-    #endregion
-    ID(SCOPE::) TEST    // should expand to 1
-- Changed #import semantics for macros from copy semantics to reference 
-  semantics, i.e. macros are now considered to be implicitly imported into the 
-  scope, where they are defined. If a macro is imported into another scope and 
-  the original macro is undefined, the imported macro still exists. Further, 
-  if the imported macro is expanded, then while rescanning the original macro 
-  is disabled too:
-    #region A
-    #  define B(x) x
-    #endregion
-    #import A
-    B    (A::B) (*) // A::B(*)
-    A::B (B)    (*) // B(*)
-    B    (B)    (*) // B(*)
-    A::B (A::B) (*) // A::B(*)
-- Fixed a recently introduced problem, where placemarker tokens slipped through 
-  to the output under certain conditions (in variadics/C99/C++0x modes only).
-
-Mon May 19 16:30:49     2003
-- Fixed a bug, which prevented the recognition of the __lparen__, __rparen__ or 
-  __comma__ alternative tokens, if these were the first token after an emitted
-  #line directive (reported by Vesa Karvonen).
-- Added an optimization, that only those tokens are considered for a macro 
-  expansion, which may result in an expansion.
-  
-Tue May 13 18:16:26     2003
-- Fixed a newly introduced problem, where a omitted argument consisting out 
-  of whitespace only were failed to be replaced by a placemarker token. This 
-  lead to problems with constructs like the following:
-    #define paste(a, b, c) a ## b ## c
-    paste(1, , 3)  // should expand to 13, but expanded to 1## 3
-- Fixed a problem with the tracing support, which throwed an unexpected 
-  exception if there were too few arguments given while expanding a macro.
-- Allowed to open and to import the global scope ('#region ::' and 
-  '#import ::').
-- Fixed a bug, if more than one file was given with a --forceinclude command 
-  line option.
-
-Sat May 10 21:30:29     2003
-- Added __STDC_FULL_REGION__ and __STDC_CURRENT_REGION__ to the list of not 
-  undefinable macros.
-- In normal C++ mode and C99 mode the #ifdef/#ifndef and the operator defined()
-  should not support qualified names. This is fixed now.
-- Updated the documentation.
-- Fixed minor gcc -Wall compilation warnings.
-- Added better error support for qualified names used as arguments for #ifdef,
-  #ifndef and operator defined().
-  
-Sat May 10 09:51:18     2003
-- Removed the feature, that the comma before the ellipsis parameter in a macro
-  definition may be omitted.
-- Resolved an issue with the expansion of qualified macros, when these 
-  qualified names were partially generated by a previous macro expansion
-- Allowed to specify fully qualified names as arguments to the #region directive
-  
-Wed May  7 22:44:21     2003
-- Changed the names of __SCOPE__ and __FULL_SCOPE__ predefined macros to 
-  __STDC_CURRENT_REGION__ and __STDC_FULL_REGION__ resp. The names are subject 
-  to change if the #region keyword actually will be renamed to #scope/#module
-  or whatever.
-- In C++0x mode it is now possible to omit the last comma before a variadics
-  ellipsis in a macro definition:
-    #define cat_i(a, b, c, d, e ...) a ## b ## c ## d ## e 
-- Fixed a bug in the stringize code, where an ellipsis to stringize resulted in
-  stringizing of the first ellipsis parameter only. Preserved the original 
-  whitespace delimiting in between the ellipsis arguments.
-- Introduced the wave::language_support enum for convenient switching of the 
-  supported language features throughout the library.
-- Fixed a bug, which prevented the definition of the predefined macro 
-  __WAVE_HAS_VARRIADICS__, if --variadics were given on the command line.
-  
-Tue May  6 15:49:45     2003
-- Made predefined macros available at every macro scope without qualification.
-- Predefined a new macro in C++0x mode: __STDC_GLOBAL__, which is defined at 
-  global macro scope only and equals to '1' (integer literal).
-- In C++0x mode there are two new predefined macros: 
-    __SCOPE__:      expands to the last part of the qualified name of the 
-                    current macro scope
-    __FULL_SCOPE__: expands to the full qualified name of the current macro 
-                    scope 
-    
-Mon May  5 23:02:48     2003
-- Fixed a problem in the new well defined token pasting code, which occured for
-  constructs like the following:
-    #define is_empty(...) is_empty_ ## __VA_ARGS__ ## _other
-  i.e. where two or more '##' operators were contained in the replacement text.
-- Implemented __comma__, __lparen__ and __rparen__ alternative pp-tokens, which 
-  may be used as the ',', '(' and ')' tokens during preprocessing. These are 
-  only converted to there respective string representation in a special 
-  translation phase after preprocessing. This was proposed by Vesa Karvonen.
-- Changed the macro scoping rules to: "If a qualified name does not find a 
-  nested name, it is not a qualified name to the preprocessor." This seems to 
-  be the simplest usable solution for the possible ambiguities.
-- Fixed a bug in the macro expansion engine in C++0x mode, where the skipping 
-  of whitespace inside of a qualified name wasn't consistent.
-
-Sun May  4 10:48:53     2003
-- Fixed a bug in the expression grammar, which prevented 'not' to be recognized
-  as a valid operator.
-- Qualified names are now supported as parameters to #ifdef and #ifndef too.
-- Remove one specialization of the macro expansion engine. It gets instantiated
-  only twice now (for the main input iterator and for list<>'s  of tokens.
-- Simplified the required explicit specialization of the defined_grammar
-  template. It has to be explicitely instantiated by providing the token type
-  only (just as for the explicit instantiations of the other grammars).
-
-Fri May  2 22:44:27     2003
-- Qualified names are now allowed as parameters to the operator defined() in 
-  C++0x mode.
-- Separated the defined() functionality into a separate translation unit to 
-  work around a VC7.1 ICE.
-  
-Fri May  2 15:38:26     2003
-- The C++0x mode now has a special set of predefined macros.
-- The predefined macro __WAVE_HAS_VARIADICS__ is now defined in C99 and C++0x 
-  modes too (--variadics is implied for these modes).
-- Updated the documentation to reflect the recent changes and additions.
-- In C++0x mode Wave now supports macro scopes:
-    - new keywords #region/#endregion/#import
-    - qualified macro names
-- In C++0x mode Wave now supports token pasting of unrelated tokens. These are
-  concatenated, the result is re-tokenized and inserted into the output stream.
-- Fixed a minor bug in the macro expansion engine, if a qualified function-like
-  macro was found in an object-like context.
-- Fixed an issue with well defined token pasting of unrelated tokens.
-
-Tue Apr 29 08:47:37     2003
-- Fixed a bug in the macro expansion engine, which prevented the expansion 
-  of a certain macro under specific conditions (if the left of two tokens to 
-  concatenate were a disabled one (T_NONREPLACABLE_IDENTIFIER), then the 
-  resulting token was disabled too).
-- Added additional diagnostics to the Wave driver to disambiguate the C99 and 
-  C++0x modes.
-- Implemented a new API function and a corresponding Wave driver command line
-  option, which allows to specify one or more include files to be preprocessed
-  before the regular file is preprocessed (the files are processed as normal
-  input and all the resulting output is included, before processing the regular 
-  input file). The Wave driver command line option is --forceinclude (-F).
-- Wave now compiles the Order library from Vesa Karvonen.
-  
-Mon Apr 28 07:57:10     2003
-- Fixed a bug in the macro expansion engine.
-- Removed a lot of (not needed) whitespace in the generated output (but still 
-  not optimal).
-
-Sat Apr 26 20:30:53     2003
-- Fixed a bug in the initialization code of the Slex lexer while working in 
-  C99 mode (reported by Reece Dunn).
-
-Fri Apr 18 08:37:35     2003
-- Fixed the handling of option_value's inside of pragma directives:
-    _Pragma("wave option(option_value)")
-  inside which all all whitespaces were deleted.
-- Started to implement experimental macro scoping.
-
-Thu Apr 10 10:20:07     2003
-- Fixed a problem with the #pragma wave stop(), where only the first token 
-  inside the stop directive was output, when the preprocessor stops in result
-  of this pragma.
-- Implemented a new #pragma wave system(command), which spawns a new operation
-  system command exactly as specified inside the system directive, intercepts
-  the stdout output of this process, retokenizes this output and inserts the
-  generated token sequence in place of the original #pragma or operator _Pragma.
-  Please note that the generated output is _not_ subject to any macro expansion
-  before its insertion as the replacement of the pragma itself. If you need to 
-  macro expand the replacement text, you always may force this by writing:
-    #define SCAN(x) x
-    SCAN(_Pragma("wave system(...)"))
-  which re-scans the replacement once.
-- Replaced the Wave position_iterator with the boost::spirit::position_iterator
-  (without any problems!).
-  
-Mon Apr  7 10:45:30     2003
-- Fixed macro_trace_policies::expand_object_like_macro not to be called with 
-  the formal arguments as one of its parameters.
-- Updated the documentation to reflect the changes needed for the tracing 
-  stuff.
-  
-Mon Mar 31 19:07:05     2003
-- Fixed variadics support in the trace output.
-- Fixed preprocessing of operator _Pragma() before it's execution.
-- Added _Pragma("wave stop(errmsg)") (#pragma wave stop(errmsg)) to allow 
-  diagnostics output from inside macro expansion.
-- Fixed operator _Pragma for unknown pragmas (these are simply put through to
-  the output).
-- Implemented a maximal possible include nesting depth to avoid an out of 
-  memory error. The initial value for this is configurable through the compile 
-  time constant WAVE_MAX_INCLUDE_LEVEL_DEPTH, which defaults to 1024, if not 
-  given.
-  Additionally this may be enlarged through a new command line option:
-  -n/--nesting (Wave driver only).
-
-Sun Mar 30 20:40:17     2003
-- Implemented the predefined macro __INCLUDE_LEVEL__, which expands to a 
-  decimal integer constant that represents the depth of nesting in include 
-  files. The value of this macro is incremented on every '#include' directive 
-  and decremented at every end of file. 
-- Implemented the operator _Pragma(). It is recognized in C99 mode and whenever 
-  variadics are enabled.
-  
-Sun Mar 30 08:30:12     2003
-- Changed the tracing format to be more readable.
-- Changed the tracing #pragma's to
-    enable tracing:     #pragma wave trace(enable)
-    disable tracing:    #pragma wave trace(disable)
-  or
-    enable tracing:     #pragma wave trace(1)
-    disable tracing:    #pragma wave trace(0)
-- Changed the semantics of the -t (--traceto) switch. Without any -t switch 
-  there isn't generated any trace output at all, even, if the corresponding
-  #pragma directives are found. To output the trace info to a file, the 
-  '-t file' syntax may be used, to output to std::cerr, the '-t-' (or '-t -')
-  syntax may be used.
-
-Fri Mar 28 17:27:25     2003
-- Added a new template parameter to the wave::context<> object, which allows
-  to specify a policy for controlling the macro expansion tracing. The default
-  macro_trace_policy does no tracing at all. This way one can add specific
-  macro expansion tracing facilities to the library.
-- #pragma directives starting with a STDC identifier are no longer not macro 
-  expanded in C++ mode, in C++ mode these are now expanded as usual, in C99 
-  mode not.
-- The tracing can be enabled/disabled from inside the preprocessed stream by
-  inserting a special #pragma directive:
-    enable tracing:     #pragma wave_option(trace: enable)
-    disable tracing:    #pragma wave_option(trace: disable)
-- The Wave driver now allows to specify a destination for the macro expansion 
-  tracing trough a new command line switch: '-t path' or '--traceto path'. If
-  this option isn't given, the trace output goes to stderr.
-- The Wave driver now allows to specify the name of the file, where the 
-  preprocessed result stream is to be saved: '-o path' or '--output path'. If 
-  this option is not given, the output goes to stdout.
-  
-Wed Mar 26 20:39:11     2003
-- Fixed a problem with alternative tokens (as 'and', 'or' etc.) and trigraph
-  tokens, which were not correctly recognized inside #if/#elif expressions.
-- Alternative tokens ('and', 'or' etc.) are no longer subject to a possible 
-  macro redefinition.
-- Fixed the special handling of 'true' and 'false' during the macro expansion 
-  of #if/#elif expressions.
-
-Tue Mar 25 12:12:35     2003
-- Released Wave V0.9.1
-
-Mon Mar 24 13:34:27     2003
-- Implemented placemarkers, i.e. Wave now supports empty arguments during macro 
-  invocations. This must be enabled by means of a new pp constant:
-  WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the 
-  placemarker and variadics code and by defining the command line option 
-  '--variadics' (Wave driver only).
-- Implemented variadics, i.e. Wave now supports macros with variable parameter 
-  counts. This must be enabled by means of the pp constant:
-  WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the 
-  placemarker and variadics code and by defining the command line option 
-  '--variadics' (Wave driver only).
-- Implemented a C99 mode. This mode enables variadics and placemarkers by 
-  default and rejects some specific C++ tokens (as the alternate keywords and 
-  '::', '->*', '.*'). This mode must be enabled by the means of the pp constant
-  WAVE_SUPPORT_VARIADICS_PLACEMARKERS (see above). The C99 mode is enabled by 
-  the command line switch '--c99' (Wave driver only).
-  This involved some changes in the C99/C++ lexers.
-  
-Fri Mar 21 16:02:10     2003
-- Fixed a bug in the macro expansion engine, which prevented the expansion of
-  macros, which name was concatenated out of a identifier and a integer 
-  followed directly by another identifier:
-    #define X() X_ ## 0R()  // note: _zero_ followed by 'R'
-    #define X_0R() ...
-    X() // expanded to:  X_0R(), but should expand to ...
-  This is a problem resulting from the fact, that the Standard requires the 
-  preprocessor to act on so called pp-tokens, but Wave acts on C++ tokens.
-  
-Thu Mar 20 21:39:21     2003
-- Fixed a problem with expression parsing (#if/#elif constant expressions), 
-  which failed to produce an error message for expressions like
-    #if 1 2 3 4 5
-  i.e. where the token sequence starts with a valid constant expression, but 
-  the remainder of the line contained other tokens than whitespace.
-- Integrated the flex_string class from Andrei Alexandrescu (published on the
-  CUJ site) to get COW-string behaviour for the token values and position 
-  filename strings. This resulted in a major overall speedup (about 2-3 times 
-  faster in dependency of the complexity of pp usage in the input stream).
-- Fixed a bug, which reported ill formed #if/#else expressions as errors, even 
-  if the current if block status (conditional compilation status) is false.
-- Added a warning, if the last line of a file does not end with a newline.
-- Improved error recognition and handling for malformed preprocessor directives
-
-Mon Mar 17 19:53:29     2003
-- Fixed a concatenation problem: constructs like a##b##c where expanded 
-  incorrectly.
-- Optimized the recognition of pp directives: 
-    - the parser is used only, if the next non-whitespace token starts a pp 
-      directive 
-    - null directives now are recognized without calling the parser
-    - the parser isn't called anymore, if the if_block_status is false and no
-      conditional pp directive (#if etc.) is to be recognized.
-  These optimizations give a speed improvement by upto 40%.
-- Removed adjacent whitespace during macro expansion (needs to be revised, 
-  since there is some whitespace left, which may be removed)
-    
-Sun Mar 16 23:19:11     2003
-- Fixed a problem with include paths given on the command line, if the file
-  to preprocess was not given as a full path (driver executable).
-- Fixed a problem with path names containing blanks (driver executable).
-- Cleaned command line and argument handling (driver executable).
-- Fixed a severe memory leak.
-- Fixed a bug, if a C++ keyword was used as a macro name or macro parameter 
-  name, which prevented the macro recognition and expansion to function 
-  properly.
-- Implemented the WAVE_SUPPORT_MS_EXTENSIONS compiler switch for the re2c 
-  generated lexer too.
-- Fixed a problem, which caused an internal T_PLACEHOLDER token to show up 
-  outside the macro replacement engine.
-- Fixed a problem with macro #include directives, which prevents to find the 
-  file to include, if after the macro expansion the token sequence representing 
-  the filename began or ended with at least one whitespace token.
-- Fixed a problem, which caused a false error message if the '#' character was
-  to be concatenated with an arbitrary other token.
-- The concatenation of a whitespace token with an arbitrary other token was 
-  reported as illegal token pasting (but it is certainly not).
-   
-Sat Mar 15 21:43:56     2003
-- Added a default constructor to the wave::util::file_position template.
-- Report the concatenation of unrelated tokens as an error.
-- Finished the documentation.
-
-Fri Mar 14 20:14:18     2003
-- More work on documentation
-- Changed file_position to expose accessor functions (the member variables are
-  marked as private now). This opens up the possibility to provide another 
-  file_position implementation, which may be optimized in some way.
-- Fixed a problem with the token name table, the alternate and trigraph token
-  names were printed incorrectly.
-- Fixed a bug, which prevented the correct recognition of 'defined X' (without 
-  parenthesises).
-- Fixed a bug, which allowed to redefine and undefine the predefined name 
-  'defined'.
-- Fixed a bug, which prevents the correct recognition of a macro based #include 
-  directive, if it expands to something like #include <...>.
-- Fixed a bug, which prevented the recognition of duplicate macro parameter
-  names.
-- Removed the insertion of additional whitespace inside of string literals 
-  (during stringizing).
-  
-Wed Mar 12 19:16:40     2003
-- Fixed a bug, which prevented the instantiation of the wave::context object 
-  with auxiliary iterators. The token type isn't coupled anymore with the 
-  iterator type.
-  This required some changes in the interface:
-    - The wave::context object now has three template parameters (the iterator
-      type, the token type and the input policy type)
-    - The token type does not have the iterator type as it's template parameter
-      anymore.
-- Implemented a new position_iterator template on top of the iterator_adaptor<>
-  template to make it work even for input_iterator type iterators.
-- Fixed a bug in the regular expressions for the Slex lexer.
-- The function 'set_sys_include_delimiter()' was renamed to 
-  'set_sysinclude_delimiter()' to better fit the naming scheme of the other 
-  functions.
-- Wrote more documentation
-- Unified the different token definitions of the lexers, so that there is only
-  one token type left. This required some changes in the interface:
-    - There is no need anymore to explicitly specify the namespace of the token
-      type to use.
-- Added the command line option -P to the Wave driver program, which predefines 
-  a macro (i.e. defines it such, that is _not_ undefinable through an #undef
-  directive from inside the preprocessed program).
-
-Sat Mar  8 07:46:43     2003
-- Released Wave 0.9.0
-
-Thu Mar  6 20:02:44     2003
-- Compiled Wave with IntelV7.0/DinkumwareSTL (from VC6sp5)
-- Fixed new compilation problems with gcc -Wall
-- Fixed the list_includes and cpp_tokens samples to compile and link correctly.
-- Fixed a bug, where a wrong filename was reported by the generated #line 
-  directive.
-- Fixed a bug, where the __FILE__ macro was expanded without '\"' around the
-  filename.
-- The generated #line directives and the expanded __FILE__ macro now report
-  the filename in a native (to the system) format. Additionally the generated
-  string literals are now escaped correctly.
-
-Wed Mar  5 21:11:14     2003
-- Reorganized the directory structure to mirror the namespace structure of the
-  library
-- Fixed a bug, where the complete input after the first found #include 
-  directive were eaten up.
-- Fixed a bug, where the __LINE__ macro expanded to a incorrect linenumber, if
-  the __LINE__ macro was encountered on a line after a '\\' '\n' sequence.
-
-Tue Mar  4 11:50:24     2003
-- The new name of the project is 'Wave'.
-- Adjusted namespaces, comments etc. to reflect the new name.
-- Added the command line option -U [--undefine], which allows to remove one of 
-  the predefined macros (except __LINE__, __FILE__, __DATE__, __TIME__, 
-  __STDC__ and __cplusplus)
-
-Sun Mar  2 20:10:04     2003
-- Fixed a bug while expanding macros without any definition part (empty macros)
-- The pp-iterator will not emit a newline for every recognized preprocessing
-  directive anymore. The generated output is much more condensed this way. 
-- The pp-iterator now emits #line directives at appropriate places.
-- Added an additional parser to the library, which may be used to parse macros
-  given in the command line syntax, i.e. something like 'MACRO(x)=definition'.
-- Added the possibility to the cpp driver sample, to add macros from the 
-  command line through the -D command line switch.
-- Martin Wille contributed a test script to allow automatic testing of the 
-  cpp driver sample by feeding all files contained in the test_files directory
-  through the cpp driver and comparing the generated output with the 
-  corresponding expectations.
-- Added config file support to allow for predefined option sets (for instance
-  for the emulation of other compilers)
-- Changed the way, how include paths are defined. It resembles now the 
-  behaviour of gcc. 
-  Any directories specified with '-I' options before an eventually given '-I-' 
-  option are searched only for the case of '#include "file"', they are not 
-  searched for '#include <file>' directives. If additional directories are 
-  specified with '-I' options after a '-I-' option was given, these directories 
-  are searched for all '#include' directives. In addition, the '-I-' option 
-  inhibits the use of the current directory as the first search directory for 
-  '#include "file"'. Therefore, the current directory is searched only if it is 
-  requested explicitly with '-I.'. Specifying both '-I-' and '-I.' allows to 
-  control precisely which directories are searched before the current one 
-  and which are searched after.
-- Added config file support to the cpp driver.
-- stored not only the current 'name' of a file (given eventually by a #line
-  directive) but in parallel the actual full file system name of this file too.
-  
-Tue Feb 25 21:44:19     2003
-- Fixed the warnings emitted by gcc -Wall.
-- Fixed a bug in the cpp grammar, which causes to failing the recognition of 
-  certain preprocessor directives if at the end of this directive were placed 
-  a C++ comment.
-- Simplified and extended the insertion of whitespace tokens at places, where
-  otherwise two adjacent tokens would form a new different token, if 
-  retokenized.
-
-Mon Feb 24 19:13:46     2003
-- defined() functionality was broken
-- added missing typename keywords
-- added missing using namespace statements, where appropriate
-- added a warning, when a predefined macro is to be undefined (by an #undef 
-  directive)
-- removed the 'compile in C mode' hack for the re2c generated lexer (VC7.1 
-  (final beta) is not able to compile it with optimizations switched on 
-  anyway :( )
-- compiled with gcc 3.2 and Intel V7.0 (20030129Z)
-
-Sun Feb 23 23:39:33  2003
-- Fixed a couple of 'missing typename' bugs (thanks to Martin Wille)
-- Added code to insert whitespace at places, where otherwise two adjacent 
-  tokens would form a new different token, if retokenized.
-- Fixed a severe macro expansion bug.
-- Added the handling of invalid or not allowed universal character values 
-  inside of string literals and character literals.
-
-Sat Feb 22 20:52:06  2003
-- Bumped version to 0.9.0
-- Added test for invalid or not allowed universal character values (see
-  C++ Standard 2.2.2 [lex.charset] and Annex E)
-- Fixed a bug with newlines between a macro name and the opening parenthesis 
-  during the macro expansion and a bug with newlines inside the parameter list
-  during the macro expansion.
-- Added the following predefined macros:
-    __SPIRIT_PP__
-        expands to the version number of the pp-iterator lib (i.e. 0x0090 for 
-        V0.9.0)
-    __SPIRIT_PP_VERSION__
-        expands to the full version number of the pp-iterator lib (i.e.
-        0x00900436 for V0.9.0.436)
-    __SPIRIT_PP_VERSION_STR__
-        expands to the full version string of the pp-iterator lib (i.e. 
-        "0.9.0.436")
-  
-Fri Feb 21 22:09:04  2003 (feature complete!)
-- Allowed to optionally compile the Re2c generated lexer in 'C' mode, because 
-  at least the VC7.1 (final beta) compiler has problems to compile it in 'C++'
-  mode with optimizations switch on
-- Implemented #error and #warning (optional) directives (C++ standard 16.5). 
-  Additionally there are now allowed the following preprocessor configuration 
-  constants:
-    CPP_PREPROCESS_ERROR_MESSAGE_BODY
-        if defined, preprocesses the message body of #error and #warning  
-        directives to allow for better diagnostics.
-    CPP_SUPPORT_WARNING_DIRECTIVE
-        if defined, then the #warning directive will be recognized such, that
-        a warning with the given message will be issued
-- Adjusted the error handling for the Re2c generated C++ lexer, so that any
-  error inside the lexer is now propagated as an cpplexer_exception.
-- Implemented the #line directive (C++ standard 16.4)
-- Implemented #pragma directive (C++ standard 16.6)
-  Additionally there are now allowed the following preprocessor configuration 
-  constants:
-    CPP_RETURN_PRAGMA_DIRECTIVES
-        if defined, then the whole pragma directive is returned as a token
-        sequence to the caller, if not defined the whole pragma directive is 
-        skipped
-    CPP_PREPROCESS_PRAGMA_BODY
-        if defined, then the #pragma body will be preprocessed 
-- Implemented #include directive with macro arguments (C++ standard 16.2.4)
-- Made the namespace structure finer granulated to leave only the main 
-  interface classes in the main namespace cpp. All other classes are moved into
-  sub-namespaces to reflect the logical dependencies
-- Reorganized the public interface of the context<> template class, made all
-  non relevant functions into the protected.
-- Implemented predefined macros (__LINE__ et.al.) (C++ standard 16.8)
-- Further documentation work
-  
-Wed Feb 19 23:44:47  2003
-- Corrected a lot of bugs in the macro expansion engine, which now should be 
-  conformant to the C++ standard.
-- # (null) directive (C++ standard 16.7)
-
-Sun Feb 16 08:40:38  2003
-- Added a macro expansion engine which expands macros with arguments 
-  C++ standard 16.3 [cpp.replace]
-- Added a new sample: cpp_tokens. This sample preprocesses a given file and
-  prints out the string representations of all tokens returned from the pp 
-  iterator
-- Added documentation (to be continued!)
-- Added a couple of small test files to test elementary functionality
-  (the tests mainly were contributed by Paul Mensonides)
-- The main cpp sample is now a simple preprocessor driver program, which 
-  outputs the string representation of the preprocessed input stream. Use 
-  cpp --help to get a hint, how to use it.
-- Fixed a bug in the preprocessor grammar which failed to recognize a pp 
-  statement, if there was a C++ comment at the end of the line
-- Added '#' operator (C++ standard 16.3.2) [cpp.stringize]
-- Fixed a bug in the slex based C++ lexer to handle the concatenation 
-  characters correctly ('\\' followed by a '\n')
-
-Sun Feb  9 23:01:00  2003
-- Improved error handling for #if et.al.
-- Fixed a pair of lexer errors
-- Implemented the #if/#elif statements, the sample now contains a complete C++ 
-  expression evaluation engine (for the calculation of the outcome of the 
-  #if/#elif statement conditions)
-- Implemented macro replacement (with parameters)
-- Implemented the '##' [cpp.concat] operator
-- Implemented the defined() [cpp.cond] operator
-
-Sun Feb  2 23:28:24  2003
-- Implemented the  #define, #undef, #ifdef, #ifndef, #else and #endif 
-  statements
-- Added optional parse tree output as xml stream (controlled through the config
-  pp constant CPP_DUMP_PARSE_TREE)
-
-Fri Jan 31 21:30:55  2003
-- Fixed different minor issues and a border case (#include statement at the 
-  last line of a included file)
-
-Wed Jan 29 21:13:32  2003
-- Fixed exception handling to report the correct error position
-- Fixed another bug in the stream position calculation scheme
-- Added a more elaborate sample 'list_includes' which lists the dependency
-  information for a given source file (see test/list_includes/readme.txt).
-
-Sat Jan 18 22:01:03  2003
-- Fixed a bug in the stream position calculation scheme
-- Made cpp::exceptions more standard conformant (added 'throw()' at appropriate 
-  places)
-- Overall housekeeping :-)
-
-Wed Jan 15 21:54:20  2003
-Changes since project start (still 0.5.0)
-- Added #include <...> and #include "..." functionality
-- pp directives are now generally recognized 
-- Decoupled the C++ lexers and the pp grammar to separate compilation
-  units (optionally) to speed up compilation (a lot!)
-
-Thu Jan  2 12:39:30  2003
-A completely new version 0.5.0 of the C preprocessor was started. It's a 
-complete rewrite of the existing code base. The main differences are:
-- The preprocessor is now implemented as an iterator, which returns the 
-  current preprocessed token from the input stream.
-- The preprocessing of include files isn't implemented through recursion
-  anymore. This follows directly from the first change. As a result of this
-  change the internal error handling is simplified.
-- The C preprocessor iterator itself is feeded by a new unified C++ lexer 
-  iterator. BTW, this C++ lexer iterator could be used standalone and is not 
-  tied to the C preprocessor. There are two different C++ lexers implemented 
-  now, which are functionally completely identical. These expose a similar
-  interface, so the C preprocessor could be used with both of them.
-- The C++ lexers integrated into the C preprocessor by now are:
-    Slex:   A spirit based table driven regular expression lexer (the slex 
-            engine originally was written by Dan Nuffer and is available as a
-            separate Spirit sample).
-    Re2c:   A C++ lexer generated with the help of the re2c tool. This C++
-            lexer was written as a sample by Dan Nuffer too.
-  It isn't hard to plug in additional different C++ lexers. There are plans to
-  integrate a third one written by Juan Carlos Arevalo-Baeza, which is 
-  available as a Spirit sample.
-  
--------------------------------------------------------------------------------
-Tue Feb 12 22:29:50  2002
-Changes from 0.2.3 to 0.2.4:
-- Moved XML dumping functions to the main Spirit directory
-- Fixed operator '##', it was not correctly implemented somehow :-(
-
-Sun Feb 10 21:07:19  2002
-Changes from 0.2.2 to 0.2.3:
-- Implemented concatenation operator '##' (cpp.concat)
-- Removed defined() functionality for Intel compiler (it ICE's) until this 
-  issue is resolved
-- Separated code for dumping a parse tree to XML for inclusion in the main
-  Spirit headers
-
-Thu Jan 17 23:51:21  2002
-Changes from 0.2.1 to 0.2.2:
-- Fixes to compile with gcc 2.95.2 and gcc 3.0.2 (thanks Dan Nuffer)
-- Reformatted the grammars to conform to a single formatting guideline
-- Assigned explicit rule_id's to the rules of cpp_grammar, so that the 
-  access code to the embedded definition class is not needed anymore
-- Fixed a remaining const problem
-
-Tue Jan 15 23:40:40  2002
-Changes from 0.2.0 to 0.2.1:
-- Corrected handling of defined() operator
-- In preprocessing conditionals undefined identifiers now correctly
-  replaced by '0'
-- Fixed several const problems
-- Added parse_node_iterator for traversing one node in a parse_tree
-  without going deeper down the hierarchy than one level (this is useful,
-  if all inspected tokens arranged along a single node in the parse tree.
-  The main difference to the parse_tree_iterator is, that the underlying
-  iterator generally can be adjusted correctly after advancing the attached
-  parse_node_iterator
-- Fixed a problem with gcc 2.95.2, which doesn't have a <sstream> header
-- Prepared usage of slex for lexer states
-
-Sun Jan 13 10:21:16  2002
-Changes from 0.1.0 to 0.2.0:
-- Added operator 'defined()'
-- Added directive '#warning'
-- Corrected error reporting
-- Added command line option -I- for finer control of the searched include
-  directories (-I and -I- should now work as in gcc, see readme.html for 
-  more info)
-- Corrected conditional preprocessing (should be fully functional now)
-- Fixed existing code base for changes made in parse tree support
-- Moved parse tree utility functions to a separate header (prepared for 
-  inclusion to the Spirit main library)
+Boost.Wave: A Standard compliant C++ preprocessor library
+http://www.boost.org/
+
+Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+Software License, Version 1.0. (See accompanying file
+LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+-------------------------------------------------------------------------------
+
+TODO (known issues):
+- Fix expansion of macros, which replacement-list terminates in a partial 
+  macro expansion.
+- Fix the re2c lexer for iterators others then string::iterator (or more 
+  generally for iterators, which aren't random access iterators)
+- Try to remove the second parameter from the pp_iterator<>::force_include
+  function.
+- Fix the trigraph backslash problem in the re2c (C/C++ and IDL) scanners, if 
+  there is the end of the (internal) buffer just in between a '??/' and a '\n'.
+- Change the cpp_exception::what() function to return more meaningful error 
+  texts.
+  
+- Do a sourceforge release.
+
+-------------------------------------------------------------------------------
+
+CHANGELOG
+
+Boost V1.36
+- Wave Version 2.0
+- Added an additional template parameter to the context object, allowing to 
+  specify any possibly derived type. This change propagates to the preprocessing
+  hooks, which now get passed the most derived context type as its first 
+  argument allowing to access protected members in the original context type.
+  This fixes ticket #1752.
+- Fixed a problem during parsing of #pragma wave directive, where the value 
+  sequence contained a closing parenthesis. This caused a premature end of the
+  pragma value parsing.
+- Fixed handling of support_option_single_line, which was ignored under certain 
+  circumstances.
+- Fixed ticket #1766: Wrong evaluation of conditional preprocessor directives 
+  with predefined macros __FILE__, __LINE__ and __INCLUDE_LEVEL__. This bug 
+  triggered an error in constructs like #ifndef __FILE__. Thanks to Daniel 
+  Wadehn for reporting and supplying a patch. Added corresponding regression
+  test: t_2_018.cpp.
+- Fixed a bug which reported a valid macro redefinition as invalid if the macro
+  replacement text referred to a second or higher parameter of this macro.
+- Fixed a problem in the wave tool to allow two errors to occur while 
+  preprocessing two consecutive tokens.
+- Adjusted Spirit header includes to point to conform to the new directory 
+  structure, removed support for Spirit versions earlier than V1.7.
+  
+Boost V1.35.0
+- Wave Version 1.3
+- Changed the return value of the 'evaluated_conditional_expression()' pp hook
+  to 'bool' allowing to force Wave to re-evaluate the current conditional
+  expression. This was suggested by Felipe Magno de Almeida.
+- Added a wave::context object as first parameter to all pp hook functions. 
+  This is an interface compatibility breaking change. The new pp-hooks can be 
+  disabled by defining the BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS 
+  compile time constant to something not equal to zero. By default this 
+  constant will be defined to zero for Boost V1.35.0 and newer, switching to
+  the new interface by default.
+- Added optional support for the import keyword (needed for the C++ module
+  proposal). The identifier import will be recognized as a keyword, if 
+  the compile time constant BOOST_WAVE_SUPPORT_IMPORT_KEYWORD is defined to 
+  something not equal zero.
+- Added new preprocessing hook functions: found_error_directive() and 
+  found_warning_directive() to be called when #error/#warning directives are
+  encountered. This was suggested by Andreas Sæbjørnsen.
+- Added a new sample to Wave: hannibal, a partial C++ parser implementation
+  initially written by Danny Havenith (http://havenith-verlinden.nl/hannibal/)
+  who agreed to add this here. Thanks!
+- Added new preprocessing hook function: found_line_directive() to be called 
+  when a #line directive is encountered. This was suggested by Andreas
+  Sæbjørnsen.
+- Improved command line handling for the wave applet.
+- Incorporated latest bug fixes for the Hannibal sample provided by Danny 
+  Havenith. 
+- Added loading of a wave.cfg file from anywhere up the filesystem hierarchy 
+  starting from the main input file for the wave driver applet up to the 
+  root of the file system.
+- Added support_option_emit_pragma_directive to allow to control at runtime,
+  whether unknown #pragma directives should be emitted or not. To maintain 
+  compatibility with earlier versions this option is by default on if the
+  compile time constant BOOST_WAVE_EMIT_PRAGMA_DIRECTIVES was defined to 
+  be not equal to zero and it is off otherwise.
+- Enabled XML serialization support.
+- Added the throw_exception preprocessing hook, which gets called for every 
+  occurring error (whenever an exception would have been thrown). The default
+  of this new hook function is to throw the corresponding exception, which 
+  reproduces the old behavior.
+- Implemented a new preprocessing hook: generated_token(), which get's called
+  whenever a token is about to be returned form the library. This function may
+  be used to alter the token before it gets returned to the calling 
+  application.
+- Added a new sample 'real_positions' demonstrating the new generated_token()
+  preprocessing hook and showing how to use Wave with a new token type without 
+  using a new lexer type.
+- Factored out the pure lex_input_interface to simplify writing different lexer 
+  types for Wave.
+- Added the token_statistics sample showing how to use Xpressive to build a 
+  lexer for Wave.
+- Changed the list_includes sample to use a lexer which is based on the lexertl 
+  library written by Ben Hanson (http://www.benhanson.net/lexertl.html).
+- Added a new support_option: insert_whitespace, allowing to switch off 
+  whitespace insertion which is normally (by default) in place to disambiugate
+  C++ tokens, which would otherwise form different tokens in the output.
+- Added a new commandline option to the Wave applet: --disambiguate, allowing
+  to control whitespace insertion. The default value for this option is 
+  --disambiguate=1, resembling the previous behaviour. Specifying the option
+  --disambiguate=0 allows to suppress whitespace insertion alltogether.
+- Added pragma option values push and pop to the line, preserve and output 
+  options allowing to store and restore the current option. The syntax is:
+    #pragma wave options(<option>: push) and
+    #pragma wave options(<option>: pop)
+  where <option> may be line, preserve or output. Thanks to Eric Niebler for 
+  suggesting this feature.
+- Added the possibility to use static pre-compiled DFA tables for the lexertl 
+  based lexer.
+- Incorporated the changes from Andrei's latest version of the flex_string 
+  class.
+- Added the is_macro_defined(name) function to the context object as described 
+  in the documentation. This function is usable with any string type compatible 
+  with std::string.
+- Changed behavior of the --force_include functionality, which now looks for 
+  the file to be (force-)included in the current directory first.
+- Switched to Re2C V0.11.2
+- Added const specifiers to some of the context member functions.
+- Fixed a problem in the SLex C++ lexer (cpp_tokens example).
+- Fixed a runtime problem in the Re2C generated lexers when feeded with
+  empty input files (thanks to Leo Davis for reporting and providing a patch).
+- Added the is_eoi() function to token classes, returning true if the token
+  has been initialized to be the end of input token (T_EOI) (thanks to Ovanes 
+  Markarian for suggesting this).
+- Added missing #includes <cstring>, <cstdlib>, and <new> to flex_string.hpp.
+- Added missing #include <climits> to cpp_chlit_grammar.hpp.
+- Changed found_include_directive hook function to return a bool indicating, 
+  whether the file should be included (true) or skipped (false). Thanks to 
+  Felipe Magno de Almeida for suggesting this feature.
+- Added code to the wave driver applet ignoring a #import directive (the whole
+  directive is passed through to the output) whenever the pp constant 
+  BOOST_WAVE_SUPPORT_MS_EXTENSIONS is defined to something not equal to zero.
+- Fixed the wave driver applet to correctly continue after a error or warning.
+- Added a macro introspection facility allowing to iterate on all defined macro 
+  names.
+- Added a new commandline option --macronames/-m to the Wave driver application
+  which lists all defined macros and their definitions to an optionally 
+  specified file (default is cout).
+- Fixed configuration to take into account thread related build settings.
+- Added the BOOST_WAVE_SUPPORT_LONGLONG_INTEGER_LITERALS pp constant allowing
+  to recognize large integer literals (larger in size than long/unsigned long) 
+  even if these do not have a 'll' suffix. This pp constant is effective only, 
+  if the target platform supports long long integers (BOOST_HAS_LONG_LONG is 
+  defined).
+- The following preprocessing hooks now return a boolean value, which when 
+  returning 'true' cause the Wave library to skip the execution of the related 
+  preprocessing action:
+    . found_directive: allows to skip the whole directive it is called for
+    . expanding_object_like_macro: allows to skip expansion of the given object
+        like macro, the macro symbol is copied to the output
+    . expanding_function_like_macro: allows to skip the expansion of the given
+        function like macro, the whole macro invocation (including all 
+        macro invocation parameters) are copied to the output without any 
+        further processing.
+- Changed the interpretation of the return value of the found_include_directive 
+  preprocessing hook: a return value of 'false' now processes the file 
+  to be included normally and a return value of 'true' now skips the processing 
+  of the include file directive (the file doesn't get included). 
+  This change was necessary to make the return values of the preprocessing 
+  hooks consistent. Now return 'false' generally means: normal execution and 
+  return 'true' generally means: skip execution of the corresponding 
+  preprocessor action.
+- Fixed compilation problems on gcc, fixed ambiguity with boost code (detail 
+  namespace was ambigious).
+- Fixed predefined macro support to be thread safe.
+- Added missing file to real_positions example. Thanks to Ludovic Aubert for 
+  spotting the problem.
+- Unterminated C++/C comment diagnostics are now a warning and not an error 
+  anymore.
+- Applied patch provided by Jens Seidel making sure every header compiles on 
+  its own.
+- Updates to the documentation.
+- Fixed a problem in flex_string::compare() (#include_next was non-functional).
+- Fixed a bug in the pp hook expanding_function_like_macro(), where the seqend
+  parameter was set to the first token after the closing parenthesis instead of
+  pointing at it.
+- Added the BOOST_WAVE_SUPPORT_THREADING allowing to explicitely control 
+  whether the Wave library is built with threading support enabled. If not 
+  defined the build settings will be picked up from the Boost build environment
+  (BOOST_HAS_THREADS).
+- Fixed a whitespace insertion glitch, where whitespace got inserted 
+  unconditionally between two operators even if one of these was a comma.
+- Fixed #line directive after a macro invocation containing newlines to 
+  correctly reference the line number.
+- Positions of macros defined on the command line now get properly reported as 
+  "<command line>":1:...
+- Added testing of the preprocessor hooks.
+
+Boost V1.34.0
+- Wave Version 1.2.4
+- Added the possibility to explicitly enable/disable the generation of #line 
+  directives. Added a corresponding commandline argument to the Wave driver 
+  tool (--line/-L) which takes either 0 or 1 as its parameter.
+- Added support for #pragma wave option(command: value) directives, which 
+  supports the following commands:
+   . #pragma wave option(line: [0|1])  
+        Enable/disable generation of #line directives
+   . #pragma wave option(preserve: [0|1|2])  
+        Control whitespace preservation
+   . #pragma wave option(output: ["filename" | null | default])
+        Redirect output to the given file (or no output, if 'null' is specified,
+        or output to the file as given on the command line, if 'default' is 
+        specified).
+        The filename is resolved relative to the directory of the processed
+        file.
+  These new #pragma directives are implemented in the Wave driver tool only.
+  It is possible to combine several options in one #pragma directive, i.e.
+  #pragma wave option(line: 0, preserve: 2).
+- Changed the signature of the may_skip_whitespace() preprocessing hook to 
+  additionally take the preprocessing context as its first parameter.
+- Added the possibility to the Wave tool to disable initial output by 
+  specifying a '-' as the output file. This is useful for syntax checks only or
+  in conjunction with the #pragma wave option(output: ...) to restrict the
+  generated output.
+- Improved error reporting in the Wave tool on bad output file stream state.
+- Switched to Re2C V0.10.0
+- Fixed some of the VC7.1 /W4 warnings.
+- The Wave tool now creates the directory hierarchy of output files as needed.
+- Applied some optimization, which causes skipping of the parsing for almost 
+  all preprocessor directives when the if block status is false. This gains
+  upto 10-20% in speed for average applications.
+- Added error diagnostic for #elif without matching #if, which was missing 
+  under certain circumstances.
+- Avoided the evaluation of #elif expressions if one of the previous #if/#elif
+  blocks of the same level was true. This gains upto another 5% of speed for
+  average applications.
+- The MS specific integer suffix 'i64' is now correctly supported by the Re2C
+  and SLex lexer components (only when BOOST_WAVE_SUPPORT_MS_EXTENSIONS is 
+  defined during compilation).
+- Changed the Wave tool to print the column number of an error/warning along
+  with the line number. The new format is: 'filename:line:column: error text'.
+- It is now possible to recover from the unbalanced #if/#endif statement 
+  warning in a proper way.
+- The Wave library now automaticaly recognizes include guards in headers files
+  and uses this information to avoid opening these header files more than once.
+  This speeds up things by upto 10-20% depending on the concrete include files.
+- Fixed the failing test t_6_023.cpp. Error reporting for illformed #else 
+  directives was broken (because of some recent changes).
+- Fixed the failing test t_5_007.cpp. This was caused by the automatic include 
+  guard detection, which prevented the second inclusion of the specified
+  include file the test was relying on.
+- Added the possibility to switch off the automatic include guard detection.
+- Added a new command line option to the Wave tool: --noguard/-G, which
+  disables the automatic include guard detection.
+- Now a header with include guards will be included correctly for a second time
+  after its include guard symbol gets undefined.
+- Added the generating platform to Wave's full version string.
+- Made the Wave tool fully interactive when started with input from stdin and
+  and output to stdout. In this mode the Wave tool preprocesses the input 
+  line by line and not only after receiving the full input as normally.
+- Added serialization support for the wave::context object, which stores 
+  all information about defined macros and all #pragma once header information.
+- Added the command line option --state (-s) to the Wave tool, which tries to 
+  load the serialized information from the file given as the argument to 
+  --state and save the state information at the end to the same file. 
+  This option is available in interactive mode only. 
+- Added possibility to verify the compatibility of the configuration used 
+  during compilation of the Wave library with the config info used for the 
+  application. Added a corresponding test to the Wave tool.
+- Added a new predefined macro __WAVE_CONFIG__ which expands to an integer
+  literal containg the configuration information the library was compiled
+  with.
+- Added proper versioning support to the serialization of state.
+- Fixed the macro tracing information to contain the column numbers of the macro
+  definitions as well (the format used is the same as for error messages).
+- Fixed a memory leak in the flex_string copy on write code (thanks to Tobias 
+  Schwinger for reporting this bug).
+- Fixed a memory corruption bug in the Re2C scanner buffer management code
+  (thanks to Andreas Sæbjørnsen for spotting the bug).
+- Fixed a major performance bottleneck in the lex_token class. This speeds up 
+  Wave for upto another 20-40% depending on the amount of macro expansions to 
+  perform.
+- Added the BOOST_SPIRIT_USE_BOOST_ALLOCATOR_FOR_TREES and the
+  BOOST_SPIRIT_USE_LIST_FOR_TREES Spirit configration constants to the 
+  wave_config.hpp to allow to fine tune the generated Spirit tree code. VC7.1
+  gives best results when both are defined.
+- Fixed a memory corruption bug triggered by a possible dangling reference.
+- Fixed Wave tools startup crash when compiled with VC8.
+- Added the name of the generating compiler (BOOST_COMPILER) to the full 
+  Wave version info.
+- Fixed all Jamfile.v2 to correctly disable RTTI for VC7.1.
+- Added #pragma message("...") to be optionally supported by the Wave library.
+  This may be enabled by defining the BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE pp
+  constant to some value different from zero.
+- Fixed a couple of typos in the file cpp.cpp preventing it to compile on 
+  gcc 4.1.0 (thanks to Richard Guenther for reporting these).
+- Richard Guenther fixed another buffer overrun problem in the Re2C scanner.
+- Fixed Jamfile.v2 files for all sample applications.
+- Fixed a bug which lead to reporting of an illegal preprocessing directive
+  inside not-evaluated conditional blocks under certain circumstances (thanks
+  to Tobias Schwinger for reporting).
+- Fixed '#define true ...', '#define false ...' and other constructs, i.e. the 
+  usage of the boolean keywords as identifiers during the preprocessing. Added
+  a corresponding test case (t_9_017.cpp). Thanks to Andreas Sæbjørnsen for
+  reporting.
+- Corrected the Jamfile[.v2] of the waveidl sample to refer to correct file 
+  names (thanks to Juergen Hunold for submitting a patch).
+- Fixed a bug which prevented the main iterator from returning a T_EOF token 
+  at the overall end of the input. 
+- Fixed a problem, where non-evaluated #elif directives never got passed to the 
+  skippen_token() pp hook (thanks to Andreas Sæbjørnsen for reporting).
+- Fixed a problem in the get_tokenname() function.
+- Added a missing #define BOOST_WAVE_SOURCE 1 to the wave_config_constant.cpp
+  file.
+- Fixed exception specifications to catch all exceptions by const&.
+- Fixed predefined macros to appear to be defined at a position referring to 
+  a file named "<built-in>". Thanks to Andreas Sæbjørnsen for reporting.
+- Fixed the Re2C lexer not to segfault on empty files anymore.
+- Stripped leading and trailing whitespace for all lines in a config file (Wave
+  driver tool).
+- Fixed RTTI build issue for VC7.1/bjam --v2 (thanks to Rene Rivera for 
+  submitting a patch for the Wave Jamfile.v2).
+- Fixed certain problems reported by the Boost inspection tool.
+- Fixed a couple of SunPro5.8 warnings.
+- Fixed a bug resulting in a crash if a macro was redefined with a shorter
+  expansion list as it was defined initially. Added a corresponding test case.
+- Fixed a bug causing an infinite loop when there was a missing endif in the 
+  main preprocessed file.
+- Improved error recovery for illegal preprocessing directive errors.
+- Improved error handling and error recovery for conditional expressions 
+  (#if/#elif expressions).
+- Wave now passes 160 out of 161 tests from the MCPP V2.6.1 validation 
+  testsuite!
+- Added new warning for invalid #line number and filename arguments
+- Improved error diagnostics for invalid #line directives containing arbitrary
+  tokens after at the end of the line.
+- Improved error handling wrt the misuse of the __VA_ARG__ token in macro 
+  definitions.
+- The warning, that a file is not terminated by a newline is now issued for all
+  files, not only for the main file (as previous).
+- Added a couple of new test cases to verify various diagnostics.
+- Fixed wave applet not to report missing #endif's when in interactive mode.
+- Cleaned up the Re2C lexer code.
+- Fixed a bug, where a empty line followed by an arbitrary token and followed 
+  by a preprocessing directive interpreted the preprcessing directive as if it
+  were the first non-whitespace token on the line. This error occured only
+  if the #line directive generation was suppressed. Thanks to Joan Grant for
+  reporting this problem.
+- Fixed a problem in the Wave applet which prevented the correct recognition of 
+  Windows file paths in a configuration file, if this path was enclosed in 
+  quotes.
+- Extended the copyright notice to include the year 2007.
+- Fixed a problem in preserve=1 mode, when a C style comment triggered the 
+  generation of a #line directive.
+- Worked around a linker issue for the True64/CXX compiler, complaining about
+  multiple defined symbols when using the flex_string class.
+- Added missing documentation for the context::get_macro_definition function.
+
+Sat Feb 18 2005
+- Version 1.2.3
+- Added a missing throw() specification to the function 
+  cpp_exception::get_related_name().
+- Fix Boost bug ([ boost-Bugs-1395857 ] wave redefines BSIZE).
+- Added missing calls to the skipped_token() preprocessing hook which wasn't
+  called for pp directives inside disabled #if blocks.
+- Made the context<> type noncopyable.
+- Introduced the --extended/-x command line option to the wave driver 
+  executable, which enables the #pragma wave system() directive. This directive
+  is now disabled by default because it may cause a potential security threat.
+- Changed the what() function of the macro_handling_exception class, which now
+  correctly returns the name of the exception type itself.
+- Added a diagnostic message to the wave driver executable, which is issued 
+  whenever a #pragma wave system() directive is found, but the -x (--extended) 
+  command line argument was not given.
+- Fixed long integer suffix to be allowed to be mixed case (1Ll or 2lL).
+- Fixed the BOOST_PP_CAT(1e, -1) pp-token bug. Wave now correctly recognizes
+  pp-number tokens, which are converted to C++ tokens right before they are 
+  returned from the library.
+- Moved the implementation of the token_id query functions (get_token_name(), 
+  get_token_value()) to a separate source file.
+- Fixed a bug, which prevented to prefer pp-numbers in files preprocessed as
+  a result of #include directives.
+- Fixed a bug, which prevented to open #include'd files specified by an 
+  absolute path.
+- Fixed a problem in the expression parser value type.
+- Fixed a dynaload compilation problem with VC7.1 of the re2c lexer tests.
+
+Sat Dec 24 13:33:53 CST 2005
+- Version 1.2.2
+- Added three new preprocessing hooks: 'found_directive', 'skipped_token' and 
+  'evaluated_conditional_expression' (thanks to Andreas Sæbjørnsen for the 
+  suggestions).
+- Removed hook forwarding functions in the context_type.
+- Added missing include_next case branches for get_directivename() function.
+- Added new sample: advanced_hooks.
+- Fixed a possible buffer overflow in the cpplexer and cpp exception classes.
+- Made the cpp_grammar thread safe.
+- Removed the need for the get_directivename() function. Fixed typos in the 
+  predefined token table.
+- Removed assertions from get_token_name() and get_token_value() and replaced 
+  these with more meaningful code.
+- Added the BOOST_WAVE_USE_STRICT_LEXER configuration constant which allows to
+  decide, whether the '$' character will be recognized as a part of identifiers
+  or not (the default is BOOST_WAVE_USE_STRICT_LEXER == 0, i.e. '$' will be
+  recognized as part of identifiers).
+- Added the possibility to testwave to extract a tagged comment based on a
+  preprocessor constant (testwave V0.4.0).
+- Made the predefined_macros_grammar thread safe.
+- Added dll support for the generated Wave libraries.
+- Added the const_iterator based exlicit instantiations for the Re2C lexer to 
+  the built Wave library and dll.
+- Added the whitespace handling policy to the context object. This actually is 
+  no separate policy, it's a new preprocessing hook allowing to decide, whether
+  a concrete token has to be skipped.
+- Changed the --preserve option of the wave tool to take a single integer 
+  argument (0: no whitespace is preserved, 1: only comments are preserved, 
+  2: all whitespace is preserved)
+- Edited the command line option descriptions of the wave driver.
+- Fixed broken tags in documentation (magically inserted by DreamWeaver).
+- Merged the new whitespace_handling policy with the existing preprocessing 
+  hooks. The name of the new preprocessing hook ist may_skip_whitespace().
+- Fixed compatibility issues for CW9.4 in the Wave test aplication.
+- Added get_errorcode() member to the wave exception classes allowing to 
+  get back the reason for the exception.
+- Added boost::wave::is_recoverable(cpp_exception const&) alowing to decide,
+  whether it is possible to continue after a cpp_exception has been thrown.
+  This is a temporary hack to overcome the current limitation of the library
+  not allowing to do generic error recovery. It allows to recover from 75% of
+  the generated errors types.
+- The --timer command line option for the Wave driver now prints the elapsed 
+  time correctly even if a preprcessing error occured.
+- Fixed an error recovery problem which skipped one token after continuing in
+  case this was a pp directive.
+- Added the --autooutput (-E) option to the Wave driver applet which redirects 
+  the generated output to a file named after the input file changing the file 
+  extension to '.i'.
+- Changed all throw's to boost::throw_exception.
+- Added the possibility to configure the command keyword for the wave specific 
+  #pragma directives. It is now possible to define a string literal via
+  BOOST_WAVE_PRAGMA_COMMAND, which will be recognized and all corresponding
+  #pragma's are dispatched to the interpret_pragma() preprocessing hook.
+  The default value for BOOST_WAVE_PRAGMA_COMMAND is "wave", just to ensure 
+  complete backward compatibility.
+- Added missing #pragma warning(pop) directives.
+- Fixed a bug wrt error propagation in the expression parser.
+- Fixed an assertion fired when cpp_token is used to process the quick_start 
+  sample.
+- Fixed a (Windows specific) bug which triggered a boost::file_system exception
+  under certain conditions.
+- Switched to Re2C V0.9.11
+- Fixed a problem with the new '-E' (--autooutput) option.
+- Added better error reporting for duplicate macro definitions to the Wave 
+  tool. Added the macro_handling_exception type containing the corresponding 
+  macro name via the new (virtual) get_related_name() function.
+- Added the get_severity() function to the exceptions thrown by the Wave
+  library.
+- Extended the copyright notice to include the year 2006.
+  
+Mon Dec  5 22:05:22 CST 2005
+Boost V1.33.1
+- Version 1.2.1
+- Fixed bug reported as Sourceforge bug 1274584.
+- Switched to Re2C V0.9.9.
+- Fixed a bug where the 'parameters' and 'definition' parameters to the 
+  defined_macro callback of the preprocessing hooks were always empty (thanks
+  to Stefan Seefeld for reporting).
+- Fixed missing namespace specifiers in token definition macros (thanks to 
+  Jozsef Mihalicza for reporting).
+- Enabled --preserved and --long_long modes by default for the cpp_tokens 
+  sample.
+- Newline tokens reported a wrong line number (offset by one) when using the
+  Re2C generated lexer (thanks to Jozsef Mihalicza for pointing this out).
+- Changed file positions to carry 'unsigned int' line and column numbers.
+- Fixed tokens of a generated #line directive to carry the correct column 
+  numbers.
+- Tokens now contain the correct filename, line and column numbers even if
+  a #line directive was encountered.
+- Fixed wrong line numbering in reference comments of the tests t_5_002.cpp and 
+  t_5_035.cpp.
+- Made sure, that preprocessor expression errors get ignored for 'passive' 
+  #elif branches.
+- Fixed an issue reported by the gcc debug stl.
+- Added the <vc-7_1-stlport><*><rtti>off directive to all of the V1 Jamfiles.
+
+Wed Aug 17 20:21:00 CST 2005
+Boost V1.33.0
+Version 1.2
+- Fixed name clash wrt T_DIVIDE on FreeBSD.
+- Fixed documentation of the different language_support flags.
+- The support for long long suffixes is no longer bound to the variadics mode,
+  it has to be enabled by the new long_long mode (default in C99).
+- Fixed compilation if BOOST_WAVE_DUMP_PARSE_TREE is defined.
+- Fixed lexer error message wrt long_long mode.
+- Stefan Seefeld fixed a bug in the lexer, where include_next was assumed for
+  included files containg a "include_" in their name.
+- Fixed some trigraph token id's in the lexers.
+- Added column information to the re2c generated lexer.
+- Added tests for the different lexers.
+- Fixed the found_include_directive preprocessing hook to carry the information
+  about #include_next directives as well.
+- Separated the different lexer tests.
+- Fixed a bug in the whitespace eater.
+- Fixed a bug where Wave emitted the found C++ comments in --preserve mode even
+  if these were found inside of disabled #if/#endif blocks.
+- Removed the function local static grammars to avoid possible raise conditions
+  and to make CW8.3 happy.
+- Unified lexer interface, adjusted namespaces.
+- Added lexer testcases to the regression tests.
+- Fixed test cases to scale to 64 bit platforms.
+- Disabled the MS specific extensions in the lexer tests in a platform related
+  way.
+- Added special handling of the eof tokens inside the lexer iterator classes
+  for Comeau.
+- Applied a workaround proposed by David Abrahams to make the slex lexer work 
+  on the CodeWarrior platforms.
+  
+Sun May  8 17:22:59 WEDT 2005
+Version 1.1.17
+- Added ill_formed_character_literal and ill_formed_integer_literal errors.
+- Improved error handling and diagnostics for integer overflow in #if/#elif
+  expressions.
+- Fixed a bug in the testwave application which prevented the correct 
+  recognition of expected errors under certain circumstances.
+- Fixed a portability problem (for gcc 3.3.x) in the testwave application.
+- Enforced that #if/#endif are balanced file wise.
+- Changed the command line arguments for the Wave testrun to use absolute 
+  directories.
+- Changed the test application to return a value != zero if one of the given 
+  config files were not found.
+- Fixed a command line parsing problem caused by a change in the parameter
+  handling inside in the program_options library.
+- Switched to the most recent version of re2c (V0.9.7.dev).
+- Fixed a como compilation error and several como --a warnings.
+- The T_EOF token doesn't carry the value of the previous token anymore.
+- Added operator==() to the token classes to fix the ambiguity error reported
+  by the True64 compiler.
+- Improved the error message, when empty arguments are used in pure C++ mode.
+- Added character literal out of range testing and an additional corresponding 
+  error message.
+- Fixed parsing of long character literals (such as '\x1234').
+- Fixed almost all problems diagnosed by the Boost inspection report.
+- Several fixes to make the True64 compiler happy.
+- Added the long long suffix handling to the C99 mode (LL/ll).
+- Fixed a bug in the slex regex specifications.
+
+Thu Apr  7 10:07:45 WEDT 2005
+Version 1.1.16
+- Fixed a bug in the white space eating component, which prevented a C++ 
+  comment to be suppressed if it followed after another whitespace.
+- Fixed the inconsistencies between the documentation and the behaviour wrt the 
+  different include search paths. See the Wave driver docs for details of how
+  the '-I', '-I-', and '-S' options work.
+- Allowed to specify more than one config file ('@' syntax) on the command line
+  of the wave driver executable.
+- Changed copyrights in all files to reflect the acceptance of Wave into Boost.
+- Unknown preprocessing directives were not recognised as such anymore.
+- If comments shouldn't be preserved all C++ comments are replaced by newline
+  tokens (instead of beeing igored completely).
+- Fixed a bug in the white space eater component.
+- Fixed a bug which reported wrong line numbers for error encountered during 
+  retokenisation (concatination).
+- Fixed a bug in the unescaping code.
+- Fixed a compilation error of the testwave executable (added a missing 
+  namespace specifier).
+- Added a missing header to make cpp.re.cpp compile on CW.
+- The predefined macro __BASE_FILE__ now returns a properly escaped file name 
+  string.
+- Fixed the function boost::wave::util::impl::unescape_lit().
+- Added the Wave unit test framework. For now it contains about 60 unit tests
+  executed by a special test driver (testwave).
+- Added the '$F' replacement string to the testwave application. This allows
+  to handle file paths sensitive comparison of the expected and real results.
+- Fixed a minor problem in the whitespace eating component.
+- Added optional trigraph conversion.
+- Changed all size_t, time_t etc. to std::size_t, std::time_t etc (for CW).
+- If the comments should not be preserved every C comment containing at minimum 
+  one newline is now converted to a newline token.
+- Added the lexed_tokens sample.
+- Fixed warnings and errors reported by the CodeWarrior compiler.
+- Added the '$V' replacement string to the testwave application. It expands to 
+  the current BOOST_LIB_VERSION.
+- Diagnosed the attempt to redefine the alternative operators as and, or etc.
+- Improved error handling.
+- Disabled the flex_string class for VC7, enabled to fallback to std::string 
+  for this compiler.
+- Renamed files to comply with the Boost rules.
+- Added the first part of the MCPP validation suite to the Wave unit tests.
+- Added even more missing "using namespace std;" statements for functions from
+  the C runtime library. The Wave test suite now contains more than 100 unit
+  tests.
+- Added the $P/$P(basename) replacement string to the testwave application 
+  which expands to the full path of the current file ($P) or to the current 
+  directory/basename ($P(basename)).
+- Fixed a bunch of portability problmes revealed by the regression tests on
+  different platforms. Thanks to Stefan Slapeda for his support to make it work
+  on the cw-9_4 toolset (win32).
+  
+Tue Mar 22 14:52:45 WEST 2005
+Version 1.1.15
+- Fixed a bug where the complete set of C99 predefined macros were pre-defined
+  when in C++ mode and variadics were enabled.
+- When in variadics or C99 mode the __BASE_FILE__ predefined macro expanded to
+  <Unknown>.
+- Added the --listincludes option to the Wave driver executable which allows to
+  log the file names of the include files opened.
+- Fixed a gcc warning in token_cache.hpp (unused variable end).
+- Changed the logic behind #include_next. It now starts searching with the 
+  next directory after the directory the current file (the file containing the 
+  #include_next directive) is located in.
+- Changed the signature of the undefined_macro preprocessing hook to take the 
+  token itself and not the macro name only. This is important to pass the full
+  context information about the position of the #undef directive to the 
+  user provided hook (thanks to Stefan Seefeld for pointing that out).
+- Fixed several broken links in the Context Policy topic.
+- Fixed a bug in the handling of the #include_next directive inside of 
+  non-evaluated #if blocks.
+- Fixed a bug in the #include_next handling code (thanks to Stefan Seefeld).
+- Changed the signature of the opened_include_file() preprocessing hook which 
+  now receives not only the absolute file name of the openend include file but
+  additionally gets passed the (possibly) relative path of the openend include
+  file. This concrete format of the relative path depends on the format of the
+  include search directory given to the library.
+- Added a new preprocessing hook 'found_include_directive()' which gets called
+  for every #include directive (even for those where the file to include 
+  doesn't exist) and which gets passed the (expanded) token sequence found 
+  after the #include directive token.
+- The file names passed to the preprocessing hooks are now normalised.
+- Changed the opened_include_file() preprocessing hook to receive the correct
+  relative path even if the included file was found in the current directory.
+- Fixed a bug which reported 'defined(or)' as invalid (similarly all the other
+  alternative bit operation token types).
+- Fixed a bug which prevented to define variadic macros from the command line.
+- Added a 'preserve comments' mode to preserve the comments in the input stream
+  not inserted into macro definitions.
+- Added a new --preserve (-p) command line switch to the wave driver 
+  application to allow comments to be preserved in the generated output stream.
+  
+Mon Feb 21 09:30:04 WEST 2005
+Version 1.1.14 (Fixes in response to the Boost review)
+
+Wave was accepted into Boost! 
+
+With special thanks to Tom Brinkman, who volunteered to be the review manager.
+
+With thanks to David Abrahams, Beman Dewes, Reece Dunn, Larry Evans, 
+Doug Gregor, Joel de Guzman, Baptiste Lepilleur, Andy Little, Paul Mensonides, 
+Dan Nuffer, Andreas Pokorny, Vladimir Prus, Gennadiy Rozental, Michiel Salters, 
+Jonathan Turkanis, Chris Uzdavinis, Pavel Vozenilek, Michael Walter for bug 
+reports, fixes and hints.
+
+- Added support for the MS extensions #region and #endregion, which simply get
+  ignored by Wave. The support for these is enabled only, when the pp constant
+  BOOST_WAVE_SUPPORT_MS_EXTENSIONS is defined. Otherwise these get flagged as 
+  an illegal preprocessor directive (as before).
+- Fixed a problem, where the replacement text for a #pragma directive got lost
+  if this directive was on the last line of a processed (include-)file.
+- Changed the default value for BOOST_WAVE_SUPPORT_MS_EXTENSIONS for non-
+  Windows systems to zero.
+- Updated outdated external links in the documentation.
+- Fixed certain grammatical and stylistic quirks in the documentation.
+- Fixed a problem in libs/wave/build/Jamfile.v2 (as reported by Larry Evans).
+  Fixed the Jamfile.v2 in the samples directories accordingly.
+- Added the '<toolset>vc-7_1:<rtti>off' to all Jamfile.v2 files to adjust for 
+  the internal buffer overflow bug in the VC7.1 compiler (reported by Joel de 
+  Guzman).
+- Changed the '<toolset>vc-7_1:<rtti>off' to '<toolset>vc-7.1:<rtti>off' as
+  required by the Boost.Build.v2 library (suggested by Vladimir Prus).
+- Finally fixed the Jamfile.v2 file (after a suggestion from Reece Dunn)
+- Fixed the column number reported for tokens for Slex lexer based 
+  configurations (reported by Baptiste Lepilleur).
+- Added the __BASE_FILE__ predefined macro, which contains a string literal 
+  of the main file name to preprocess (the one the context<> template was
+  created with). (suggested by Pavel Vozenilek)
+- Used the boost::reverse_iterator instead of the std::reverse_iterator
+  for the flex_string class to allow compilation of Wave with VC7.0
+  (as suggested by Reece Dunn).
+- Fixed a problem in the include_path template, which throwed a 
+  boost::filesystem exception whenever a character was used in a file name
+  to include, which is marked as illegal by the default name checker of the
+  boost::filesystem::path.
+  
+Version 1.1.13 (Boost review candidate 2, bug fixed version)
+- Fixed a problem, where the context<> template referenced temporary iterator
+  objects from the underlying stream (thanks to Michiel Salters for reporting
+  this).
+- Fixed a bug in the re2c lexer, which allowed to dereference the end iterator 
+  of the underlying input stream (thanks to Doug Gregor for pointing this out).
+- Fixed several assertions fired by the iterator checking code of the VC8 stl.
+
+Version 1.1.12 (Boost review candidate)
+- A rough performance analysis showed, that 30% of the time is spent parsing 
+  the input for pp directives (cpp_grammar), 35% of the time is spent inside
+  the flex_string code, mainly in the copy constructor and assignment 
+  operator, 15% of the time is spent inside the list and vector member 
+  functions, 10% is spent for memory allocation but only 1% of the time is 
+  spent in the re2c lexer.
+- Identified a performance problem, where the token_cache was instantiated
+  for every created lexer object, but needed to be initialised only once.
+- Added #include <wave_version.hpp> to wave_config.hpp
+- Fixed problems reported by the gcc 3.4.1 compiler.
+- Adjusted Jamfiles for the new toolset names introduced in Boost V1.32.
+
+Version 1.1.11
+- Updated copyrights.
+- Fixed some bugs introduced by the latest refactoring.
+- Tried to fix the expansion of macros, which replacement-list terminates in a 
+  partial macro expansion. No success so far.
+
+Version 1.1.10
+- Refactored some of the macro map (macro namespace) code (added comments, 
+  splitted into separate files),
+- Fixed some typename errors in cpp_macromap.hpp (thanks to Vladimir Prus).
+- Fixed the BoostBuild V2 Jamfiles (thanks to Vladimir Prus).
+
+Version 1.1.9
+- Moved all of the #pragma wave option(value) operators out of the wavelib into 
+  the wave driver program. Removed enable_trace() and trace_flags() policy
+  functions. Renamed trace_policy into context_policy.
+- Added the defined_macro() and undefined_macro() preprocessing hooks to allow
+  easily to build macro cross referencers and such.
+
+Version 1.1.8
+- Replaced the usage of the string::erase() and string::insert() functions, 
+  which were the only non-const string member functions used.
+- Token pasting is now well defined in variadics mode (was in C++0x mode only).
+- Changed the timing code in the wave driver to include the parsing of 
+  files included by the --forceinclude command line switch.
+- Performance measurements (very informal) [sec], the files are some of the
+  preprocessor specific test cases from Paul Mensonides chaos_pp library.
+
+                        std::string   flex_string   const_string   const_string
+                                                      12 Byte        28 Byte
+    arithmetic.cpp        2.543          1.742         0.951           1.001
+    array.cpp             2.453          1.762         0.951           1.011
+    comparison.cpp        0.560          0.340         0.270           0.280
+    control.cpp           0.590          0.340         0.290           0.300
+    debug.cpp             0.370          0.310         0.190           0.190
+    detection.cpp         0.050          0.060         0.030           0.030
+    extended.cpp          0.370          0.260         0.190           0.190
+    facilities.cpp        0.610          0.340         0.290           0.300
+    iteration.cpp         1.081          0.550         0.410           0.450
+    list.cpp              1.742          1.141         0.811           0.851
+    logical.cpp           0.070          0.200         0.040           0.040
+    punctuation.cpp       0.030          0.080         0.020           0.020
+    repetition.cpp        1.392          0.851         0.650           0.690
+    selection.cpp         0.440          0.270         0.210           0.220
+    slot.cpp              0.680          0.350         0.240           0.270
+    tuple.cpp             0.420          0.240         0.190           0.210
+                      
+
+Wed Aug 25 13:23:27 WEDT 2004
+Version 1.1.7
+- Branched for Boost Release.
+- Removed several features from the code base:
+  . removed C++0x support
+  . removed TST support
+- Fixed the program_option validator syntax, which has changed since the last 
+  update.
+- Removed misleading configuration options from the cpp_config.hpp file, 
+  because the application will have to use the same config options as were used
+  during the compilation of the library.
+- Changed the naming convention of typedef'd types in the library. Removed the 
+  _t suffix, wherever possible.
+- Updated the documentation to reflect the removal of the C++0x features.
+
+- Changed the licensing scheme to:
+// Copyright 2004 Joe Coder. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+Mon May 24 10:02:47 WEDT 2004
+Version 1.1.6
+- Fixed a incompatibility with the new program_options version.
+
+Version 1.1.5
+Version 1.0.6
+- Fixed a bug, which reported an #include statement as ill formed, if it was 
+  followed by an empty C comment only. This was an error in the cpp.re regular 
+  expression for C comments. Additionally, since this change simplified the 
+  Re2C generated lexer a lot it was possible to remove the compiler workaround 
+  for the VC7.1 compiler which prevented the optimization of this lexer.
+  
+Mon Mar 29 09:36:59 WEDT 2004
+- Corrected the signature of the main() functions (was main(int, char const*[])).
+
+Sun Mar 28 12:55:59 WEDT 2004
+Version 1.1.4
+- Fixed a problem, where the first returned token was lost, whenever a 
+  --forceinclude file was given.
+- Adjusted the Wave driver and the other samples to use the new program_options 
+  library syntax (V1.1.x only).
+  
+Mon Mar  1 19:14:21 WEST 2004
+Version 1.1.2
+Version 1.0.4
+- Fixed a problem, which does not report an error, if in a #define statement in 
+  between a macro name and its replacement list were no whitespace given.
+- Fixed a bug, which generated an unexpected exception of the $ character in the 
+  input.
+- Macro definitions, which differ by whitespace only (one definition contains 
+  whitespace at a certain position, the other definition does not) are correctly 
+  reported as a warning now.
+- Fixed a problem, where different formal argument names during macro 
+  redefinition were not flagged as a warning.
+- A wide character string used in a #line directive wasn't flagged as an error. 
+  
+Sun Feb 29 19:10:14 WEST 2004
+Used the test suite distributed with the mcpp V2.4 preprocessor to fix a bunch
+of mostly minor issues:
+- Fixed trigraph backslash followed by a newline handling (??/ \n) in the 
+  re2c (C/C++ and IDL) scanners.
+- Fixed a digraph/trigraph token type handling problem during macro expansion.
+- Fixed a digraph/trigraph token type problem during handling of the null 
+  preprocessor directive.
+- Fixed several signed/unsigned conversion bugs in the expression evaluator.
+- Fixed the || and && operators in the expression evaluator to stop evaluation,
+  as only the outcome of the overall expression is determined.
+- Fixed the expression evaluation engine to detect divide by zero errors.
+- Fixed a bug with operator || and && arithmetic (the deduced type was wrong).
+- Fixed a bug with the unary operators ! and - which IN conjunction with an 
+  arithmetic operation yielded A wrong result type.
+- Fixed a bug, which reported a macro definition as an invalid redefinition, if
+  it was different from the original definition only by different whitespaces.
+- Fixed a bug, which reported the redefinition of one of the alternative tokens
+  as 'and', 'bit_and' etc. as invalid.
+- Fixed a bug in the character literal parser, which prevented the recognition
+  of multibyte character literals.
+
+- Moved the cpp_token_ids.hpp header into the main wave.hpp header, because the
+  values defined therein aren't changeable by the user anyway.
+- Fixed some spelling errors in the documentation (thanks to Rob Stewart).
+
+Tue Feb  3 20:20:16 WEST 2004
+- Fixed the problem, that macro definitions in a config file were flagged as 
+  an error, if there was any whitespace in between the -D and the macro name
+  (same problem existed for -P).
+  
+Fri Jan 30 20:28:27 WEST 2004
+- Fixed a missing boostification in the trace support header.
+- Added a missing std:: namespace qualification to the list_includes.cpp sample 
+  file.
+- Fixed line ending problems with the cpp.re and idl.re files.
+- Added quick_start sample.
+
+Sun Jan 25 20:26:45 WEST 2004
+This version was submitted to Boost as the review candidate (V1.1.0)
+- Fixed invalid explicit instantiation syntax as reported by the Comeau 
+  compiler.
+- Added a missing header to flex_string.hpp.
+
+Sat Jan 24 19:47:44 WEST 2004
+- Completely decoupled the used lexer from the preprocessor.
+- Unfortunately had to change the template interface of the context class. It 
+  now instead of the token type takes the type of the lexer to use.
+- Reintroduced the cpp_tokens, list_includes and waveidl samples. 
+  . cpp_tokens is based on the SLex lexer
+  . list_includes shows the usage of the include file tracing capability
+  . waveidl uses the Re2C based IDL lexer in conjunction with the default token
+    type
+  
+Tue Jan 13 20:43:04 WEST 2004
+- Fixed several compilation issues under linux (gcc 3.2.3, gcc 3.3, gcc 3.3.2, 
+  gcc 3.4, Intel V7.1)
+- Fixed a compatibility problem with Spirit versions older than V1.7.
+
+Mon Jan 12 20:39:50 WEST 2004
+- Boostified the code base:
+  . Moved code into namespace boost.
+  . Prefixed all pp constants with "BOOST_".
+  . Refactured the directory structure.
+- Removed IDL mode and SLex lexer from the code base. These will be re-added as 
+  samples.
+- Changed the Wave configuration system to be more flexible (all 
+     #if defined(BOOST_WAVE_...) changed to #if BOOST_WAVE_... != 0),
+  which allows to configure the library without changing the code base itself
+  
+Sat Jan 10 18:17:50 WEST 2004
+- Incorporated Andrei Alexandrescu's latest changes to the flex_string class, 
+  which resulted in an overall spedd gain of about 5-10%.
+  
+Wed Jan  7 17:46:45 WEST 2004
+- Found a major performance hole! The achieved general speedup is about 50-70%.
+- Added missing old MS specific extensions to the re2c lexer (_based, 
+  _declspec, _cdecl, _fastcall, _stdcall, _inline and _asm).
+- Added support for #include_next (as implemented by gcc).
+- Fixed compilation problems with gcc 3.3.1
+- Avoid to look up in symbol table of a potential macro name twice.
+- Added the Spirit SLex lexer sample to the Wave source tree, because it was 
+  removed from the Spirit distribution.
+- Removed the configuration option, which allowed to reverse the names stored 
+  in the symbol tables.
+- Implemented experimental support for using a TST (ternary search tree) as the
+  container for the symbol tables.
+   
+Sun Jan  5 12:30:50     2004
+- Released V1.0.0
+
+Sun Jan  4 00:11:50     2004
+- Removed tabs from the flex_string.hpp file.
+- Modified the input_functor.hpp file to sqeeze out some milliseconds at 
+  runtime.
+- The --timer option now prints the overall elapsed time even if an error 
+  occured.
+- Added support for #pragma once.
+
+Fri Jan  2 22:58:54     2004
+- Fixed a bug in the code, which predefines the preprocessor constants.
+- Fixed a bug in intlit_grammar<> initialisation code.
+
+Thu Jan  1 21:15:03     2004
+- Fixed a bug while predefining a macro with a value through the commmand line.
+- Fixed a bug, which reported a macro definition as illegal, if the redefined 
+  macro was a function like macro with parameters.
+- Fixed a bug, if concatenation of two tokens resulted in a C++ comment start 
+  token.
+  
+Thu Jan  1 15:01:54     2004
+- Finished license migration.
+
+Wed Dec 31 12:23:55     2003
+- Changed the copyright and licensing policiy to be Boost compatible.
+
+Wed Dec 31 12:01:14     2003
+- Fixed a problem while compiling certain headers from the Microsoft Windows 
+  SDK:
+        #define CreateWindowA(lpClassName, lpWindowName, dwStyle, x, y,\
+        nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)\
+        CreateWindowExA(0L, lpClassName, lpWindowName, dwStyle, x, y,\
+        nWidth, nHeight, hWndParent, hMenu, hInstance, lpParam)
+  where essentially is no whitespace between the parameter list and the macro
+  replacement list.
+- Fixed a problem with the MS extension __declspec, which now is recognized
+  correctly.
+  
+Sat Dec 27 14:48:29     2003
+- Fixed remaining problems with assign/assign_a.
+- Fixed some gcc warnings about signed/unsigned comparision mismatch.
+
+Tue Nov 11 20:51:41 WEST 2003
+- Changed the IDL mode to recognize identifiers only. All keywords (except 
+  'true' and 'false') are returned as identifiers. This allows for easy 
+  extension of the IDL language. The drawback is, that after preprocessing 
+  there needs to be just another lexing stage, which recognizes the keywords.
+- Fixed a possible problem, when in between a #if/#elif directive and a 
+  subsequent opening parenthesis Wave finds no whitespace:
+    #if(_WIN_VER >= 0x0500)
+  is now recognized correctly. 
+  (This problem was pointed out by Porter Schermerhorn).
+  
+Sun Nov  9 21:05:23 WEST 2003
+- Started to work on implementation of an IDL lexer for the TAO idl compiler.
+  . Branched off the Re2C C++ lexer and related files as a starting point for 
+    the new IDL lexer. Added connfiguration means to allow compile time
+    decision, in which mode to operatoe (C++ or IDL).
+  . Implemented the Re2C based IDL lexing component.
+  . Fixed all occurences of non-IDL tokens (as T_COLON_COLON and T_ELLIPSIS)
+
+Sat Nov  8 20:05:52 WEST 2003
+- Version 1.0.0
+- Munged the email addresses embedded within the source files.
+- Adjusted for the new actor names in Spirit (assign_a and append_a).
+
+Thu Aug 21 16:54:20     2003
+- Removed the internally used macro 'countof()' to avoid possible nameclashes 
+  with user code.
+- Fixed a bug, which prevented the execution of the concatination operator '##'
+  while expanding object-like macros.
+  
+Tue Aug  5 10:04:00     2003
+- Fixed a false assertion, if a #pragma directive started with some whitespace 
+  on the line.
+- Added the #pragma wave timer() directive to allow rough timings during 
+  processing. This is done on top of a new callback hook for unrecognized 
+  #pragma's, which allows to easily add new pragma commands without changing 
+  the Wave library.
+- Fixed a bug in the whitespace insertion engine, which prevented the insertion 
+  of a whitespace token in between two consecutive identifier tokens or a 
+  integer literal token followed by an identifier token.
+- Fixed a bug during macro concatenation, which allowed to concatenate 
+  unrelated tokens from the input stream:
+    #define CAT(a, b) PRIMITIVE_CAT(a, b)
+    #define PRIMITIVE_CAT(a, b) a ## b
+    #define X() B
+    #define ABC 1
+    CAT(A, X() C) // AB C
+    CAT(A, X()C)  // correct: AB C, was 1
+- Fixed a 64 bit portability problem.
+- Added pragma wave timer(suspend) and wave timer(resume)
+- Fixed a ODR problem with static initialization data for predefined macros.
+- Ported the iterators to the new iterator_adaptors.
+- Updated the documentation to reflect the recent changes
+
+Sun Jun 29 12:35:00     2003
+- Fixed 64 bit compatibility warnings.
+- Fixed a bug, which prevented the correct recognition of a #line directive, if
+  only the filename part of this directive was generated by a macro expansion.
+- Fixed a bug during macro expansion of conditional expressions, which 
+  prevented the correct expansion of certain scoped macros.
+  
+Fri Jun 27 09:50:14     2003
+- Changed the output of the overall elapsed time (option --timer) to cerr.
+- Added a configuration constant WAVE_REVERSE_MACRONAMES_FOR_SYMBOLTABLE, which
+  reverses the macro names while storing them into the symbol table, which 
+  allows to speed up name lookup especially, if the macro names are very long
+  and if these share a common prefix.
+- Fixed a very subtle bug, which prevented the recognition of fully qualified
+  macro names during the macro expansion of conditionals expressions (for 
+  #if/#elif).
+- Improved the error output for the illformed pp expression error.
+  
+Thu Jun 26 08:20:30     2003
+- Done a complete spell check of the source code comments.
+
+Wed Jun 25 20:33:52     2003
+- Changed the conditional expression engine to work with integer numeric 
+  literals only. Distinguished signed and unsigned literals.
+- Importing a region twice is allowed now.
+- Fixed a bug, which does not removed all placeholder tokens from a expanded 
+  token sequence while evaluating conditional expressions (C++0x mode only).
+
+Wed Jun 25 15:01:51     2003
+- Changed the conditional expression engine to respect the type of numeric 
+  literals, now expressions like '#if 1 / 10 == 0' evaluate correctly (to true
+  :-)
+- Fixed a bug, where macro names referring to global macros (as ::A::B) were 
+  not correctly recognized under certain circumstances.
+- Empty parameter lists for macros with ellipses only sometimes generated a 
+  placemarker token in the output:
+    #define STR(...) #__VA_ARGS__
+    STR()   // resulted in "§" instead of "" .
+
+Wed Jun 25 08:35:06     2003
+- Fixed several gcc compilation errors (missing typename's etc.)
+- Fixed a compilation problem, if Wave is built on top of the SLEX scanner.
+- Reformatted the --timer output from pure seconds to a more reasonable format.
+
+Fri Jun 20 19:33:30     2003
+- Changed the enable_tracing function of the tracing_policies to take a 
+  trace_flags variable instead of a bool, to allow to control tracing with more
+  granulation.
+- Added the tracing_enabled function to the tracing_policies, which returns the 
+  current tracing status.
+- Updated the documentation of the tracing policies.
+
+Thu Jun 19 21:45:39     2003
+- Reactivated the list_includes sample with the help of the new include file 
+  tracing facility.
+
+Thu Jun 19 17:55:35     2003
+- Eliminated the TraceT template parameter from the macromap<> template.
+- Added two hooks to the trace policy to allow to trace the opening and 
+  closing of include files.
+
+Thu Jun 19 14:08:10     2003
+- Added the command line option --timer, which enables the output to std::cout
+  of the overall elapsed time during the preprocessing of the given file.
+
+Fri Jun 13 09:11:29     2003
+- Emitted an error message, if an ellipses was found as a formal macro 
+  parameter and variadics were disabled.
+- Fixed a false error message, that the last line was not terminated with a 
+  newline, which occured, if no output was generated by the last line of the
+  source file.
+  
+Thu Jun 12 15:20:22     2003
+- Fixed the recent change in argument expansion for the variadics/C99/C++0x 
+  mode.
+- Fixed a problem, where an additional whitespace between _Pragma and the 
+  opening parenthesis resulted in a false error message.
+- Used a pool allocator for the token sequence containers (std::list<>'s),
+  which gives a speed gain of more than 60% (while profiling the Order 
+  library).
+  
+Wed Jun 11 22:18:54     2003
+- Fixed a macro scoping/expansion problem, when a macro returned a full scope
+  which is continued on the call site to form a full qualified name, the name 
+  wasn't recognized correctly:
+    # region A
+    #  define MACRO 1
+    #  region B
+    #   define MACRO 2
+    #  endregion
+    # endregion
+    # define ID(x) x
+    ID(A)::MACRO     // 1
+    ID(A::B)::MACRO  // 2, was expanded to A::B::MACRO
+- Changed the expansion of macro arguments such, that these will be expanded 
+  only, if the result is to be used for substitution during the expansion
+  of the replacement list.
+  
+Wed Jun 11 14:40:29     2003
+- Included a whitespace eating finite state machine (FSM) for minimal 
+  whitespace in the generated output. This was suggested by Paul Mensonides.
+- Updated the acknowledgement section
+
+Wed Jun  4 08:03:04     2003
+- Fixed a bug reported by Faisal Vali, which prevented the correct evaluation 
+  of conditional expressions, if these referenced macro names, which expanded 
+  to a sequence containing non-expandable tokens.
+- Fixed the above bug for #elif directives too (in the first place this was 
+  fixed for #if directives only)
+  
+Mon May 26 22:15:40     2003
+- Added missing copyrights in several files.
+- Fixed false output, if a unknown _Pragma were encountered.
+- Fixed a macro expansion problem with qualified names, were constructs like
+  the following were not expanded correctly:
+    #define ID(x) x
+    #region SCOPE
+    #  define TEST 1
+    #endregion
+    ID(SCOPE::) TEST    // should expand to 1
+- Changed #import semantics for macros from copy semantics to reference 
+  semantics, i.e. macros are now considered to be implicitly imported into the 
+  scope, where they are defined. If a macro is imported into another scope and 
+  the original macro is undefined, the imported macro still exists. Further, 
+  if the imported macro is expanded, then while rescanning the original macro 
+  is disabled too:
+    #region A
+    #  define B(x) x
+    #endregion
+    #import A
+    B    (A::B) (*) // A::B(*)
+    A::B (B)    (*) // B(*)
+    B    (B)    (*) // B(*)
+    A::B (A::B) (*) // A::B(*)
+- Fixed a recently introduced problem, where placemarker tokens slipped through 
+  to the output under certain conditions (in variadics/C99/C++0x modes only).
+
+Mon May 19 16:30:49     2003
+- Fixed a bug, which prevented the recognition of the __lparen__, __rparen__ or 
+  __comma__ alternative tokens, if these were the first token after an emitted
+  #line directive (reported by Vesa Karvonen).
+- Added an optimization, that only those tokens are considered for a macro 
+  expansion, which may result in an expansion.
+  
+Tue May 13 18:16:26     2003
+- Fixed a newly introduced problem, where a omitted argument consisting out 
+  of whitespace only were failed to be replaced by a placemarker token. This 
+  lead to problems with constructs like the following:
+    #define paste(a, b, c) a ## b ## c
+    paste(1, , 3)  // should expand to 13, but expanded to 1## 3
+- Fixed a problem with the tracing support, which throwed an unexpected 
+  exception if there were too few arguments given while expanding a macro.
+- Allowed to open and to import the global scope ('#region ::' and 
+  '#import ::').
+- Fixed a bug, if more than one file was given with a --forceinclude command 
+  line option.
+
+Sat May 10 21:30:29     2003
+- Added __STDC_FULL_REGION__ and __STDC_CURRENT_REGION__ to the list of not 
+  undefinable macros.
+- In normal C++ mode and C99 mode the #ifdef/#ifndef and the operator defined()
+  should not support qualified names. This is fixed now.
+- Updated the documentation.
+- Fixed minor gcc -Wall compilation warnings.
+- Added better error support for qualified names used as arguments for #ifdef,
+  #ifndef and operator defined().
+  
+Sat May 10 09:51:18     2003
+- Removed the feature, that the comma before the ellipsis parameter in a macro
+  definition may be omitted.
+- Resolved an issue with the expansion of qualified macros, when these 
+  qualified names were partially generated by a previous macro expansion
+- Allowed to specify fully qualified names as arguments to the #region directive
+  
+Wed May  7 22:44:21     2003
+- Changed the names of __SCOPE__ and __FULL_SCOPE__ predefined macros to 
+  __STDC_CURRENT_REGION__ and __STDC_FULL_REGION__ resp. The names are subject 
+  to change if the #region keyword actually will be renamed to #scope/#module
+  or whatever.
+- In C++0x mode it is now possible to omit the last comma before a variadics
+  ellipsis in a macro definition:
+    #define cat_i(a, b, c, d, e ...) a ## b ## c ## d ## e 
+- Fixed a bug in the stringize code, where an ellipsis to stringize resulted in
+  stringizing of the first ellipsis parameter only. Preserved the original 
+  whitespace delimiting in between the ellipsis arguments.
+- Introduced the wave::language_support enum for convenient switching of the 
+  supported language features throughout the library.
+- Fixed a bug, which prevented the definition of the predefined macro 
+  __WAVE_HAS_VARRIADICS__, if --variadics were given on the command line.
+  
+Tue May  6 15:49:45     2003
+- Made predefined macros available at every macro scope without qualification.
+- Predefined a new macro in C++0x mode: __STDC_GLOBAL__, which is defined at 
+  global macro scope only and equals to '1' (integer literal).
+- In C++0x mode there are two new predefined macros: 
+    __SCOPE__:      expands to the last part of the qualified name of the 
+                    current macro scope
+    __FULL_SCOPE__: expands to the full qualified name of the current macro 
+                    scope 
+    
+Mon May  5 23:02:48     2003
+- Fixed a problem in the new well defined token pasting code, which occured for
+  constructs like the following:
+    #define is_empty(...) is_empty_ ## __VA_ARGS__ ## _other
+  i.e. where two or more '##' operators were contained in the replacement text.
+- Implemented __comma__, __lparen__ and __rparen__ alternative pp-tokens, which 
+  may be used as the ',', '(' and ')' tokens during preprocessing. These are 
+  only converted to there respective string representation in a special 
+  translation phase after preprocessing. This was proposed by Vesa Karvonen.
+- Changed the macro scoping rules to: "If a qualified name does not find a 
+  nested name, it is not a qualified name to the preprocessor." This seems to 
+  be the simplest usable solution for the possible ambiguities.
+- Fixed a bug in the macro expansion engine in C++0x mode, where the skipping 
+  of whitespace inside of a qualified name wasn't consistent.
+
+Sun May  4 10:48:53     2003
+- Fixed a bug in the expression grammar, which prevented 'not' to be recognized
+  as a valid operator.
+- Qualified names are now supported as parameters to #ifdef and #ifndef too.
+- Remove one specialization of the macro expansion engine. It gets instantiated
+  only twice now (for the main input iterator and for list<>'s  of tokens.
+- Simplified the required explicit specialization of the defined_grammar
+  template. It has to be explicitely instantiated by providing the token type
+  only (just as for the explicit instantiations of the other grammars).
+
+Fri May  2 22:44:27     2003
+- Qualified names are now allowed as parameters to the operator defined() in 
+  C++0x mode.
+- Separated the defined() functionality into a separate translation unit to 
+  work around a VC7.1 ICE.
+  
+Fri May  2 15:38:26     2003
+- The C++0x mode now has a special set of predefined macros.
+- The predefined macro __WAVE_HAS_VARIADICS__ is now defined in C99 and C++0x 
+  modes too (--variadics is implied for these modes).
+- Updated the documentation to reflect the recent changes and additions.
+- In C++0x mode Wave now supports macro scopes:
+    - new keywords #region/#endregion/#import
+    - qualified macro names
+- In C++0x mode Wave now supports token pasting of unrelated tokens. These are
+  concatenated, the result is re-tokenized and inserted into the output stream.
+- Fixed a minor bug in the macro expansion engine, if a qualified function-like
+  macro was found in an object-like context.
+- Fixed an issue with well defined token pasting of unrelated tokens.
+
+Tue Apr 29 08:47:37     2003
+- Fixed a bug in the macro expansion engine, which prevented the expansion 
+  of a certain macro under specific conditions (if the left of two tokens to 
+  concatenate were a disabled one (T_NONREPLACABLE_IDENTIFIER), then the 
+  resulting token was disabled too).
+- Added additional diagnostics to the Wave driver to disambiguate the C99 and 
+  C++0x modes.
+- Implemented a new API function and a corresponding Wave driver command line
+  option, which allows to specify one or more include files to be preprocessed
+  before the regular file is preprocessed (the files are processed as normal
+  input and all the resulting output is included, before processing the regular 
+  input file). The Wave driver command line option is --forceinclude (-F).
+- Wave now compiles the Order library from Vesa Karvonen.
+  
+Mon Apr 28 07:57:10     2003
+- Fixed a bug in the macro expansion engine.
+- Removed a lot of (not needed) whitespace in the generated output (but still 
+  not optimal).
+
+Sat Apr 26 20:30:53     2003
+- Fixed a bug in the initialization code of the Slex lexer while working in 
+  C99 mode (reported by Reece Dunn).
+
+Fri Apr 18 08:37:35     2003
+- Fixed the handling of option_value's inside of pragma directives:
+    _Pragma("wave option(option_value)")
+  inside which all all whitespaces were deleted.
+- Started to implement experimental macro scoping.
+
+Thu Apr 10 10:20:07     2003
+- Fixed a problem with the #pragma wave stop(), where only the first token 
+  inside the stop directive was output, when the preprocessor stops in result
+  of this pragma.
+- Implemented a new #pragma wave system(command), which spawns a new operation
+  system command exactly as specified inside the system directive, intercepts
+  the stdout output of this process, retokenizes this output and inserts the
+  generated token sequence in place of the original #pragma or operator _Pragma.
+  Please note that the generated output is _not_ subject to any macro expansion
+  before its insertion as the replacement of the pragma itself. If you need to 
+  macro expand the replacement text, you always may force this by writing:
+    #define SCAN(x) x
+    SCAN(_Pragma("wave system(...)"))
+  which re-scans the replacement once.
+- Replaced the Wave position_iterator with the boost::spirit::position_iterator
+  (without any problems!).
+  
+Mon Apr  7 10:45:30     2003
+- Fixed macro_trace_policies::expand_object_like_macro not to be called with 
+  the formal arguments as one of its parameters.
+- Updated the documentation to reflect the changes needed for the tracing 
+  stuff.
+  
+Mon Mar 31 19:07:05     2003
+- Fixed variadics support in the trace output.
+- Fixed preprocessing of operator _Pragma() before it's execution.
+- Added _Pragma("wave stop(errmsg)") (#pragma wave stop(errmsg)) to allow 
+  diagnostics output from inside macro expansion.
+- Fixed operator _Pragma for unknown pragmas (these are simply put through to
+  the output).
+- Implemented a maximal possible include nesting depth to avoid an out of 
+  memory error. The initial value for this is configurable through the compile 
+  time constant WAVE_MAX_INCLUDE_LEVEL_DEPTH, which defaults to 1024, if not 
+  given.
+  Additionally this may be enlarged through a new command line option:
+  -n/--nesting (Wave driver only).
+
+Sun Mar 30 20:40:17     2003
+- Implemented the predefined macro __INCLUDE_LEVEL__, which expands to a 
+  decimal integer constant that represents the depth of nesting in include 
+  files. The value of this macro is incremented on every '#include' directive 
+  and decremented at every end of file. 
+- Implemented the operator _Pragma(). It is recognized in C99 mode and whenever 
+  variadics are enabled.
+  
+Sun Mar 30 08:30:12     2003
+- Changed the tracing format to be more readable.
+- Changed the tracing #pragma's to
+    enable tracing:     #pragma wave trace(enable)
+    disable tracing:    #pragma wave trace(disable)
+  or
+    enable tracing:     #pragma wave trace(1)
+    disable tracing:    #pragma wave trace(0)
+- Changed the semantics of the -t (--traceto) switch. Without any -t switch 
+  there isn't generated any trace output at all, even, if the corresponding
+  #pragma directives are found. To output the trace info to a file, the 
+  '-t file' syntax may be used, to output to std::cerr, the '-t-' (or '-t -')
+  syntax may be used.
+
+Fri Mar 28 17:27:25     2003
+- Added a new template parameter to the wave::context<> object, which allows
+  to specify a policy for controlling the macro expansion tracing. The default
+  macro_trace_policy does no tracing at all. This way one can add specific
+  macro expansion tracing facilities to the library.
+- #pragma directives starting with a STDC identifier are no longer not macro 
+  expanded in C++ mode, in C++ mode these are now expanded as usual, in C99 
+  mode not.
+- The tracing can be enabled/disabled from inside the preprocessed stream by
+  inserting a special #pragma directive:
+    enable tracing:     #pragma wave_option(trace: enable)
+    disable tracing:    #pragma wave_option(trace: disable)
+- The Wave driver now allows to specify a destination for the macro expansion 
+  tracing trough a new command line switch: '-t path' or '--traceto path'. If
+  this option isn't given, the trace output goes to stderr.
+- The Wave driver now allows to specify the name of the file, where the 
+  preprocessed result stream is to be saved: '-o path' or '--output path'. If 
+  this option is not given, the output goes to stdout.
+  
+Wed Mar 26 20:39:11     2003
+- Fixed a problem with alternative tokens (as 'and', 'or' etc.) and trigraph
+  tokens, which were not correctly recognized inside #if/#elif expressions.
+- Alternative tokens ('and', 'or' etc.) are no longer subject to a possible 
+  macro redefinition.
+- Fixed the special handling of 'true' and 'false' during the macro expansion 
+  of #if/#elif expressions.
+
+Tue Mar 25 12:12:35     2003
+- Released Wave V0.9.1
+
+Mon Mar 24 13:34:27     2003
+- Implemented placemarkers, i.e. Wave now supports empty arguments during macro 
+  invocations. This must be enabled by means of a new pp constant:
+  WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the 
+  placemarker and variadics code and by defining the command line option 
+  '--variadics' (Wave driver only).
+- Implemented variadics, i.e. Wave now supports macros with variable parameter 
+  counts. This must be enabled by means of the pp constant:
+  WAVE_SUPPORT_VARIADICS_PLACEMARKERS which must be defined to enable the 
+  placemarker and variadics code and by defining the command line option 
+  '--variadics' (Wave driver only).
+- Implemented a C99 mode. This mode enables variadics and placemarkers by 
+  default and rejects some specific C++ tokens (as the alternate keywords and 
+  '::', '->*', '.*'). This mode must be enabled by the means of the pp constant
+  WAVE_SUPPORT_VARIADICS_PLACEMARKERS (see above). The C99 mode is enabled by 
+  the command line switch '--c99' (Wave driver only).
+  This involved some changes in the C99/C++ lexers.
+  
+Fri Mar 21 16:02:10     2003
+- Fixed a bug in the macro expansion engine, which prevented the expansion of
+  macros, which name was concatenated out of a identifier and a integer 
+  followed directly by another identifier:
+    #define X() X_ ## 0R()  // note: _zero_ followed by 'R'
+    #define X_0R() ...
+    X() // expanded to:  X_0R(), but should expand to ...
+  This is a problem resulting from the fact, that the Standard requires the 
+  preprocessor to act on so called pp-tokens, but Wave acts on C++ tokens.
+  
+Thu Mar 20 21:39:21     2003
+- Fixed a problem with expression parsing (#if/#elif constant expressions), 
+  which failed to produce an error message for expressions like
+    #if 1 2 3 4 5
+  i.e. where the token sequence starts with a valid constant expression, but 
+  the remainder of the line contained other tokens than whitespace.
+- Integrated the flex_string class from Andrei Alexandrescu (published on the
+  CUJ site) to get COW-string behaviour for the token values and position 
+  filename strings. This resulted in a major overall speedup (about 2-3 times 
+  faster in dependency of the complexity of pp usage in the input stream).
+- Fixed a bug, which reported ill formed #if/#else expressions as errors, even 
+  if the current if block status (conditional compilation status) is false.
+- Added a warning, if the last line of a file does not end with a newline.
+- Improved error recognition and handling for malformed preprocessor directives
+
+Mon Mar 17 19:53:29     2003
+- Fixed a concatenation problem: constructs like a##b##c where expanded 
+  incorrectly.
+- Optimized the recognition of pp directives: 
+    - the parser is used only, if the next non-whitespace token starts a pp 
+      directive 
+    - null directives now are recognized without calling the parser
+    - the parser isn't called anymore, if the if_block_status is false and no
+      conditional pp directive (#if etc.) is to be recognized.
+  These optimizations give a speed improvement by upto 40%.
+- Removed adjacent whitespace during macro expansion (needs to be revised, 
+  since there is some whitespace left, which may be removed)
+    
+Sun Mar 16 23:19:11     2003
+- Fixed a problem with include paths given on the command line, if the file
+  to preprocess was not given as a full path (driver executable).
+- Fixed a problem with path names containing blanks (driver executable).
+- Cleaned command line and argument handling (driver executable).
+- Fixed a severe memory leak.
+- Fixed a bug, if a C++ keyword was used as a macro name or macro parameter 
+  name, which prevented the macro recognition and expansion to function 
+  properly.
+- Implemented the WAVE_SUPPORT_MS_EXTENSIONS compiler switch for the re2c 
+  generated lexer too.
+- Fixed a problem, which caused an internal T_PLACEHOLDER token to show up 
+  outside the macro replacement engine.
+- Fixed a problem with macro #include directives, which prevents to find the 
+  file to include, if after the macro expansion the token sequence representing 
+  the filename began or ended with at least one whitespace token.
+- Fixed a problem, which caused a false error message if the '#' character was
+  to be concatenated with an arbitrary other token.
+- The concatenation of a whitespace token with an arbitrary other token was 
+  reported as illegal token pasting (but it is certainly not).
+   
+Sat Mar 15 21:43:56     2003
+- Added a default constructor to the wave::util::file_position template.
+- Report the concatenation of unrelated tokens as an error.
+- Finished the documentation.
+
+Fri Mar 14 20:14:18     2003
+- More work on documentation
+- Changed file_position to expose accessor functions (the member variables are
+  marked as private now). This opens up the possibility to provide another 
+  file_position implementation, which may be optimized in some way.
+- Fixed a problem with the token name table, the alternate and trigraph token
+  names were printed incorrectly.
+- Fixed a bug, which prevented the correct recognition of 'defined X' (without 
+  parenthesises).
+- Fixed a bug, which allowed to redefine and undefine the predefined name 
+  'defined'.
+- Fixed a bug, which prevents the correct recognition of a macro based #include 
+  directive, if it expands to something like #include <...>.
+- Fixed a bug, which prevented the recognition of duplicate macro parameter
+  names.
+- Removed the insertion of additional whitespace inside of string literals 
+  (during stringizing).
+  
+Wed Mar 12 19:16:40     2003
+- Fixed a bug, which prevented the instantiation of the wave::context object 
+  with auxiliary iterators. The token type isn't coupled anymore with the 
+  iterator type.
+  This required some changes in the interface:
+    - The wave::context object now has three template parameters (the iterator
+      type, the token type and the input policy type)
+    - The token type does not have the iterator type as it's template parameter
+      anymore.
+- Implemented a new position_iterator template on top of the iterator_adaptor<>
+  template to make it work even for input_iterator type iterators.
+- Fixed a bug in the regular expressions for the Slex lexer.
+- The function 'set_sys_include_delimiter()' was renamed to 
+  'set_sysinclude_delimiter()' to better fit the naming scheme of the other 
+  functions.
+- Wrote more documentation
+- Unified the different token definitions of the lexers, so that there is only
+  one token type left. This required some changes in the interface:
+    - There is no need anymore to explicitly specify the namespace of the token
+      type to use.
+- Added the command line option -P to the Wave driver program, which predefines 
+  a macro (i.e. defines it such, that is _not_ undefinable through an #undef
+  directive from inside the preprocessed program).
+
+Sat Mar  8 07:46:43     2003
+- Released Wave 0.9.0
+
+Thu Mar  6 20:02:44     2003
+- Compiled Wave with IntelV7.0/DinkumwareSTL (from VC6sp5)
+- Fixed new compilation problems with gcc -Wall
+- Fixed the list_includes and cpp_tokens samples to compile and link correctly.
+- Fixed a bug, where a wrong filename was reported by the generated #line 
+  directive.
+- Fixed a bug, where the __FILE__ macro was expanded without '\"' around the
+  filename.
+- The generated #line directives and the expanded __FILE__ macro now report
+  the filename in a native (to the system) format. Additionally the generated
+  string literals are now escaped correctly.
+
+Wed Mar  5 21:11:14     2003
+- Reorganized the directory structure to mirror the namespace structure of the
+  library
+- Fixed a bug, where the complete input after the first found #include 
+  directive were eaten up.
+- Fixed a bug, where the __LINE__ macro expanded to a incorrect linenumber, if
+  the __LINE__ macro was encountered on a line after a '\\' '\n' sequence.
+
+Tue Mar  4 11:50:24     2003
+- The new name of the project is 'Wave'.
+- Adjusted namespaces, comments etc. to reflect the new name.
+- Added the command line option -U [--undefine], which allows to remove one of 
+  the predefined macros (except __LINE__, __FILE__, __DATE__, __TIME__, 
+  __STDC__ and __cplusplus)
+
+Sun Mar  2 20:10:04     2003
+- Fixed a bug while expanding macros without any definition part (empty macros)
+- The pp-iterator will not emit a newline for every recognized preprocessing
+  directive anymore. The generated output is much more condensed this way. 
+- The pp-iterator now emits #line directives at appropriate places.
+- Added an additional parser to the library, which may be used to parse macros
+  given in the command line syntax, i.e. something like 'MACRO(x)=definition'.
+- Added the possibility to the cpp driver sample, to add macros from the 
+  command line through the -D command line switch.
+- Martin Wille contributed a test script to allow automatic testing of the 
+  cpp driver sample by feeding all files contained in the test_files directory
+  through the cpp driver and comparing the generated output with the 
+  corresponding expectations.
+- Added config file support to allow for predefined option sets (for instance
+  for the emulation of other compilers)
+- Changed the way, how include paths are defined. It resembles now the 
+  behaviour of gcc. 
+  Any directories specified with '-I' options before an eventually given '-I-' 
+  option are searched only for the case of '#include "file"', they are not 
+  searched for '#include <file>' directives. If additional directories are 
+  specified with '-I' options after a '-I-' option was given, these directories 
+  are searched for all '#include' directives. In addition, the '-I-' option 
+  inhibits the use of the current directory as the first search directory for 
+  '#include "file"'. Therefore, the current directory is searched only if it is 
+  requested explicitly with '-I.'. Specifying both '-I-' and '-I.' allows to 
+  control precisely which directories are searched before the current one 
+  and which are searched after.
+- Added config file support to the cpp driver.
+- stored not only the current 'name' of a file (given eventually by a #line
+  directive) but in parallel the actual full file system name of this file too.
+  
+Tue Feb 25 21:44:19     2003
+- Fixed the warnings emitted by gcc -Wall.
+- Fixed a bug in the cpp grammar, which causes to failing the recognition of 
+  certain preprocessor directives if at the end of this directive were placed 
+  a C++ comment.
+- Simplified and extended the insertion of whitespace tokens at places, where
+  otherwise two adjacent tokens would form a new different token, if 
+  retokenized.
+
+Mon Feb 24 19:13:46     2003
+- defined() functionality was broken
+- added missing typename keywords
+- added missing using namespace statements, where appropriate
+- added a warning, when a predefined macro is to be undefined (by an #undef 
+  directive)
+- removed the 'compile in C mode' hack for the re2c generated lexer (VC7.1 
+  (final beta) is not able to compile it with optimizations switched on 
+  anyway :( )
+- compiled with gcc 3.2 and Intel V7.0 (20030129Z)
+
+Sun Feb 23 23:39:33  2003
+- Fixed a couple of 'missing typename' bugs (thanks to Martin Wille)
+- Added code to insert whitespace at places, where otherwise two adjacent 
+  tokens would form a new different token, if retokenized.
+- Fixed a severe macro expansion bug.
+- Added the handling of invalid or not allowed universal character values 
+  inside of string literals and character literals.
+
+Sat Feb 22 20:52:06  2003
+- Bumped version to 0.9.0
+- Added test for invalid or not allowed universal character values (see
+  C++ Standard 2.2.2 [lex.charset] and Annex E)
+- Fixed a bug with newlines between a macro name and the opening parenthesis 
+  during the macro expansion and a bug with newlines inside the parameter list
+  during the macro expansion.
+- Added the following predefined macros:
+    __SPIRIT_PP__
+        expands to the version number of the pp-iterator lib (i.e. 0x0090 for 
+        V0.9.0)
+    __SPIRIT_PP_VERSION__
+        expands to the full version number of the pp-iterator lib (i.e.
+        0x00900436 for V0.9.0.436)
+    __SPIRIT_PP_VERSION_STR__
+        expands to the full version string of the pp-iterator lib (i.e. 
+        "0.9.0.436")
+  
+Fri Feb 21 22:09:04  2003 (feature complete!)
+- Allowed to optionally compile the Re2c generated lexer in 'C' mode, because 
+  at least the VC7.1 (final beta) compiler has problems to compile it in 'C++'
+  mode with optimizations switch on
+- Implemented #error and #warning (optional) directives (C++ standard 16.5). 
+  Additionally there are now allowed the following preprocessor configuration 
+  constants:
+    CPP_PREPROCESS_ERROR_MESSAGE_BODY
+        if defined, preprocesses the message body of #error and #warning  
+        directives to allow for better diagnostics.
+    CPP_SUPPORT_WARNING_DIRECTIVE
+        if defined, then the #warning directive will be recognized such, that
+        a warning with the given message will be issued
+- Adjusted the error handling for the Re2c generated C++ lexer, so that any
+  error inside the lexer is now propagated as an cpplexer_exception.
+- Implemented the #line directive (C++ standard 16.4)
+- Implemented #pragma directive (C++ standard 16.6)
+  Additionally there are now allowed the following preprocessor configuration 
+  constants:
+    CPP_RETURN_PRAGMA_DIRECTIVES
+        if defined, then the whole pragma directive is returned as a token
+        sequence to the caller, if not defined the whole pragma directive is 
+        skipped
+    CPP_PREPROCESS_PRAGMA_BODY
+        if defined, then the #pragma body will be preprocessed 
+- Implemented #include directive with macro arguments (C++ standard 16.2.4)
+- Made the namespace structure finer granulated to leave only the main 
+  interface classes in the main namespace cpp. All other classes are moved into
+  sub-namespaces to reflect the logical dependencies
+- Reorganized the public interface of the context<> template class, made all
+  non relevant functions into the protected.
+- Implemented predefined macros (__LINE__ et.al.) (C++ standard 16.8)
+- Further documentation work
+  
+Wed Feb 19 23:44:47  2003
+- Corrected a lot of bugs in the macro expansion engine, which now should be 
+  conformant to the C++ standard.
+- # (null) directive (C++ standard 16.7)
+
+Sun Feb 16 08:40:38  2003
+- Added a macro expansion engine which expands macros with arguments 
+  C++ standard 16.3 [cpp.replace]
+- Added a new sample: cpp_tokens. This sample preprocesses a given file and
+  prints out the string representations of all tokens returned from the pp 
+  iterator
+- Added documentation (to be continued!)
+- Added a couple of small test files to test elementary functionality
+  (the tests mainly were contributed by Paul Mensonides)
+- The main cpp sample is now a simple preprocessor driver program, which 
+  outputs the string representation of the preprocessed input stream. Use 
+  cpp --help to get a hint, how to use it.
+- Fixed a bug in the preprocessor grammar which failed to recognize a pp 
+  statement, if there was a C++ comment at the end of the line
+- Added '#' operator (C++ standard 16.3.2) [cpp.stringize]
+- Fixed a bug in the slex based C++ lexer to handle the concatenation 
+  characters correctly ('\\' followed by a '\n')
+
+Sun Feb  9 23:01:00  2003
+- Improved error handling for #if et.al.
+- Fixed a pair of lexer errors
+- Implemented the #if/#elif statements, the sample now contains a complete C++ 
+  expression evaluation engine (for the calculation of the outcome of the 
+  #if/#elif statement conditions)
+- Implemented macro replacement (with parameters)
+- Implemented the '##' [cpp.concat] operator
+- Implemented the defined() [cpp.cond] operator
+
+Sun Feb  2 23:28:24  2003
+- Implemented the  #define, #undef, #ifdef, #ifndef, #else and #endif 
+  statements
+- Added optional parse tree output as xml stream (controlled through the config
+  pp constant CPP_DUMP_PARSE_TREE)
+
+Fri Jan 31 21:30:55  2003
+- Fixed different minor issues and a border case (#include statement at the 
+  last line of a included file)
+
+Wed Jan 29 21:13:32  2003
+- Fixed exception handling to report the correct error position
+- Fixed another bug in the stream position calculation scheme
+- Added a more elaborate sample 'list_includes' which lists the dependency
+  information for a given source file (see test/list_includes/readme.txt).
+
+Sat Jan 18 22:01:03  2003
+- Fixed a bug in the stream position calculation scheme
+- Made cpp::exceptions more standard conformant (added 'throw()' at appropriate 
+  places)
+- Overall housekeeping :-)
+
+Wed Jan 15 21:54:20  2003
+Changes since project start (still 0.5.0)
+- Added #include <...> and #include "..." functionality
+- pp directives are now generally recognized 
+- Decoupled the C++ lexers and the pp grammar to separate compilation
+  units (optionally) to speed up compilation (a lot!)
+
+Thu Jan  2 12:39:30  2003
+A completely new version 0.5.0 of the C preprocessor was started. It's a 
+complete rewrite of the existing code base. The main differences are:
+- The preprocessor is now implemented as an iterator, which returns the 
+  current preprocessed token from the input stream.
+- The preprocessing of include files isn't implemented through recursion
+  anymore. This follows directly from the first change. As a result of this
+  change the internal error handling is simplified.
+- The C preprocessor iterator itself is feeded by a new unified C++ lexer 
+  iterator. BTW, this C++ lexer iterator could be used standalone and is not 
+  tied to the C preprocessor. There are two different C++ lexers implemented 
+  now, which are functionally completely identical. These expose a similar
+  interface, so the C preprocessor could be used with both of them.
+- The C++ lexers integrated into the C preprocessor by now are:
+    Slex:   A spirit based table driven regular expression lexer (the slex 
+            engine originally was written by Dan Nuffer and is available as a
+            separate Spirit sample).
+    Re2c:   A C++ lexer generated with the help of the re2c tool. This C++
+            lexer was written as a sample by Dan Nuffer too.
+  It isn't hard to plug in additional different C++ lexers. There are plans to
+  integrate a third one written by Juan Carlos Arevalo-Baeza, which is 
+  available as a Spirit sample.
+  
+-------------------------------------------------------------------------------
+Tue Feb 12 22:29:50  2002
+Changes from 0.2.3 to 0.2.4:
+- Moved XML dumping functions to the main Spirit directory
+- Fixed operator '##', it was not correctly implemented somehow :-(
+
+Sun Feb 10 21:07:19  2002
+Changes from 0.2.2 to 0.2.3:
+- Implemented concatenation operator '##' (cpp.concat)
+- Removed defined() functionality for Intel compiler (it ICE's) until this 
+  issue is resolved
+- Separated code for dumping a parse tree to XML for inclusion in the main
+  Spirit headers
+
+Thu Jan 17 23:51:21  2002
+Changes from 0.2.1 to 0.2.2:
+- Fixes to compile with gcc 2.95.2 and gcc 3.0.2 (thanks Dan Nuffer)
+- Reformatted the grammars to conform to a single formatting guideline
+- Assigned explicit rule_id's to the rules of cpp_grammar, so that the 
+  access code to the embedded definition class is not needed anymore
+- Fixed a remaining const problem
+
+Tue Jan 15 23:40:40  2002
+Changes from 0.2.0 to 0.2.1:
+- Corrected handling of defined() operator
+- In preprocessing conditionals undefined identifiers now correctly
+  replaced by '0'
+- Fixed several const problems
+- Added parse_node_iterator for traversing one node in a parse_tree
+  without going deeper down the hierarchy than one level (this is useful,
+  if all inspected tokens arranged along a single node in the parse tree.
+  The main difference to the parse_tree_iterator is, that the underlying
+  iterator generally can be adjusted correctly after advancing the attached
+  parse_node_iterator
+- Fixed a problem with gcc 2.95.2, which doesn't have a <sstream> header
+- Prepared usage of slex for lexer states
+
+Sun Jan 13 10:21:16  2002
+Changes from 0.1.0 to 0.2.0:
+- Added operator 'defined()'
+- Added directive '#warning'
+- Corrected error reporting
+- Added command line option -I- for finer control of the searched include
+  directories (-I and -I- should now work as in gcc, see readme.html for 
+  more info)
+- Corrected conditional preprocessing (should be fully functional now)
+- Fixed existing code base for changes made in parse tree support
+- Moved parse tree utility functions to a separate header (prepared for 
+  inclusion to the Spirit main library)
Modified: branches/CMake/release/libs/wave/doc/compiletime_config.html
==============================================================================
--- branches/CMake/release/libs/wave/doc/compiletime_config.html	(original)
+++ branches/CMake/release/libs/wave/doc/compiletime_config.html	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -131,6 +131,21 @@
     </p>
       </td>
   </tr>
+    <tr>
+        <td class="table_cells">
+            <code>BOOST_WAVE_SUPPORT_THREADING</code></td>
+        <td class="table_cells">
+            <p>This preprocessor constant allows to configer whether the Wave library will be built
+                with threading support enabled or not. This value (if defined) should be set to
+                zero ('0') if threading needs to be disabled and to a numerical value not equal
+                to zero, if threading should be enabled explicitely.
+            </p>
+            <p>
+                If this constant is not defined, the Wave library will be built using the threading
+                as picked up from the Boost build environment (see <code>BOOST_HAS_THREADS</code> in the Boost
+                    configuration dosumentation).</p>
+        </td>
+    </tr>
 </table>
 <P dir="ltr"><b><a name="using_custom_lexer"></a>Using a different token type or lexer type in conjunction with Wave </b></P>
 <P dir="ltr">It is possible to use the <tt>Wave</tt> library while using your own token and/or lexer types. This may be achieved by providing your lexer type as the second template parameter while instantiating the <tt>boost::wave::context<></tt> object. The token type used by the library is derived from the <tt>token_type</tt> typedef to be provided by the lexer type. If you want to provide your own token type only, you may use the <tt>boost::wave::lex_iterator<></tt> type contained with the library. This type needs to be parametrized with the token type to use. </P>
@@ -229,7 +244,7 @@
 <font size="2">Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) </font> </p>
 <span class="updated"></span>
 <p class="copyright"><span class="updated">Last updated: 
-  <!-- #BeginDate format:fcAm1m -->Wednesday, July 4, 2007  13:21<!-- #EndDate -->
+  <!-- #BeginDate format:fcAm1m -->Wednesday, January 31, 2008  16:50<!-- #EndDate -->
 </span></p>
 </body>
 </html>
Modified: branches/CMake/release/libs/wave/doc/tracing_facility.html
==============================================================================
--- branches/CMake/release/libs/wave/doc/tracing_facility.html	(original)
+++ branches/CMake/release/libs/wave/doc/tracing_facility.html	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -26,7 +26,7 @@
 </table>
 <p>If you ever had the need to debug a macro expansion you had to discover, that 
   your tools provide only little or no support for this task. For this reason 
-  the <i>Wave</i> library got a tracing facility, which allows to get selectively 
+  the <i>Wave</i> library has a tracing facility, which allows to get selectively 
   some information about the expansion of a certain macro or several macros. </p>
 <p>The tracing of macro expansions generates a possibly huge amount of information, 
   so it is recommended, that you explicitely enable/disable the tracing for the 
Modified: branches/CMake/release/libs/wave/samples/Jamfile.v2
==============================================================================
--- branches/CMake/release/libs/wave/samples/Jamfile.v2	(original)
+++ branches/CMake/release/libs/wave/samples/Jamfile.v2	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -16,3 +16,4 @@
 build-project hannibal/build ;
 build-project real_positions/build ;
 build-project token_statistics/build ;
+build-project preprocess_pragma_output/build ;
Modified: branches/CMake/release/libs/wave/samples/hannibal/hannibal.cpp
==============================================================================
--- branches/CMake/release/libs/wave/samples/hannibal/hannibal.cpp	(original)
+++ branches/CMake/release/libs/wave/samples/hannibal/hannibal.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -18,8 +18,8 @@
 #include <string>
 #include <vector>
 
-#include <boost/spirit/tree/ast.hpp>
-#include <boost/spirit/tree/tree_to_xml.hpp>
+#include <boost/spirit/include/classic_ast.hpp>
+#include <boost/spirit/include/classic_tree_to_xml.hpp>
 #include <boost/program_options.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -244,20 +244,20 @@
     translation_unit_skipper s; 
 
 #if HANNIBAL_DUMP_PARSE_TREE != 0
-    typedef boost::spirit::tree_parse_info<context_type::iterator_type> 
+    typedef boost::spirit::classic::tree_parse_info<context_type::iterator_type> 
         result_type;
     translation_unit_grammar::rule_map_type rule_map;
     translation_unit_grammar g(&rule_map);
 
     // parse the input file
-    result_type pi = boost::spirit::ast_parse(first, last, g, s);
+    result_type pi = boost::spirit::classic::ast_parse(first, last, g, s);
 #else
-    typedef boost::spirit::parse_info<context_type::iterator_type> 
+    typedef boost::spirit::classic::parse_info<context_type::iterator_type> 
         result_type;
     translation_unit_grammar g;
 
     // parse the input file
-    result_type pi = boost::spirit::parse(first, last, g, s);
+    result_type pi = boost::spirit::classic::parse(first, last, g, s);
 #endif
 
         if (pi.full) {
@@ -266,7 +266,7 @@
 
 #if HANNIBAL_DUMP_PARSE_TREE != 0
             // generate xml dump from parse tree, if requested
-            boost::spirit::tree_to_xml(std::cerr, pi.trees, "", rule_map, 
+            boost::spirit::classic::tree_to_xml(std::cerr, pi.trees, "", rule_map, 
                 &get_token_id, &get_token_value);
 #endif
         }
Modified: branches/CMake/release/libs/wave/samples/hannibal/translation_unit_parser.h
==============================================================================
--- branches/CMake/release/libs/wave/samples/hannibal/translation_unit_parser.h	(original)
+++ branches/CMake/release/libs/wave/samples/hannibal/translation_unit_parser.h	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -15,8 +15,8 @@
 #include <map>
 
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/utility/confix.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_confix.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/token_ids.hpp>
@@ -34,8 +34,7 @@
         const char rule_type[],
         std::ostream &strm
         )
-        :rule_type_( rule_type),
-         strm_( strm)
+        : strm_( strm), rule_type_( rule_type)
     {
         // nop
     }
@@ -99,7 +98,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 struct translation_unit_grammar 
-:   public boost::spirit::grammar<translation_unit_grammar>
+:   public boost::spirit::classic::grammar<translation_unit_grammar>
 {
 #if HANNIBAL_DUMP_PARSE_TREE != 0
 //
@@ -110,7 +109,9 @@
 // Please Note: the lifetime of the rule map should at least extend beyond the 
 // call of the definition constructor...
 //
-    typedef std::map<boost::spirit::parser_id, std::string> rule_map_type;
+    typedef std::map<boost::spirit::classic::parser_id, std::string> 
+        rule_map_type;
+
     translation_unit_grammar(rule_map_type *rule_map_ptr_ = 0)
     :   rule_map_ptr(rule_map_ptr_)
 #else
@@ -125,7 +126,7 @@
     struct definition
     {
         // declare non-terminals
-        typedef boost::spirit::rule<ScannerT> rule_type;
+        typedef boost::spirit::classic::rule<ScannerT> rule_type;
 
         rule_type constant_expression;
         rule_type logical_or_exp, logical_and_exp;
@@ -135,8 +136,8 @@
         rule_type add_exp, multiply_exp;
         rule_type unary_exp, primary_exp, constant;
 
-        boost::spirit::subrule<0> const_exp_subrule;
-        boost::spirit::subrule<1> shift_exp_clos;
+        boost::spirit::classic::subrule<0> const_exp_subrule;
+        boost::spirit::classic::subrule<1> shift_exp_clos;
 
         rule_type simple_type_name, class_keywords;
         rule_type storage_class_specifier, cv_qualifier, function_specifier;
@@ -250,7 +251,7 @@
 
         definition(translation_unit_grammar const& self)
         {
-            using namespace boost::spirit;
+            using namespace boost::spirit::classic;
             using namespace boost::wave;
             using boost::wave::util::pattern_p;
             
@@ -295,7 +296,8 @@
             HANNIBAL_REGISTER_RULE( string_literal);
             string_literal
                 =   pattern_p( StringLiteralTokenType, TokenTypeMask)
-
+                ;
+                
             HANNIBAL_REGISTER_RULE( boolean_literal);
             boolean_literal
                 =   pattern_p( BoolLiteralTokenType, TokenTypeMask)
Modified: branches/CMake/release/libs/wave/samples/hannibal/translation_unit_skipper.h
==============================================================================
--- branches/CMake/release/libs/wave/samples/hannibal/translation_unit_skipper.h	(original)
+++ branches/CMake/release/libs/wave/samples/hannibal/translation_unit_skipper.h	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -12,8 +12,8 @@
 #if !defined(HANNIBAL_TRANSLATION_UNIT_SKIPPER_H_INCLUDED)
 #define HANNIBAL_TRANSLATION_UNIT_SKIPPER_H_INCLUDED
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/utility/confix.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_confix.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/token_ids.hpp>
@@ -21,14 +21,14 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 struct translation_unit_skipper
-:   public boost::spirit::grammar<translation_unit_skipper>
+:   public boost::spirit::classic::grammar<translation_unit_skipper>
 {
     template <typename ScannerT>
     struct definition
     {
         definition(translation_unit_skipper const& /*self*/)
         {
-            using namespace boost::spirit;
+            using namespace boost::spirit::classic;
             using namespace boost::wave;
             using boost::wave::util::pattern_p;
             
@@ -41,9 +41,9 @@
                 ;
         }
 
-        boost::spirit::rule<ScannerT> skip;
+        boost::spirit::classic::rule<ScannerT> skip;
 
-        boost::spirit::rule<ScannerT> const&
+        boost::spirit::classic::rule<ScannerT> const&
         start() const { return skip; }
     };
 };
Modified: branches/CMake/release/libs/wave/samples/waveidl/idl.cpp
==============================================================================
--- branches/CMake/release/libs/wave/samples/waveidl/idl.cpp	(original)
+++ branches/CMake/release/libs/wave/samples/waveidl/idl.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -47,7 +47,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //  import required names
-using namespace boost::spirit;
+using namespace boost::spirit::classic;
 
 using std::string;
 using std::pair;
Modified: branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp.re
==============================================================================
--- branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp.re	(original)
+++ branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp.re	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -1,437 +1,437 @@
-/*=============================================================================
-    Boost.Wave: A Standard compliant C++ preprocessor library
-
-    Copyright (c) 2001 Daniel C. Nuffer
+/*=============================================================================
+    Boost.Wave: A Standard compliant C++ preprocessor library
+
+    Copyright (c) 2001 Daniel C. Nuffer
     Copyright (c) 2001-2008 Hartmut Kaiser. 
-    Distributed under the Boost Software License, Version 1.0. (See accompanying 
-    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-    This is a lexer conforming to the Standard with a few exceptions.
-    So it does allow the '$' to be part of identifiers. If you need strict 
-    Standards conforming behaviour, please include the lexer definition 
-    provided in the file strict_cpp.re.
-
-    TODO: 
-        handle errors better.
-=============================================================================*/
-
-/*!re2c
-re2c:indent:string = "    "; 
-any                = [\t\v\f\r\n\040-\377];
-anyctrl            = [\001-\037];
-OctalDigit         = [0-7];
-Digit              = [0-9];
-HexDigit           = [a-fA-F0-9];
-Integer            = (("0" [xX] HexDigit+) | ("0" OctalDigit*) | ([1-9] Digit*));
-ExponentStart      = [Ee] [+-];
-ExponentPart       = [Ee] [+-]? Digit+;
-FractionalConstant = (Digit* "." Digit+) | (Digit+ ".");
-FloatingSuffix     = [fF] [lL]? | [lL] [fF]?;
-IntegerSuffix      = [uU] [lL]? | [lL] [uU]?;
-LongIntegerSuffix  = [uU] ([lL] [lL]) | ([lL] [lL]) [uU]?;
-Backslash          = [\\] | "??/";
-EscapeSequence     = Backslash ([abfnrtv?'"] | Backslash | "x" HexDigit+ | OctalDigit OctalDigit? OctalDigit?);
-HexQuad            = HexDigit HexDigit HexDigit HexDigit;
-UniversalChar      = Backslash ("u" HexQuad | "U" HexQuad HexQuad);
-Newline            = "\r\n" | "\n" | "\r";
-PPSpace            = ([ \t\f\v]|("/*"(any\[*]|Newline|("*"+(any\[*/]|Newline)))*"*"+"/"))*;
-Pound              = "#" | "??=" | "%:";
-NonDigit           = [a-zA-Z_$] | UniversalChar;
-*/
-
-/*!re2c
-    "/*"            { goto ccomment; }
-    "//"            { goto cppcomment; }
-    "."? Digit      { goto pp_number; }
-
-    "asm"           { BOOST_WAVE_RET(T_ASM); }
-    "auto"          { BOOST_WAVE_RET(T_AUTO); }
-    "bool"          { BOOST_WAVE_RET(T_BOOL); }
-    "break"         { BOOST_WAVE_RET(T_BREAK); }
-    "case"          { BOOST_WAVE_RET(T_CASE); }
-    "catch"         { BOOST_WAVE_RET(T_CATCH); }
-    "char"          { BOOST_WAVE_RET(T_CHAR); }
-    "class"         { BOOST_WAVE_RET(T_CLASS); }
-    "const"         { BOOST_WAVE_RET(T_CONST); }
-    "const_cast"    { BOOST_WAVE_RET(T_CONSTCAST); }
-    "continue"      { BOOST_WAVE_RET(T_CONTINUE); }
-    "default"       { BOOST_WAVE_RET(T_DEFAULT); }
-    "delete"        { BOOST_WAVE_RET(T_DELETE); }
-    "do"            { BOOST_WAVE_RET(T_DO); }
-    "double"        { BOOST_WAVE_RET(T_DOUBLE); }
-    "dynamic_cast"  { BOOST_WAVE_RET(T_DYNAMICCAST); }
-    "else"          { BOOST_WAVE_RET(T_ELSE); }
-    "enum"          { BOOST_WAVE_RET(T_ENUM); }
-    "explicit"      { BOOST_WAVE_RET(T_EXPLICIT); }
-    "export"        { BOOST_WAVE_RET(T_EXPORT); }
-    "extern"        { BOOST_WAVE_RET(T_EXTERN); }
-    "false"         { BOOST_WAVE_RET(T_FALSE); }
-    "float"         { BOOST_WAVE_RET(T_FLOAT); }
-    "for"           { BOOST_WAVE_RET(T_FOR); }
-    "friend"        { BOOST_WAVE_RET(T_FRIEND); }
-    "goto"          { BOOST_WAVE_RET(T_GOTO); }
-    "if"            { BOOST_WAVE_RET(T_IF); }
-    "import"        { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-    "inline"        { BOOST_WAVE_RET(T_INLINE); }
-    "int"           { BOOST_WAVE_RET(T_INT); }
-    "long"          { BOOST_WAVE_RET(T_LONG); }
-    "mutable"       { BOOST_WAVE_RET(T_MUTABLE); }
-    "namespace"     { BOOST_WAVE_RET(T_NAMESPACE); }
-    "new"           { BOOST_WAVE_RET(T_NEW); }
-    "operator"      { BOOST_WAVE_RET(T_OPERATOR); }
-    "private"       { BOOST_WAVE_RET(T_PRIVATE); }
-    "protected"     { BOOST_WAVE_RET(T_PROTECTED); }
-    "public"        { BOOST_WAVE_RET(T_PUBLIC); }
-    "register"      { BOOST_WAVE_RET(T_REGISTER); }
-    "reinterpret_cast" { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-    "return"        { BOOST_WAVE_RET(T_RETURN); }
-    "short"         { BOOST_WAVE_RET(T_SHORT); }
-    "signed"        { BOOST_WAVE_RET(T_SIGNED); }
-    "sizeof"        { BOOST_WAVE_RET(T_SIZEOF); }
-    "static"        { BOOST_WAVE_RET(T_STATIC); }
-    "static_cast"   { BOOST_WAVE_RET(T_STATICCAST); }
-    "struct"        { BOOST_WAVE_RET(T_STRUCT); }
-    "switch"        { BOOST_WAVE_RET(T_SWITCH); }
-    "template"      { BOOST_WAVE_RET(T_TEMPLATE); }
-    "this"          { BOOST_WAVE_RET(T_THIS); }
-    "throw"         { BOOST_WAVE_RET(T_THROW); }
-    "true"          { BOOST_WAVE_RET(T_TRUE); }
-    "try"           { BOOST_WAVE_RET(T_TRY); }
-    "typedef"       { BOOST_WAVE_RET(T_TYPEDEF); }
-    "typeid"        { BOOST_WAVE_RET(T_TYPEID); }
-    "typename"      { BOOST_WAVE_RET(T_TYPENAME); }
-    "union"         { BOOST_WAVE_RET(T_UNION); }
-    "unsigned"      { BOOST_WAVE_RET(T_UNSIGNED); }
-    "using"         { BOOST_WAVE_RET(T_USING); }
-    "virtual"       { BOOST_WAVE_RET(T_VIRTUAL); }
-    "void"          { BOOST_WAVE_RET(T_VOID); }
-    "volatile"      { BOOST_WAVE_RET(T_VOLATILE); }
-    "wchar_t"       { BOOST_WAVE_RET(T_WCHART); }
-    "while"         { BOOST_WAVE_RET(T_WHILE); }
-
-    "__int8"        { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-    "__int16"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-    "__int32"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-    "__int64"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-    "_"? "_based"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-    "_"? "_declspec" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-    "_"? "_cdecl"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-    "_"? "_fastcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-    "_"? "_stdcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-    "__try"         { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-    "__except"      { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-    "__finally"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-    "__leave"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-    "_"? "_inline"  { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-    "_"? "_asm"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-
-    "{"             { BOOST_WAVE_RET(T_LEFTBRACE); }
-    "??<"           { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-    "<%"            { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-    "}"             { BOOST_WAVE_RET(T_RIGHTBRACE); }
-    "??>"           { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-    "%>"            { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-    "["             { BOOST_WAVE_RET(T_LEFTBRACKET); }
-    "??("           { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-    "<:"            { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-    "]"             { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-    "??)"           { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-    ":>"            { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-    "#"             { BOOST_WAVE_RET(T_POUND); }
-    "%:"            { BOOST_WAVE_RET(T_POUND_ALT); }
-    "??="           { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-    "##"            { BOOST_WAVE_RET(T_POUND_POUND); }
-    "#??="          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=#"          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=??="        { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "%:%:"          { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-    "("             { BOOST_WAVE_RET(T_LEFTPAREN); }
-    ")"             { BOOST_WAVE_RET(T_RIGHTPAREN); }
-    ";"             { BOOST_WAVE_RET(T_SEMICOLON); }
-    ":"             { BOOST_WAVE_RET(T_COLON); }
-    "..."           { BOOST_WAVE_RET(T_ELLIPSIS); }
-    "?"             { BOOST_WAVE_RET(T_QUESTION_MARK); }
-    "::"            
-        { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_COLON);
-            }
-            else {
-                BOOST_WAVE_RET(T_COLON_COLON); 
-            }
-        }
-    "."             { BOOST_WAVE_RET(T_DOT); }
-    ".*" 
-        { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
-            }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR); 
-            }
-        }
-    "+"             { BOOST_WAVE_RET(T_PLUS); }
-    "-"             { BOOST_WAVE_RET(T_MINUS); }
-    "*"             { BOOST_WAVE_RET(T_STAR); }
-    "/"             { BOOST_WAVE_RET(T_DIVIDE); }
-    "%"             { BOOST_WAVE_RET(T_PERCENT); }
-    "^"             { BOOST_WAVE_RET(T_XOR); }
-    "??'"           { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-    "xor"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-    "&"             { BOOST_WAVE_RET(T_AND); }
-    "bitand"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-    "|"             { BOOST_WAVE_RET(T_OR); }
-    "bitor"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-    "??!"           { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-    "~"             { BOOST_WAVE_RET(T_COMPL); }
-    "??-"           { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-    "compl"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-    "!"             { BOOST_WAVE_RET(T_NOT); }
-    "not"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-    "="             { BOOST_WAVE_RET(T_ASSIGN); }
-    "<"             { BOOST_WAVE_RET(T_LESS); }
-    ">"             { BOOST_WAVE_RET(T_GREATER); }
-    "+="            { BOOST_WAVE_RET(T_PLUSASSIGN); }
-    "-="            { BOOST_WAVE_RET(T_MINUSASSIGN); }
-    "*="            { BOOST_WAVE_RET(T_STARASSIGN); }
-    "/="            { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-    "%="            { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-    "^="            { BOOST_WAVE_RET(T_XORASSIGN); }
-    "xor_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-    "??'="          { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-    "&="            { BOOST_WAVE_RET(T_ANDASSIGN); }
-    "and_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-    "|="            { BOOST_WAVE_RET(T_ORASSIGN); }
-    "or_eq"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-    "??!="          { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-    "<<"            { BOOST_WAVE_RET(T_SHIFTLEFT); }
-    ">>"            { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-    ">>="           { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-    "<<="           { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-    "=="            { BOOST_WAVE_RET(T_EQUAL); }
-    "!="            { BOOST_WAVE_RET(T_NOTEQUAL); }
-    "not_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-    "<="            { BOOST_WAVE_RET(T_LESSEQUAL); }
-    ">="            { BOOST_WAVE_RET(T_GREATEREQUAL); }
-    "&&"            { BOOST_WAVE_RET(T_ANDAND); }
-    "and"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-    "||"            { BOOST_WAVE_RET(T_OROR); }
-    "??!|"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "|??!"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "or"            { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-    "??!??!"        { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "++"            { BOOST_WAVE_RET(T_PLUSPLUS); }
-    "--"            { BOOST_WAVE_RET(T_MINUSMINUS); }
-    ","             { BOOST_WAVE_RET(T_COMMA); }
-    "->*"
-        { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
-            }
-            else {
-                BOOST_WAVE_RET(T_ARROWSTAR); 
-            }
-        }
-    "->"            { BOOST_WAVE_RET(T_ARROW); }
-    "??/"           { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-
-
-    ([a-zA-Z_$] | UniversalChar) ([a-zA-Z_0-9$] | UniversalChar)*
-        { BOOST_WAVE_RET(T_IDENTIFIER); }
-
-    "L"? (['] (EscapeSequence|any\[\n\r\\']|UniversalChar)+ ['])
-        { BOOST_WAVE_RET(T_CHARLIT); }
-
-    "L"? (["] (EscapeSequence|any\[\n\r\\"]|UniversalChar)* ["])
-        { BOOST_WAVE_RET(T_STRINGLIT); }
-
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "<" (any\[\n\r>])+ ">" 
-        { BOOST_WAVE_RET(T_PP_HHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "\"" (any\[\n\r"])+ "\"" 
-        { BOOST_WAVE_RET(T_PP_QHEADER); } 
-
-    Pound PPSpace ( "include" | "include_next") PPSpace
-        { BOOST_WAVE_RET(T_PP_INCLUDE); } 
-
-    Pound PPSpace "if"        { BOOST_WAVE_RET(T_PP_IF); }
-    Pound PPSpace "ifdef"     { BOOST_WAVE_RET(T_PP_IFDEF); }
-    Pound PPSpace "ifndef"    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-    Pound PPSpace "else"      { BOOST_WAVE_RET(T_PP_ELSE); }
-    Pound PPSpace "elif"      { BOOST_WAVE_RET(T_PP_ELIF); }
-    Pound PPSpace "endif"     { BOOST_WAVE_RET(T_PP_ENDIF); }
-    Pound PPSpace "define"    { BOOST_WAVE_RET(T_PP_DEFINE); }
-    Pound PPSpace "undef"     { BOOST_WAVE_RET(T_PP_UNDEF); }
-    Pound PPSpace "line"      { BOOST_WAVE_RET(T_PP_LINE); }
-    Pound PPSpace "error"     { BOOST_WAVE_RET(T_PP_ERROR); }
-    Pound PPSpace "pragma"    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-
-    Pound PPSpace "warning"   { BOOST_WAVE_RET(T_PP_WARNING); }
-
-    Pound PPSpace "region"    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-    Pound PPSpace "endregion" { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-
-    [ \t\v\f]+
-        { BOOST_WAVE_RET(T_SPACE); }
-
-    Newline
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+    Distributed under the Boost Software License, Version 1.0. (See accompanying 
+    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+    This is a lexer conforming to the Standard with a few exceptions.
+    So it does allow the '$' to be part of identifiers. If you need strict 
+    Standards conforming behaviour, please include the lexer definition 
+    provided in the file strict_cpp.re.
+
+    TODO: 
+        handle errors better.
+=============================================================================*/
+
+/*!re2c
+re2c:indent:string = "    "; 
+any                = [\t\v\f\r\n\040-\377];
+anyctrl            = [\001-\037];
+OctalDigit         = [0-7];
+Digit              = [0-9];
+HexDigit           = [a-fA-F0-9];
+Integer            = (("0" [xX] HexDigit+) | ("0" OctalDigit*) | ([1-9] Digit*));
+ExponentStart      = [Ee] [+-];
+ExponentPart       = [Ee] [+-]? Digit+;
+FractionalConstant = (Digit* "." Digit+) | (Digit+ ".");
+FloatingSuffix     = [fF] [lL]? | [lL] [fF]?;
+IntegerSuffix      = [uU] [lL]? | [lL] [uU]?;
+LongIntegerSuffix  = [uU] ([lL] [lL]) | ([lL] [lL]) [uU]?;
+Backslash          = [\\] | "??/";
+EscapeSequence     = Backslash ([abfnrtv?'"] | Backslash | "x" HexDigit+ | OctalDigit OctalDigit? OctalDigit?);
+HexQuad            = HexDigit HexDigit HexDigit HexDigit;
+UniversalChar      = Backslash ("u" HexQuad | "U" HexQuad HexQuad);
+Newline            = "\r\n" | "\n" | "\r";
+PPSpace            = ([ \t\f\v]|("/*"(any\[*]|Newline|("*"+(any\[*/]|Newline)))*"*"+"/"))*;
+Pound              = "#" | "??=" | "%:";
+NonDigit           = [a-zA-Z_$] | UniversalChar;
+*/
+
+/*!re2c
+    "/*"            { goto ccomment; }
+    "//"            { goto cppcomment; }
+    "."? Digit      { goto pp_number; }
+
+    "asm"           { BOOST_WAVE_RET(T_ASM); }
+    "auto"          { BOOST_WAVE_RET(T_AUTO); }
+    "bool"          { BOOST_WAVE_RET(T_BOOL); }
+    "break"         { BOOST_WAVE_RET(T_BREAK); }
+    "case"          { BOOST_WAVE_RET(T_CASE); }
+    "catch"         { BOOST_WAVE_RET(T_CATCH); }
+    "char"          { BOOST_WAVE_RET(T_CHAR); }
+    "class"         { BOOST_WAVE_RET(T_CLASS); }
+    "const"         { BOOST_WAVE_RET(T_CONST); }
+    "const_cast"    { BOOST_WAVE_RET(T_CONSTCAST); }
+    "continue"      { BOOST_WAVE_RET(T_CONTINUE); }
+    "default"       { BOOST_WAVE_RET(T_DEFAULT); }
+    "delete"        { BOOST_WAVE_RET(T_DELETE); }
+    "do"            { BOOST_WAVE_RET(T_DO); }
+    "double"        { BOOST_WAVE_RET(T_DOUBLE); }
+    "dynamic_cast"  { BOOST_WAVE_RET(T_DYNAMICCAST); }
+    "else"          { BOOST_WAVE_RET(T_ELSE); }
+    "enum"          { BOOST_WAVE_RET(T_ENUM); }
+    "explicit"      { BOOST_WAVE_RET(T_EXPLICIT); }
+    "export"        { BOOST_WAVE_RET(T_EXPORT); }
+    "extern"        { BOOST_WAVE_RET(T_EXTERN); }
+    "false"         { BOOST_WAVE_RET(T_FALSE); }
+    "float"         { BOOST_WAVE_RET(T_FLOAT); }
+    "for"           { BOOST_WAVE_RET(T_FOR); }
+    "friend"        { BOOST_WAVE_RET(T_FRIEND); }
+    "goto"          { BOOST_WAVE_RET(T_GOTO); }
+    "if"            { BOOST_WAVE_RET(T_IF); }
+    "import"        { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
+    "inline"        { BOOST_WAVE_RET(T_INLINE); }
+    "int"           { BOOST_WAVE_RET(T_INT); }
+    "long"          { BOOST_WAVE_RET(T_LONG); }
+    "mutable"       { BOOST_WAVE_RET(T_MUTABLE); }
+    "namespace"     { BOOST_WAVE_RET(T_NAMESPACE); }
+    "new"           { BOOST_WAVE_RET(T_NEW); }
+    "operator"      { BOOST_WAVE_RET(T_OPERATOR); }
+    "private"       { BOOST_WAVE_RET(T_PRIVATE); }
+    "protected"     { BOOST_WAVE_RET(T_PROTECTED); }
+    "public"        { BOOST_WAVE_RET(T_PUBLIC); }
+    "register"      { BOOST_WAVE_RET(T_REGISTER); }
+    "reinterpret_cast" { BOOST_WAVE_RET(T_REINTERPRETCAST); }
+    "return"        { BOOST_WAVE_RET(T_RETURN); }
+    "short"         { BOOST_WAVE_RET(T_SHORT); }
+    "signed"        { BOOST_WAVE_RET(T_SIGNED); }
+    "sizeof"        { BOOST_WAVE_RET(T_SIZEOF); }
+    "static"        { BOOST_WAVE_RET(T_STATIC); }
+    "static_cast"   { BOOST_WAVE_RET(T_STATICCAST); }
+    "struct"        { BOOST_WAVE_RET(T_STRUCT); }
+    "switch"        { BOOST_WAVE_RET(T_SWITCH); }
+    "template"      { BOOST_WAVE_RET(T_TEMPLATE); }
+    "this"          { BOOST_WAVE_RET(T_THIS); }
+    "throw"         { BOOST_WAVE_RET(T_THROW); }
+    "true"          { BOOST_WAVE_RET(T_TRUE); }
+    "try"           { BOOST_WAVE_RET(T_TRY); }
+    "typedef"       { BOOST_WAVE_RET(T_TYPEDEF); }
+    "typeid"        { BOOST_WAVE_RET(T_TYPEID); }
+    "typename"      { BOOST_WAVE_RET(T_TYPENAME); }
+    "union"         { BOOST_WAVE_RET(T_UNION); }
+    "unsigned"      { BOOST_WAVE_RET(T_UNSIGNED); }
+    "using"         { BOOST_WAVE_RET(T_USING); }
+    "virtual"       { BOOST_WAVE_RET(T_VIRTUAL); }
+    "void"          { BOOST_WAVE_RET(T_VOID); }
+    "volatile"      { BOOST_WAVE_RET(T_VOLATILE); }
+    "wchar_t"       { BOOST_WAVE_RET(T_WCHART); }
+    "while"         { BOOST_WAVE_RET(T_WHILE); }
+
+    "__int8"        { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
+    "__int16"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
+    "__int32"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
+    "__int64"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
+    "_"? "_based"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
+    "_"? "_declspec" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
+    "_"? "_cdecl"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
+    "_"? "_fastcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
+    "_"? "_stdcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
+    "__try"         { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
+    "__except"      { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
+    "__finally"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
+    "__leave"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
+    "_"? "_inline"  { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
+    "_"? "_asm"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
+
+    "{"             { BOOST_WAVE_RET(T_LEFTBRACE); }
+    "??<"           { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
+    "<%"            { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
+    "}"             { BOOST_WAVE_RET(T_RIGHTBRACE); }
+    "??>"           { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
+    "%>"            { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
+    "["             { BOOST_WAVE_RET(T_LEFTBRACKET); }
+    "??("           { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
+    "<:"            { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
+    "]"             { BOOST_WAVE_RET(T_RIGHTBRACKET); }
+    "??)"           { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
+    ":>"            { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
+    "#"             { BOOST_WAVE_RET(T_POUND); }
+    "%:"            { BOOST_WAVE_RET(T_POUND_ALT); }
+    "??="           { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
+    "##"            { BOOST_WAVE_RET(T_POUND_POUND); }
+    "#??="          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+    "??=#"          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+    "??=??="        { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+    "%:%:"          { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
+    "("             { BOOST_WAVE_RET(T_LEFTPAREN); }
+    ")"             { BOOST_WAVE_RET(T_RIGHTPAREN); }
+    ";"             { BOOST_WAVE_RET(T_SEMICOLON); }
+    ":"             { BOOST_WAVE_RET(T_COLON); }
+    "..."           { BOOST_WAVE_RET(T_ELLIPSIS); }
+    "?"             { BOOST_WAVE_RET(T_QUESTION_MARK); }
+    "::"            
+        { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_COLON);
+            }
+            else {
+                BOOST_WAVE_RET(T_COLON_COLON); 
+            }
+        }
+    "."             { BOOST_WAVE_RET(T_DOT); }
+    ".*" 
+        { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_DOT);
+            }
+            else {
+                BOOST_WAVE_RET(T_DOTSTAR); 
+            }
+        }
+    "+"             { BOOST_WAVE_RET(T_PLUS); }
+    "-"             { BOOST_WAVE_RET(T_MINUS); }
+    "*"             { BOOST_WAVE_RET(T_STAR); }
+    "/"             { BOOST_WAVE_RET(T_DIVIDE); }
+    "%"             { BOOST_WAVE_RET(T_PERCENT); }
+    "^"             { BOOST_WAVE_RET(T_XOR); }
+    "??'"           { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
+    "xor"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
+    "&"             { BOOST_WAVE_RET(T_AND); }
+    "bitand"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
+    "|"             { BOOST_WAVE_RET(T_OR); }
+    "bitor"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
+    "??!"           { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
+    "~"             { BOOST_WAVE_RET(T_COMPL); }
+    "??-"           { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
+    "compl"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
+    "!"             { BOOST_WAVE_RET(T_NOT); }
+    "not"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
+    "="             { BOOST_WAVE_RET(T_ASSIGN); }
+    "<"             { BOOST_WAVE_RET(T_LESS); }
+    ">"             { BOOST_WAVE_RET(T_GREATER); }
+    "+="            { BOOST_WAVE_RET(T_PLUSASSIGN); }
+    "-="            { BOOST_WAVE_RET(T_MINUSASSIGN); }
+    "*="            { BOOST_WAVE_RET(T_STARASSIGN); }
+    "/="            { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
+    "%="            { BOOST_WAVE_RET(T_PERCENTASSIGN); }
+    "^="            { BOOST_WAVE_RET(T_XORASSIGN); }
+    "xor_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
+    "??'="          { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
+    "&="            { BOOST_WAVE_RET(T_ANDASSIGN); }
+    "and_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
+    "|="            { BOOST_WAVE_RET(T_ORASSIGN); }
+    "or_eq"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
+    "??!="          { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
+    "<<"            { BOOST_WAVE_RET(T_SHIFTLEFT); }
+    ">>"            { BOOST_WAVE_RET(T_SHIFTRIGHT); }
+    ">>="           { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
+    "<<="           { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
+    "=="            { BOOST_WAVE_RET(T_EQUAL); }
+    "!="            { BOOST_WAVE_RET(T_NOTEQUAL); }
+    "not_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
+    "<="            { BOOST_WAVE_RET(T_LESSEQUAL); }
+    ">="            { BOOST_WAVE_RET(T_GREATEREQUAL); }
+    "&&"            { BOOST_WAVE_RET(T_ANDAND); }
+    "and"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
+    "||"            { BOOST_WAVE_RET(T_OROR); }
+    "??!|"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+    "|??!"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+    "or"            { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
+    "??!??!"        { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+    "++"            { BOOST_WAVE_RET(T_PLUSPLUS); }
+    "--"            { BOOST_WAVE_RET(T_MINUSMINUS); }
+    ","             { BOOST_WAVE_RET(T_COMMA); }
+    "->*"
+        { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_ARROW);
+            }
+            else {
+                BOOST_WAVE_RET(T_ARROWSTAR); 
+            }
+        }
+    "->"            { BOOST_WAVE_RET(T_ARROW); }
+    "??/"           { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
+
+
+    ([a-zA-Z_$] | UniversalChar) ([a-zA-Z_0-9$] | UniversalChar)*
+        { BOOST_WAVE_RET(T_IDENTIFIER); }
+
+    "L"? (['] (EscapeSequence|any\[\n\r\\']|UniversalChar)+ ['])
+        { BOOST_WAVE_RET(T_CHARLIT); }
+
+    "L"? (["] (EscapeSequence|any\[\n\r\\"]|UniversalChar)* ["])
+        { BOOST_WAVE_RET(T_STRINGLIT); }
+
+
+    Pound PPSpace ( "include" | "include_next") PPSpace "<" (any\[\n\r>])+ ">" 
+        { BOOST_WAVE_RET(T_PP_HHEADER); }
+
+    Pound PPSpace ( "include" | "include_next") PPSpace "\"" (any\[\n\r"])+ "\"" 
+        { BOOST_WAVE_RET(T_PP_QHEADER); } 
+
+    Pound PPSpace ( "include" | "include_next") PPSpace
+        { BOOST_WAVE_RET(T_PP_INCLUDE); } 
+
+    Pound PPSpace "if"        { BOOST_WAVE_RET(T_PP_IF); }
+    Pound PPSpace "ifdef"     { BOOST_WAVE_RET(T_PP_IFDEF); }
+    Pound PPSpace "ifndef"    { BOOST_WAVE_RET(T_PP_IFNDEF); }
+    Pound PPSpace "else"      { BOOST_WAVE_RET(T_PP_ELSE); }
+    Pound PPSpace "elif"      { BOOST_WAVE_RET(T_PP_ELIF); }
+    Pound PPSpace "endif"     { BOOST_WAVE_RET(T_PP_ENDIF); }
+    Pound PPSpace "define"    { BOOST_WAVE_RET(T_PP_DEFINE); }
+    Pound PPSpace "undef"     { BOOST_WAVE_RET(T_PP_UNDEF); }
+    Pound PPSpace "line"      { BOOST_WAVE_RET(T_PP_LINE); }
+    Pound PPSpace "error"     { BOOST_WAVE_RET(T_PP_ERROR); }
+    Pound PPSpace "pragma"    { BOOST_WAVE_RET(T_PP_PRAGMA); }
+
+    Pound PPSpace "warning"   { BOOST_WAVE_RET(T_PP_WARNING); }
+
+    Pound PPSpace "region"    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
+    Pound PPSpace "endregion" { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+
+    [ \t\v\f]+
+        { BOOST_WAVE_RET(T_SPACE); }
+
+    Newline
+    {
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_NEWLINE);
+    }
+
+    "\000"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
             (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                 "invalid character '\\000' in input stream");
-        }
-        BOOST_WAVE_RET(T_EOF);
-    }
-
-    any        { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        }
+        BOOST_WAVE_RET(T_EOF);
+    }
+
+    any        { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
+
+    anyctrl
+    {
+        // 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);
-    }
-*/
-
-ccomment:
-/*!re2c
-    "*/"            { BOOST_WAVE_RET(T_CCOMMENT); }
-    
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
-        /*s->tok = cursor; */
-        s->line += count_backslash_newlines(s, cursor) +1;
-        cursor.column = 1;
-        goto ccomment;
-    }
-
-    any            { goto ccomment; }
-
-    "\000"
-    {
-        if(cursor == s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+    }
+*/
+
+ccomment:
+/*!re2c
+    "*/"            { BOOST_WAVE_RET(T_CCOMMENT); }
+    
+    Newline
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
+        /*s->tok = cursor; */
+        s->line += count_backslash_newlines(s, cursor) +1;
+        cursor.column = 1;
+        goto ccomment;
+    }
+
+    any            { goto ccomment; }
+
+    "\000"
+    {
+        if(cursor == s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
             (*s->error_proc)(s, lexing_exception::generic_lexing_warning, 
                 "Unterminated 'C' style comment");
-        }
-        else
-        {
-            --YYCURSOR;                   // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+        }
+        else
+        {
+            --YYCURSOR;                   // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
             (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                 "invalid character: '\\000' in input stream");
-        }
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        }
+    }
+
+    anyctrl
+    {
+        // 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);
-    }
-*/
-
-cppcomment:
-/*!re2c
-    Newline
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
-        /*s->tok = cursor; */
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    any            { goto cppcomment; }
-
-    "\000"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            --YYCURSOR;                     // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+    }
+*/
+
+cppcomment:
+/*!re2c
+    Newline
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
+        /*s->tok = cursor; */
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+
+    any            { goto cppcomment; }
+
+    "\000"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            --YYCURSOR;                     // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
             (*s->error_proc)(s, lexing_exception::generic_lexing_error,
                 "invalid character '\\000' in input stream");
-        }
-        
-        --YYCURSOR;                         // next call returns T_EOF
-        if (!s->single_line_only)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        }
+        
+        --YYCURSOR;                         // next call returns T_EOF
+        if (!s->single_line_only)
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
             (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
                 "Unterminated 'C++' style comment");
-        }
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-
-    anyctrl
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        }
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+
+    anyctrl
+    {
+        // 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);
-    }
-*/
-
-/* this subscanner is called whenever a pp_number has been started */
-pp_number:
-{
-    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
-    marker = uchar_wrapper(s->ptr);
-    limit = uchar_wrapper(s->lim);
-
-    if (s->detect_pp_numbers) {
-    /*!re2c
-        "."? Digit (Digit | NonDigit | ExponentStart | ".")*
-            { BOOST_WAVE_RET(T_PP_NUMBER); }
-    */
-    }
-    else {
-    /*!re2c
-        ((FractionalConstant ExponentPart?) | (Digit+ ExponentPart)) FloatingSuffix?
-            { BOOST_WAVE_RET(T_FLOATLIT); }
-            
-        Integer { goto integer_suffix; } 
-    */
-    }
-}
-
-/* this subscanner is called, whenever a Integer was recognized */
-integer_suffix:
-{
-    if (s->enable_ms_extensions) {
-    /*!re2c
-        LongIntegerSuffix | "i64"
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-    else {
-    /*!re2c
-        LongIntegerSuffix
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
-    }
-}
+    }
+*/
+
+/* this subscanner is called whenever a pp_number has been started */
+pp_number:
+{
+    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
+    marker = uchar_wrapper(s->ptr);
+    limit = uchar_wrapper(s->lim);
+
+    if (s->detect_pp_numbers) {
+    /*!re2c
+        "."? Digit (Digit | NonDigit | ExponentStart | ".")*
+            { BOOST_WAVE_RET(T_PP_NUMBER); }
+    */
+    }
+    else {
+    /*!re2c
+        ((FractionalConstant ExponentPart?) | (Digit+ ExponentPart)) FloatingSuffix?
+            { BOOST_WAVE_RET(T_FLOATLIT); }
+            
+        Integer { goto integer_suffix; } 
+    */
+    }
+}
+
+/* this subscanner is called, whenever a Integer was recognized */
+integer_suffix:
+{
+    if (s->enable_ms_extensions) {
+    /*!re2c
+        LongIntegerSuffix | "i64"
+            { BOOST_WAVE_RET(T_LONGINTLIT); }
+
+        IntegerSuffix?
+            { BOOST_WAVE_RET(T_INTLIT); }
+    */
+    }
+    else {
+    /*!re2c
+        LongIntegerSuffix
+            { BOOST_WAVE_RET(T_LONGINTLIT); }
+
+        IntegerSuffix?
+            { BOOST_WAVE_RET(T_INTLIT); }
+    */
+    }
+}
Modified: branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc
==============================================================================
--- branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc	(original)
+++ branches/CMake/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -1,7006 +1,7006 @@
-/* Generated by re2c 0.13.1 on Wed Nov 21 11:50:51 2007 */
-#line 1 "cpp.re"
-/*=============================================================================
-    Boost.Wave: A Standard compliant C++ preprocessor library
-
-    Copyright (c) 2001 Daniel C. Nuffer
-    Copyright (c) 2001-2008 Hartmut Kaiser. 
-    Distributed under the Boost Software License, Version 1.0. (See accompanying 
-    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-    This is a lexer conforming to the Standard with a few exceptions.
-    So it does allow the '$' to be part of identifiers. If you need strict 
-    Standards conforming behaviour, please include the lexer definition 
-    provided in the file strict_cpp.re.
-
-    TODO: 
-        handle errors better.
-=============================================================================*/
-
-#line 40 "cpp.re"
-
-
-
-#line 25 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        /* table 1 .. 8: 0 */
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,  58,  32,  58,  58,  64,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-         58,  58,  50,  58,  62,  58,  58,  56, 
-         58,  58, 154,  58,  58,  58,  58,  58, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  58,  58,  58,  58,  42,  56, 
-         58,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  58,  57,  58,  58,  62, 
-         58,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-        /* table 9 .. 12: 256 */
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,  48,   0,  48,  48,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-         48,  32,   0,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         96,  96,  96,  96,  96,  96,  96,  96, 
-         96,  96,  32,  32,  32,  32,  32, 128, 
-         32,  96,  96,  96,  96,  96,  96,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,   0,  32,  32,  32, 
-         32,  96,  96,  96,  96,  96,  96,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-    };
-
-    if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
-    yych = *YYCURSOR;
-    switch(yych) {
-    case 0x00:    goto yy88;
-    case 0x01:
-    case 0x02:
-    case 0x03:
-    case 0x04:
-    case 0x05:
-    case 0x06:
-    case 0x07:
-    case 0x08:
-    case 0x0E:
-    case 0x0F:
-    case 0x10:
-    case 0x11:
-    case 0x12:
-    case 0x13:
-    case 0x14:
-    case 0x15:
-    case 0x16:
-    case 0x17:
-    case 0x18:
-    case 0x19:
-    case 0x1A:
-    case 0x1B:
-    case 0x1C:
-    case 0x1D:
-    case 0x1E:
-    case 0x1F:    goto yy91;
-    case 0x09:
-    case 0x0B:
-    case 0x0C:    goto yy82;
-    case 0x0A:    goto yy85;
-    case 0x0D:    goto yy87;
-    case ' ':    goto yy84;
-    case '!':    goto yy68;
-    case '"':    goto yy81;
-    case '#':    goto yy45;
-    case '$':
-    case 'A':
-    case 'B':
-    case 'C':
-    case 'D':
-    case 'E':
-    case 'F':
-    case 'G':
-    case 'H':
-    case 'I':
-    case 'J':
-    case 'K':
-    case 'M':
-    case 'N':
-    case 'O':
-    case 'P':
-    case 'Q':
-    case 'R':
-    case 'S':
-    case 'T':
-    case 'U':
-    case 'V':
-    case 'W':
-    case 'X':
-    case 'Y':
-    case 'Z':
-    case 'h':
-    case 'j':
-    case 'k':
-    case 'q':
-    case 'y':
-    case 'z':    goto yy76;
-    case '%':    goto yy37;
-    case '&':    goto yy62;
-    case '\'':    goto yy80;
-    case '(':    goto yy47;
-    case ')':    goto yy49;
-    case '*':    goto yy57;
-    case '+':    goto yy53;
-    case ',':    goto yy74;
-    case '-':    goto yy55;
-    case '.':    goto yy4;
-    case '/':    goto yy2;
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':    goto yy6;
-    case ':':    goto yy43;
-    case ';':    goto yy51;
-    case '<':    goto yy33;
-    case '=':    goto yy70;
-    case '>':    goto yy72;
-    case '?':    goto yy31;
-    case 'L':    goto yy77;
-    case '[':    goto yy39;
-    case '\\':    goto yy78;
-    case ']':    goto yy41;
-    case '^':    goto yy59;
-    case '_':    goto yy28;
-    case 'a':    goto yy8;
-    case 'b':    goto yy10;
-    case 'c':    goto yy11;
-    case 'd':    goto yy12;
-    case 'e':    goto yy13;
-    case 'f':    goto yy14;
-    case 'g':    goto yy15;
-    case 'i':    goto yy16;
-    case 'l':    goto yy17;
-    case 'm':    goto yy18;
-    case 'n':    goto yy19;
-    case 'o':    goto yy20;
-    case 'p':    goto yy21;
-    case 'r':    goto yy22;
-    case 's':    goto yy23;
-    case 't':    goto yy24;
-    case 'u':    goto yy25;
-    case 'v':    goto yy26;
-    case 'w':    goto yy27;
-    case 'x':    goto yy61;
-    case '{':    goto yy29;
-    case '|':    goto yy64;
-    case '}':    goto yy35;
-    case '~':    goto yy66;
-    default:    goto yy90;
-    }
-yy2:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '.') {
-        if(yych == '*') goto yy922;
-    } else {
-        if(yych <= '/') goto yy920;
-        if(yych == '=') goto yy918;
-    }
-#line 178 "cpp.re"
-    { BOOST_WAVE_RET(T_DIVIDE); }
-#line 238 "cpp_re.inc"
-yy4:
-    yyaccept = 0;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '-') {
-        if(yych == '*') goto yy912;
-    } else {
-        if(yych <= '.') goto yy914;
-        if(yych <= '/') goto yy5;
-        if(yych <= '9') goto yy915;
-    }
-yy5:
-#line 164 "cpp.re"
-    { BOOST_WAVE_RET(T_DOT); }
-#line 252 "cpp_re.inc"
-yy6:
-    ++YYCURSOR;
-yy7:
-#line 45 "cpp.re"
-    { goto pp_number; }
-#line 258 "cpp_re.inc"
-yy8:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') {
-        if(yych == 'n') goto yy898;
-        goto yy195;
-    } else {
-        if(yych <= 's') goto yy899;
-        if(yych == 'u') goto yy900;
-        goto yy195;
-    }
-yy9:
-#line 243 "cpp.re"
-    { BOOST_WAVE_RET(T_IDENTIFIER); }
-#line 273 "cpp_re.inc"
-yy10:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'n') {
-        if(yych == 'i') goto yy880;
-        goto yy195;
-    } else {
-        if(yych <= 'o') goto yy881;
-        if(yych == 'r') goto yy882;
-        goto yy195;
-    }
-yy11:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy842;
-    case 'h':    goto yy843;
-    case 'l':    goto yy844;
-    case 'o':    goto yy845;
-    default:    goto yy195;
-    }
-yy12:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'n') {
-        if(yych == 'e') goto yy811;
-        goto yy195;
-    } else {
-        if(yych <= 'o') goto yy812;
-        if(yych == 'y') goto yy814;
-        goto yy195;
-    }
-yy13:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'm') {
-        if(yych == 'l') goto yy786;
-        goto yy195;
-    } else {
-        if(yych <= 'n') goto yy787;
-        if(yych == 'x') goto yy788;
-        goto yy195;
-    }
-yy14:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy767;
-    case 'l':    goto yy768;
-    case 'o':    goto yy769;
-    case 'r':    goto yy770;
-    default:    goto yy195;
-    }
-yy15:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy763;
-    goto yy195;
-yy16:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'l') {
-        if(yych == 'f') goto yy747;
-        goto yy195;
-    } else {
-        if(yych <= 'm') goto yy749;
-        if(yych <= 'n') goto yy750;
-        goto yy195;
-    }
-yy17:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy743;
-    goto yy195;
-yy18:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy736;
-    goto yy195;
-yy19:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'd') {
-        if(yych == 'a') goto yy717;
-        goto yy195;
-    } else {
-        if(yych <= 'e') goto yy718;
-        if(yych == 'o') goto yy719;
-        goto yy195;
-    }
-yy20:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy703;
-    if(yych == 'r') goto yy704;
-    goto yy195;
-yy21:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy682;
-    if(yych == 'u') goto yy683;
-    goto yy195;
-yy22:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy654;
-    goto yy195;
-yy23:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 's') {
-        if(yych <= 'g') goto yy195;
-        if(yych <= 'h') goto yy615;
-        if(yych <= 'i') goto yy616;
-        goto yy195;
-    } else {
-        if(yych <= 't') goto yy617;
-        if(yych == 'w') goto yy618;
-        goto yy195;
-    }
-yy24:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych == 'e') goto yy578;
-        if(yych <= 'g') goto yy195;
-        goto yy579;
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'q') goto yy195;
-            goto yy580;
-        } else {
-            if(yych == 'y') goto yy581;
-            goto yy195;
-        }
-    }
-yy25:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy561;
-    if(yych == 's') goto yy562;
-    goto yy195;
-yy26:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy543;
-    if(yych == 'o') goto yy544;
-    goto yy195;
-yy27:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'c') goto yy531;
-    if(yych == 'h') goto yy532;
-    goto yy195;
-yy28:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case '_':    goto yy442;
-    case 'a':    goto yy443;
-    case 'b':    goto yy444;
-    case 'c':    goto yy445;
-    case 'd':    goto yy446;
-    case 'f':    goto yy447;
-    case 'i':    goto yy448;
-    case 's':    goto yy449;
-    default:    goto yy195;
-    }
-yy29:
-    ++YYCURSOR;
-#line 128 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE); }
-#line 446 "cpp_re.inc"
-yy31:
-    yyaccept = 2;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '?') goto yy407;
-yy32:
-#line 153 "cpp.re"
-    { BOOST_WAVE_RET(T_QUESTION_MARK); }
-#line 454 "cpp_re.inc"
-yy33:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= ':') {
-        if(yych == '%') goto yy403;
-        if(yych >= ':') goto yy401;
-    } else {
-        if(yych <= ';') goto yy34;
-        if(yych <= '<') goto yy399;
-        if(yych <= '=') goto yy397;
-    }
-yy34:
-#line 194 "cpp.re"
-    { BOOST_WAVE_RET(T_LESS); }
-#line 468 "cpp_re.inc"
-yy35:
-    ++YYCURSOR;
-#line 131 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE); }
-#line 473 "cpp_re.inc"
-yy37:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') {
-        if(yych == ':') goto yy388;
-    } else {
-        if(yych <= '=') goto yy390;
-        if(yych <= '>') goto yy392;
-    }
-#line 179 "cpp.re"
-    { BOOST_WAVE_RET(T_PERCENT); }
-#line 484 "cpp_re.inc"
-yy39:
-    ++YYCURSOR;
-#line 134 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET); }
-#line 489 "cpp_re.inc"
-yy41:
-    ++YYCURSOR;
-#line 137 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-#line 494 "cpp_re.inc"
-yy43:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == ':') goto yy384;
-    if(yych == '>') goto yy386;
-#line 151 "cpp.re"
-    { BOOST_WAVE_RET(T_COLON); }
-#line 501 "cpp_re.inc"
-yy45:
-    yyaccept = 3;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'c') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '#') goto yy272;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych == '?') goto yy271;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'i') {
-                if(yych <= 'e') goto yy261;
-                if(yych >= 'i') goto yy261;
-            } else {
-                if(yych == 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy46;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy46:
-#line 140 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND); }
-#line 542 "cpp_re.inc"
-yy47:
-    ++YYCURSOR;
-#line 148 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTPAREN); }
-#line 547 "cpp_re.inc"
-yy49:
-    ++YYCURSOR;
-#line 149 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTPAREN); }
-#line 552 "cpp_re.inc"
-yy51:
-    ++YYCURSOR;
-#line 150 "cpp.re"
-    { BOOST_WAVE_RET(T_SEMICOLON); }
-#line 557 "cpp_re.inc"
-yy53:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '+') goto yy256;
-    if(yych == '=') goto yy258;
-#line 175 "cpp.re"
-    { BOOST_WAVE_RET(T_PLUS); }
-#line 564 "cpp_re.inc"
-yy55:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') {
-        if(yych == '-') goto yy250;
-    } else {
-        if(yych <= '=') goto yy252;
-        if(yych <= '>') goto yy248;
-    }
-#line 176 "cpp.re"
-    { BOOST_WAVE_RET(T_MINUS); }
-#line 575 "cpp_re.inc"
-yy57:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy246;
-#line 177 "cpp.re"
-    { BOOST_WAVE_RET(T_STAR); }
-#line 581 "cpp_re.inc"
-yy59:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy244;
-#line 180 "cpp.re"
-    { BOOST_WAVE_RET(T_XOR); }
-#line 587 "cpp_re.inc"
-yy61:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy237;
-    goto yy195;
-yy62:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '&') goto yy233;
-    if(yych == '=') goto yy235;
-#line 183 "cpp.re"
-    { BOOST_WAVE_RET(T_AND); }
-#line 599 "cpp_re.inc"
-yy64:
-    yyaccept = 4;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '>') {
-        if(yych == '=') goto yy228;
-    } else {
-        if(yych <= '?') goto yy225;
-        if(yych == '|') goto yy226;
-    }
-yy65:
-#line 185 "cpp.re"
-    { BOOST_WAVE_RET(T_OR); }
-#line 612 "cpp_re.inc"
-yy66:
-    ++YYCURSOR;
-#line 188 "cpp.re"
-    { BOOST_WAVE_RET(T_COMPL); }
-#line 617 "cpp_re.inc"
-yy68:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy223;
-#line 191 "cpp.re"
-    { BOOST_WAVE_RET(T_NOT); }
-#line 623 "cpp_re.inc"
-yy70:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy221;
-#line 193 "cpp.re"
-    { BOOST_WAVE_RET(T_ASSIGN); }
-#line 629 "cpp_re.inc"
-yy72:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') goto yy73;
-    if(yych <= '=') goto yy215;
-    if(yych <= '>') goto yy217;
-yy73:
-#line 195 "cpp.re"
-    { BOOST_WAVE_RET(T_GREATER); }
-#line 638 "cpp_re.inc"
-yy74:
-    ++YYCURSOR;
-#line 227 "cpp.re"
-    { BOOST_WAVE_RET(T_COMMA); }
-#line 643 "cpp_re.inc"
-yy76:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    goto yy195;
-yy77:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych <= '\'') {
-        if(yych == '"') goto yy96;
-        if(yych <= '&') goto yy9;
-        goto yy214;
-    } else {
-        if(yych <= '?') {
-            if(yych <= '>') goto yy9;
-            goto yy197;
-        } else {
-            if(yych == '\\') goto yy196;
-            goto yy9;
-        }
-    }
-yy78:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'U') goto yy186;
-    if(yych == 'u') goto yy185;
-yy79:
-#line 299 "cpp.re"
-    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-#line 675 "cpp_re.inc"
-yy80:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 0x0C) {
-        if(yych == 0x09) goto yy142;
-        if(yych <= 0x0A) goto yy79;
-        goto yy142;
-    } else {
-        if(yych <= 0x1F) goto yy79;
-        if(yych == '\'') goto yy79;
-        goto yy142;
-    }
-yy81:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 0x0A) {
-        if(yych == 0x09) goto yy97;
-        goto yy79;
-    } else {
-        if(yych <= 0x0C) goto yy97;
-        if(yych <= 0x1F) goto yy79;
-        goto yy97;
-    }
-yy82:
-    ++YYCURSOR;
-    yych = *YYCURSOR;
-    goto yy95;
-yy83:
-#line 279 "cpp.re"
-    { BOOST_WAVE_RET(T_SPACE); }
-#line 706 "cpp_re.inc"
-yy84:
-    yych = *++YYCURSOR;
-    goto yy95;
-yy85:
-    ++YYCURSOR;
-yy86:
-#line 282 "cpp.re"
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
-#line 719 "cpp_re.inc"
-yy87:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy93;
-    goto yy86;
-yy88:
-    ++YYCURSOR;
-#line 289 "cpp.re"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        BOOST_WAVE_RET(T_EOF);
-    }
-#line 736 "cpp_re.inc"
-yy90:
-    yych = *++YYCURSOR;
-    goto yy79;
-yy91:
-    ++YYCURSOR;
-#line 302 "cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 749 "cpp_re.inc"
-yy93:
-    yych = *++YYCURSOR;
-    goto yy86;
-yy94:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy95:
-    if(yybm[256+yych] & 16) {
-        goto yy94;
-    }
-    goto yy83;
-yy96:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy97:
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy98:
-    YYCURSOR = YYMARKER;
-    if(yyaccept <= 51) {
-        if(yyaccept <= 25) {
-            if(yyaccept <= 12) {
-                if(yyaccept <= 6) {
-                    if(yyaccept <= 3) {
-                        if(yyaccept <= 1) {
-                            if(yyaccept <= 0) {
-                                goto yy5;
-                            } else {
-                                goto yy9;
-                            }
-                        } else {
-                            if(yyaccept <= 2) {
-                                goto yy32;
-                            } else {
-                                goto yy46;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 5) {
-                            if(yyaccept <= 4) {
-                                goto yy65;
-                            } else {
-                                goto yy79;
-                            }
-                        } else {
-                            goto yy102;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 9) {
-                        if(yyaccept <= 8) {
-                            if(yyaccept <= 7) {
-                                goto yy152;
-                            } else {
-                                goto yy239;
-                            }
-                        } else {
-                            goto yy243;
-                        }
-                    } else {
-                        if(yyaccept <= 11) {
-                            if(yyaccept <= 10) {
-                                goto yy279;
-                            } else {
-                                goto yy294;
-                            }
-                        } else {
-                            goto yy389;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 19) {
-                    if(yyaccept <= 16) {
-                        if(yyaccept <= 14) {
-                            if(yyaccept <= 13) {
-                                goto yy417;
-                            } else {
-                                goto yy421;
-                            }
-                        } else {
-                            if(yyaccept <= 15) {
-                                goto yy425;
-                            } else {
-                                goto yy456;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 18) {
-                            if(yyaccept <= 17) {
-                                goto yy462;
-                            } else {
-                                goto yy470;
-                            }
-                        } else {
-                            goto yy478;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 22) {
-                        if(yyaccept <= 21) {
-                            if(yyaccept <= 20) {
-                                goto yy483;
-                            } else {
-                                goto yy488;
-                            }
-                        } else {
-                            goto yy491;
-                        }
-                    } else {
-                        if(yyaccept <= 24) {
-                            if(yyaccept <= 23) {
-                                goto yy501;
-                            } else {
-                                goto yy507;
-                            }
-                        } else {
-                            goto yy510;
-                        }
-                    }
-                }
-            }
-        } else {
-            if(yyaccept <= 38) {
-                if(yyaccept <= 32) {
-                    if(yyaccept <= 29) {
-                        if(yyaccept <= 27) {
-                            if(yyaccept <= 26) {
-                                goto yy517;
-                            } else {
-                                goto yy524;
-                            }
-                        } else {
-                            if(yyaccept <= 28) {
-                                goto yy526;
-                            } else {
-                                goto yy528;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 31) {
-                            if(yyaccept <= 30) {
-                                goto yy530;
-                            } else {
-                                goto yy536;
-                            }
-                        } else {
-                            goto yy542;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 35) {
-                        if(yyaccept <= 34) {
-                            if(yyaccept <= 33) {
-                                goto yy552;
-                            } else {
-                                goto yy554;
-                            }
-                        } else {
-                            goto yy560;
-                        }
-                    } else {
-                        if(yyaccept <= 37) {
-                            if(yyaccept <= 36) {
-                                goto yy566;
-                            } else {
-                                goto yy574;
-                            }
-                        } else {
-                            goto yy577;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 45) {
-                    if(yyaccept <= 42) {
-                        if(yyaccept <= 40) {
-                            if(yyaccept <= 39) {
-                                goto yy590;
-                            } else {
-                                goto yy592;
-                            }
-                        } else {
-                            if(yyaccept <= 41) {
-                                goto yy595;
-                            } else {
-                                goto yy598;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 44) {
-                            if(yyaccept <= 43) {
-                                goto yy600;
-                            } else {
-                                goto yy605;
-                            }
-                        } else {
-                            goto yy607;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 48) {
-                        if(yyaccept <= 47) {
-                            if(yyaccept <= 46) {
-                                goto yy614;
-                            } else {
-                                goto yy623;
-                            }
-                        } else {
-                            goto yy629;
-                        }
-                    } else {
-                        if(yyaccept <= 50) {
-                            if(yyaccept <= 49) {
-                                goto yy633;
-                            } else {
-                                goto yy639;
-                            }
-                        } else {
-                            goto yy645;
-                        }
-                    }
-                }
-            }
-        }
-    } else {
-        if(yyaccept <= 77) {
-            if(yyaccept <= 64) {
-                if(yyaccept <= 58) {
-                    if(yyaccept <= 55) {
-                        if(yyaccept <= 53) {
-                            if(yyaccept <= 52) {
-                                goto yy649;
-                            } else {
-                                goto yy653;
-                            }
-                        } else {
-                            if(yyaccept <= 54) {
-                                goto yy661;
-                            } else {
-                                goto yy675;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 57) {
-                            if(yyaccept <= 56) {
-                                goto yy681;
-                            } else {
-                                goto yy688;
-                            }
-                        } else {
-                            goto yy697;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 61) {
-                        if(yyaccept <= 60) {
-                            if(yyaccept <= 59) {
-                                goto yy702;
-                            } else {
-                                goto yy705;
-                            }
-                        } else {
-                            goto yy709;
-                        }
-                    } else {
-                        if(yyaccept <= 63) {
-                            if(yyaccept <= 62) {
-                                goto yy716;
-                            } else {
-                                goto yy721;
-                            }
-                        } else {
-                            goto yy725;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 71) {
-                    if(yyaccept <= 68) {
-                        if(yyaccept <= 66) {
-                            if(yyaccept <= 65) {
-                                goto yy727;
-                            } else {
-                                goto yy735;
-                            }
-                        } else {
-                            if(yyaccept <= 67) {
-                                goto yy742;
-                            } else {
-                                goto yy746;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 70) {
-                            if(yyaccept <= 69) {
-                                goto yy748;
-                            } else {
-                                goto yy753;
-                            }
-                        } else {
-                            goto yy757;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 74) {
-                        if(yyaccept <= 73) {
-                            if(yyaccept <= 72) {
-                                goto yy762;
-                            } else {
-                                goto yy766;
-                            }
-                        } else {
-                            goto yy775;
-                        }
-                    } else {
-                        if(yyaccept <= 76) {
-                            if(yyaccept <= 75) {
-                                goto yy777;
-                            } else {
-                                goto yy781;
-                            }
-                        } else {
-                            goto yy785;
-                        }
-                    }
-                }
-            }
-        } else {
-            if(yyaccept <= 90) {
-                if(yyaccept <= 84) {
-                    if(yyaccept <= 81) {
-                        if(yyaccept <= 79) {
-                            if(yyaccept <= 78) {
-                                goto yy794;
-                            } else {
-                                goto yy799;
-                            }
-                        } else {
-                            if(yyaccept <= 80) {
-                                goto yy804;
-                            } else {
-                                goto yy807;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 83) {
-                            if(yyaccept <= 82) {
-                                goto yy810;
-                            } else {
-                                goto yy813;
-                            }
-                        } else {
-                            goto yy825;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 87) {
-                        if(yyaccept <= 86) {
-                            if(yyaccept <= 85) {
-                                goto yy830;
-                            } else {
-                                goto yy836;
-                            }
-                        } else {
-                            goto yy841;
-                        }
-                    } else {
-                        if(yyaccept <= 89) {
-                            if(yyaccept <= 88) {
-                                goto yy850;
-                            } else {
-                                goto yy857;
-                            }
-                        } else {
-                            goto yy859;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 97) {
-                    if(yyaccept <= 94) {
-                        if(yyaccept <= 92) {
-                            if(yyaccept <= 91) {
-                                goto yy865;
-                            } else {
-                                goto yy869;
-                            }
-                        } else {
-                            if(yyaccept <= 93) {
-                                goto yy872;
-                            } else {
-                                goto yy877;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 96) {
-                            if(yyaccept <= 95) {
-                                goto yy879;
-                            } else {
-                                goto yy886;
-                            }
-                        } else {
-                            goto yy889;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 100) {
-                        if(yyaccept <= 99) {
-                            if(yyaccept <= 98) {
-                                goto yy894;
-                            } else {
-                                goto yy897;
-                            }
-                        } else {
-                            goto yy903;
-                        }
-                    } else {
-                        if(yyaccept <= 102) {
-                            if(yyaccept <= 101) {
-                                goto yy905;
-                            } else {
-                                goto yy907;
-                            }
-                        } else {
-                            goto yy911;
-                        }
-                    }
-                }
-            }
-        }
-    }
-yy99:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy112;
-yy100:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '`') {
-        if(yych <= '7') {
-            if(yych <= '&') {
-                if(yych == '"') goto yy96;
-                goto yy98;
-            } else {
-                if(yych <= '\'') goto yy96;
-                if(yych <= '/') goto yy98;
-                goto yy107;
-            }
-        } else {
-            if(yych <= 'T') {
-                if(yych == '?') goto yy105;
-                goto yy98;
-            } else {
-                if(yych <= 'U') goto yy104;
-                if(yych == '\\') goto yy96;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'f') {
-                if(yych <= 'b') goto yy96;
-                if(yych <= 'e') goto yy98;
-                goto yy96;
-            } else {
-                if(yych == 'n') goto yy96;
-                if(yych <= 'q') goto yy98;
-                goto yy96;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 's') goto yy98;
-                if(yych <= 't') goto yy96;
-                goto yy103;
-            } else {
-                if(yych <= 'v') goto yy96;
-                if(yych == 'x') goto yy106;
-                goto yy98;
-            }
-        }
-    }
-yy101:
-    ++YYCURSOR;
-yy102:
-#line 249 "cpp.re"
-    { BOOST_WAVE_RET(T_STRINGLIT); }
-#line 1251 "cpp_re.inc"
-yy103:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy138;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy138;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy138;
-        goto yy98;
-    }
-yy104:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy131;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy131;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy131;
-        goto yy98;
-    }
-yy105:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy111;
-    goto yy100;
-yy106:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 64) {
-        goto yy109;
-    }
-    goto yy98;
-yy107:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '"') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '!') goto yy96;
-            goto yy101;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy96;
-            if(yych >= '8') goto yy96;
-        } else {
-            if(yych <= '?') goto yy99;
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy109:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 64) {
-        goto yy109;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '?') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '>') goto yy96;
-            goto yy99;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy111:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych >= '\\') goto yy100;
-yy112:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 128) {
-        goto yy112;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '/') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '.') goto yy96;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy114:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 1) {
-        goto yy114;
-    }
-    if(yych <= '7') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy118;
-                if(yych <= '/') goto yy96;
-                goto yy107;
-            }
-        }
-    } else {
-        if(yych <= 'U') {
-            if(yych == '?') goto yy119;
-            if(yych <= 'T') goto yy96;
-            goto yy117;
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 't') goto yy96;
-            } else {
-                if(yych == 'x') goto yy109;
-                goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-                goto yy128;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-            goto yy128;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych <= 'f') goto yy128;
-                goto yy96;
-            }
-        }
-    }
-yy117:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-                goto yy121;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-            goto yy121;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych <= 'f') goto yy121;
-                goto yy96;
-            }
-        }
-    }
-yy118:
-    yyaccept = 6;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy102;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy119:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych >= '\\') goto yy100;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 128) {
-        goto yy112;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '/') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '.') goto yy96;
-            goto yy114;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy121:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy128:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy131:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy132;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy132:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy133;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy133:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy134;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy134:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy135;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy135:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy136;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy136:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy137;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy137:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy96;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy96;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy96;
-        goto yy98;
-    }
-yy138:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy139;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy139:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy140;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy140:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy96;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy96;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy96;
-        goto yy98;
-    }
-yy141:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy142:
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-yy143:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy156;
-yy144:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '`') {
-        if(yych <= '7') {
-            if(yych <= '&') {
-                if(yych == '"') goto yy141;
-                goto yy98;
-            } else {
-                if(yych <= '\'') goto yy141;
-                if(yych <= '/') goto yy98;
-                goto yy149;
-            }
-        } else {
-            if(yych <= 'T') {
-                if(yych == '?') goto yy147;
-                goto yy98;
-            } else {
-                if(yych <= 'U') goto yy146;
-                if(yych == '\\') goto yy141;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'f') {
-                if(yych <= 'b') goto yy141;
-                if(yych <= 'e') goto yy98;
-                goto yy141;
-            } else {
-                if(yych == 'n') goto yy141;
-                if(yych <= 'q') goto yy98;
-                goto yy141;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 's') goto yy98;
-                if(yych <= 't') goto yy141;
-            } else {
-                if(yych <= 'v') goto yy141;
-                if(yych == 'x') goto yy148;
-                goto yy98;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy182;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy182;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy182;
-        goto yy98;
-    }
-yy146:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy175;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy175;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy175;
-        goto yy98;
-    }
-yy147:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy155;
-    goto yy144;
-yy148:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy153;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy153;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy153;
-        goto yy98;
-    }
-yy149:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy141;
-            if(yych >= '8') goto yy141;
-        } else {
-            if(yych <= '?') goto yy143;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy151:
-    ++YYCURSOR;
-yy152:
-#line 246 "cpp.re"
-    { BOOST_WAVE_RET(T_CHARLIT); }
-#line 2098 "cpp_re.inc"
-yy153:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy153;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy153;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy153;
-                goto yy141;
-            }
-        }
-    }
-yy155:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-yy156:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych != '/') goto yy141;
-        } else {
-            if(yych <= '?') goto yy156;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-yy158:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '>') {
-        if(yych <= 0x1F) {
-            if(yych <= 0x09) {
-                if(yych <= 0x08) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= 0x0A) goto yy98;
-                if(yych <= 0x0C) goto yy141;
-                goto yy98;
-            }
-        } else {
-            if(yych <= '\'') {
-                if(yych <= '&') goto yy141;
-                goto yy162;
-            } else {
-                if(yych <= '/') goto yy141;
-                if(yych <= '7') goto yy149;
-                goto yy141;
-            }
-        }
-    } else {
-        if(yych <= '\\') {
-            if(yych <= 'T') {
-                if(yych <= '?') goto yy163;
-                goto yy141;
-            } else {
-                if(yych <= 'U') goto yy161;
-                if(yych <= '[') goto yy141;
-                goto yy158;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 't') goto yy141;
-            } else {
-                if(yych == 'x') goto yy153;
-                goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy172;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy172;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy172;
-                goto yy141;
-            }
-        }
-    }
-yy161:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy165;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy165;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy165;
-                goto yy141;
-            }
-        }
-    }
-yy162:
-    yyaccept = 7;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy152;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy163:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych == '/') goto yy158;
-            goto yy141;
-        } else {
-            if(yych <= '?') goto yy156;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-yy165:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy172:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy175:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy176;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy176:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy177;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy177:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy178;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy178:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy179;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy179:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy180;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy180:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy181;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy181:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy141;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy141;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy141;
-        goto yy98;
-    }
-yy182:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy183;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy183:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy184;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy184:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy141;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy141;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy141;
-        goto yy98;
-    }
-yy185:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy211;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy211;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy211;
-        goto yy98;
-    }
-yy186:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy187;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy187:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy188;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy188:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy189;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy189:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy190;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy190:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy191;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy191:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy192;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy192:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy193;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy193:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy194:
-    yyaccept = 1;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy195:
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych != '\\') goto yy9;
-yy196:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == 'U') goto yy200;
-    if(yych == 'u') goto yy199;
-    goto yy98;
-yy197:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych != '?') goto yy98;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '/') goto yy196;
-    goto yy98;
-yy199:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy208;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy208;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy208;
-        goto yy98;
-    }
-yy200:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy201;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy201:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy202;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy202:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy203;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy203:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy204;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy204:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy205;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy205:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy206;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy206:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy207;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy207:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy208:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy209;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy209:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy210;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy210:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy211:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy212;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy212:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy213;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy213:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy214:
-    yych = *++YYCURSOR;
-    if(yych == '\'') goto yy98;
-    goto yy142;
-yy215:
-    ++YYCURSOR;
-#line 217 "cpp.re"
-    { BOOST_WAVE_RET(T_GREATEREQUAL); }
-#line 3028 "cpp_re.inc"
-yy217:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy219;
-#line 210 "cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-#line 3034 "cpp_re.inc"
-yy219:
-    ++YYCURSOR;
-#line 211 "cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-#line 3039 "cpp_re.inc"
-yy221:
-    ++YYCURSOR;
-#line 213 "cpp.re"
-    { BOOST_WAVE_RET(T_EQUAL); }
-#line 3044 "cpp_re.inc"
-yy223:
-    ++YYCURSOR;
-#line 214 "cpp.re"
-    { BOOST_WAVE_RET(T_NOTEQUAL); }
-#line 3049 "cpp_re.inc"
-yy225:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy230;
-    goto yy98;
-yy226:
-    ++YYCURSOR;
-#line 220 "cpp.re"
-    { BOOST_WAVE_RET(T_OROR); }
-#line 3058 "cpp_re.inc"
-yy228:
-    ++YYCURSOR;
-#line 206 "cpp.re"
-    { BOOST_WAVE_RET(T_ORASSIGN); }
-#line 3063 "cpp_re.inc"
-yy230:
-    yych = *++YYCURSOR;
-    if(yych != '!') goto yy98;
-    ++YYCURSOR;
-#line 222 "cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3070 "cpp_re.inc"
-yy233:
-    ++YYCURSOR;
-#line 218 "cpp.re"
-    { BOOST_WAVE_RET(T_ANDAND); }
-#line 3075 "cpp_re.inc"
-yy235:
-    ++YYCURSOR;
-#line 204 "cpp.re"
-    { BOOST_WAVE_RET(T_ANDASSIGN); }
-#line 3080 "cpp_re.inc"
-yy237:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 8;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy240;
-            if(yych <= '`') goto yy239;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy239:
-#line 182 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-#line 3107 "cpp_re.inc"
-yy240:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 9;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy243:
-#line 202 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-#line 3125 "cpp_re.inc"
-yy244:
-    ++YYCURSOR;
-#line 201 "cpp.re"
-    { BOOST_WAVE_RET(T_XORASSIGN); }
-#line 3130 "cpp_re.inc"
-yy246:
-    ++YYCURSOR;
-#line 198 "cpp.re"
-    { BOOST_WAVE_RET(T_STARASSIGN); }
-#line 3135 "cpp_re.inc"
-yy248:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '*') goto yy254;
-#line 238 "cpp.re"
-    { BOOST_WAVE_RET(T_ARROW); }
-#line 3141 "cpp_re.inc"
-yy250:
-    ++YYCURSOR;
-#line 226 "cpp.re"
-    { BOOST_WAVE_RET(T_MINUSMINUS); }
-#line 3146 "cpp_re.inc"
-yy252:
-    ++YYCURSOR;
-#line 197 "cpp.re"
-    { BOOST_WAVE_RET(T_MINUSASSIGN); }
-#line 3151 "cpp_re.inc"
-yy254:
-    ++YYCURSOR;
-#line 229 "cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
-            }
-            else {
-                BOOST_WAVE_RET(T_ARROWSTAR); 
-            }
-        }
-#line 3164 "cpp_re.inc"
-yy256:
-    ++YYCURSOR;
-#line 225 "cpp.re"
-    { BOOST_WAVE_RET(T_PLUSPLUS); }
-#line 3169 "cpp_re.inc"
-yy258:
-    ++YYCURSOR;
-#line 196 "cpp.re"
-    { BOOST_WAVE_RET(T_PLUSASSIGN); }
-#line 3174 "cpp_re.inc"
-yy260:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
-    yych = *YYCURSOR;
-yy261:
-    if(yych <= 'h') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy260;
-                goto yy98;
-            } else {
-                if(yych <= 0x0C) goto yy260;
-                if(yych <= 0x1F) goto yy98;
-                goto yy260;
-            }
-        } else {
-            if(yych <= 'c') {
-                if(yych != '/') goto yy98;
-            } else {
-                if(yych <= 'd') goto yy269;
-                if(yych <= 'e') goto yy263;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'q') {
-            if(yych <= 'l') {
-                if(yych <= 'i') goto yy270;
-                if(yych <= 'k') goto yy98;
-                goto yy267;
-            } else {
-                if(yych == 'p') goto yy266;
-                goto yy98;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 'r') goto yy264;
-                if(yych <= 't') goto yy98;
-                goto yy268;
-            } else {
-                if(yych == 'w') goto yy265;
-                goto yy98;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '*') goto yy377;
-    goto yy98;
-yy263:
-    yych = *++YYCURSOR;
-    if(yych <= 'm') {
-        if(yych == 'l') goto yy353;
-        goto yy98;
-    } else {
-        if(yych <= 'n') goto yy354;
-        if(yych == 'r') goto yy355;
-        goto yy98;
-    }
-yy264:
-    yych = *++YYCURSOR;
-    if(yych == 'e') goto yy347;
-    goto yy98;
-yy265:
-    yych = *++YYCURSOR;
-    if(yych == 'a') goto yy340;
-    goto yy98;
-yy266:
-    yych = *++YYCURSOR;
-    if(yych == 'r') goto yy334;
-    goto yy98;
-yy267:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy330;
-    goto yy98;
-yy268:
-    yych = *++YYCURSOR;
-    if(yych == 'n') goto yy325;
-    goto yy98;
-yy269:
-    yych = *++YYCURSOR;
-    if(yych == 'e') goto yy319;
-    goto yy98;
-yy270:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy278;
-    if(yych == 'n') goto yy277;
-    goto yy98;
-yy271:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy274;
-    goto yy98;
-yy272:
-    ++YYCURSOR;
-#line 143 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND); }
-#line 3272 "cpp_re.inc"
-yy274:
-    yych = *++YYCURSOR;
-    if(yych != '=') goto yy98;
-    ++YYCURSOR;
-#line 144 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3279 "cpp_re.inc"
-yy277:
-    yych = *++YYCURSOR;
-    if(yych == 'c') goto yy289;
-    goto yy98;
-yy278:
-    yyaccept = 10;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy281;
-    if(yych == 'n') goto yy280;
-yy279:
-#line 261 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_IF); }
-#line 3292 "cpp_re.inc"
-yy280:
-    yych = *++YYCURSOR;
-    if(yych == 'd') goto yy285;
-    goto yy98;
-yy281:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 262 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_IFDEF); }
-#line 3305 "cpp_re.inc"
-yy285:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 263 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-#line 3314 "cpp_re.inc"
-yy289:
-    yych = *++YYCURSOR;
-    if(yych != 'l') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'u') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'd') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yyaccept = 11;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '_') goto yy295;
-    goto yy297;
-yy294:
-#line 259 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_INCLUDE); }
-#line 3331 "cpp_re.inc"
-yy295:
-    yych = *++YYCURSOR;
-    if(yych == 'n') goto yy316;
-    goto yy98;
-yy296:
-    yyaccept = 11;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-yy297:
-    if(yych <= ' ') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy296;
-            goto yy294;
-        } else {
-            if(yych <= 0x0C) goto yy296;
-            if(yych <= 0x1F) goto yy294;
-            goto yy296;
-        }
-    } else {
-        if(yych <= '.') {
-            if(yych == '"') goto yy300;
-            goto yy294;
-        } else {
-            if(yych <= '/') goto yy298;
-            if(yych == '<') goto yy299;
-            goto yy294;
-        }
-    }
-yy298:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '*') goto yy309;
-    goto yy98;
-yy299:
-    yych = *++YYCURSOR;
-    if(yych == '>') goto yy98;
-    goto yy306;
-yy300:
-    yych = *++YYCURSOR;
-    if(yych == '"') goto yy98;
-    goto yy302;
-yy301:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy302:
-    if(yybm[0+yych] & 8) {
-        goto yy301;
-    }
-    if(yych <= '!') goto yy98;
-    ++YYCURSOR;
-#line 256 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_QHEADER); }
-#line 3387 "cpp_re.inc"
-yy305:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy306:
-    if(yybm[0+yych] & 16) {
-        goto yy305;
-    }
-    if(yych <= '=') goto yy98;
-    ++YYCURSOR;
-#line 253 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_HHEADER); }
-#line 3400 "cpp_re.inc"
-yy309:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-    goto yy313;
-yy311:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-yy313:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy313;
-    }
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy309;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '/') goto yy296;
-        goto yy309;
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-    goto yy313;
-yy316:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'x') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych == 't') goto yy296;
-    goto yy98;
-yy319:
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 267 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_DEFINE); }
-#line 3464 "cpp_re.inc"
-yy325:
-    yych = *++YYCURSOR;
-    if(yych != 'd') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 268 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_UNDEF); }
-#line 3475 "cpp_re.inc"
-yy330:
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 269 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_LINE); }
-#line 3484 "cpp_re.inc"
-yy334:
-    yych = *++YYCURSOR;
-    if(yych != 'a') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'm') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'a') goto yy98;
-    ++YYCURSOR;
-#line 271 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-#line 3497 "cpp_re.inc"
-yy340:
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    ++YYCURSOR;
-#line 273 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_WARNING); }
-#line 3512 "cpp_re.inc"
-yy347:
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    ++YYCURSOR;
-#line 275 "cpp.re"
-    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-#line 3525 "cpp_re.inc"
-yy353:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy371;
-    if(yych == 's') goto yy372;
-    goto yy98;
-yy354:
-    yych = *++YYCURSOR;
-    if(yych == 'd') goto yy360;
-    goto yy98;
-yy355:
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    ++YYCURSOR;
-#line 270 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_ERROR); }
-#line 3545 "cpp_re.inc"
-yy360:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy361;
-    if(yych == 'r') goto yy362;
-    goto yy98;
-yy361:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy369;
-    goto yy98;
-yy362:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    ++YYCURSOR;
-#line 276 "cpp.re"
-    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-#line 3569 "cpp_re.inc"
-yy369:
-    ++YYCURSOR;
-#line 266 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_ENDIF); }
-#line 3574 "cpp_re.inc"
-yy371:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy375;
-    goto yy98;
-yy372:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 264 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_ELSE); }
-#line 3585 "cpp_re.inc"
-yy375:
-    ++YYCURSOR;
-#line 265 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_ELIF); }
-#line 3590 "cpp_re.inc"
-yy377:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '*') goto yy381;
-        goto yy377;
-    }
-yy379:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        goto yy379;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych != '*') goto yy377;
-    }
-yy381:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x1F) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        if(yych >= 0x0E) goto yy98;
-    } else {
-        if(yych <= '*') {
-            if(yych <= ')') goto yy377;
-            goto yy381;
-        } else {
-            if(yych == '/') goto yy260;
-            goto yy377;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        goto yy379;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '*') goto yy381;
-        goto yy377;
-    }
-yy384:
-    ++YYCURSOR;
-#line 155 "cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_COLON);
-            }
-            else {
-                BOOST_WAVE_RET(T_COLON_COLON); 
-            }
-        }
-#line 3656 "cpp_re.inc"
-yy386:
-    ++YYCURSOR;
-#line 139 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-#line 3661 "cpp_re.inc"
-yy388:
-    yyaccept = 12;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'e') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '%') goto yy394;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych >= 'd') goto yy261;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'k') {
-                if(yych == 'i') goto yy261;
-            } else {
-                if(yych <= 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy389;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy389:
-#line 141 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_ALT); }
-#line 3701 "cpp_re.inc"
-yy390:
-    ++YYCURSOR;
-#line 200 "cpp.re"
-    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-#line 3706 "cpp_re.inc"
-yy392:
-    ++YYCURSOR;
-#line 133 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-#line 3711 "cpp_re.inc"
-yy394:
-    yych = *++YYCURSOR;
-    if(yych != ':') goto yy98;
-    ++YYCURSOR;
-#line 147 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-#line 3718 "cpp_re.inc"
-yy397:
-    ++YYCURSOR;
-#line 216 "cpp.re"
-    { BOOST_WAVE_RET(T_LESSEQUAL); }
-#line 3723 "cpp_re.inc"
-yy399:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy405;
-#line 209 "cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTLEFT); }
-#line 3729 "cpp_re.inc"
-yy401:
-    ++YYCURSOR;
-#line 136 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-#line 3734 "cpp_re.inc"
-yy403:
-    ++YYCURSOR;
-#line 130 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-#line 3739 "cpp_re.inc"
-yy405:
-    ++YYCURSOR;
-#line 212 "cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-#line 3744 "cpp_re.inc"
-yy407:
-    yych = *++YYCURSOR;
-    switch(yych) {
-    case '!':    goto yy420;
-    case '\'':    goto yy418;
-    case '(':    goto yy412;
-    case ')':    goto yy414;
-    case '-':    goto yy422;
-    case '/':    goto yy424;
-    case '<':    goto yy408;
-    case '=':    goto yy416;
-    case '>':    goto yy410;
-    default:    goto yy98;
-    }
-yy408:
-    ++YYCURSOR;
-#line 129 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-#line 3763 "cpp_re.inc"
-yy410:
-    ++YYCURSOR;
-#line 132 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-#line 3768 "cpp_re.inc"
-yy412:
-    ++YYCURSOR;
-#line 135 "cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-#line 3773 "cpp_re.inc"
-yy414:
-    ++YYCURSOR;
-#line 138 "cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-#line 3778 "cpp_re.inc"
-yy416:
-    yyaccept = 13;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'c') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '#') goto yy437;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych == '?') goto yy436;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'i') {
-                if(yych <= 'e') goto yy261;
-                if(yych >= 'i') goto yy261;
-            } else {
-                if(yych == 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy417;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy417:
-#line 142 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-#line 3819 "cpp_re.inc"
-yy418:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy434;
-#line 181 "cpp.re"
-    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-#line 3825 "cpp_re.inc"
-yy420:
-    yyaccept = 14;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '>') {
-        if(yych == '=') goto yy429;
-    } else {
-        if(yych <= '?') goto yy426;
-        if(yych == '|') goto yy427;
-    }
-yy421:
-#line 187 "cpp.re"
-    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-#line 3838 "cpp_re.inc"
-yy422:
-    ++YYCURSOR;
-#line 189 "cpp.re"
-    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-#line 3843 "cpp_re.inc"
-yy424:
-    yyaccept = 15;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'U') goto yy186;
-    if(yych == 'u') goto yy185;
-yy425:
-#line 239 "cpp.re"
-    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-#line 3852 "cpp_re.inc"
-yy426:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy431;
-    goto yy98;
-yy427:
-    ++YYCURSOR;
-#line 221 "cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3861 "cpp_re.inc"
-yy429:
-    ++YYCURSOR;
-#line 208 "cpp.re"
-    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-#line 3866 "cpp_re.inc"
-yy431:
-    yych = *++YYCURSOR;
-    if(yych != '!') goto yy98;
-    ++YYCURSOR;
-#line 224 "cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3873 "cpp_re.inc"
-yy434:
-    ++YYCURSOR;
-#line 203 "cpp.re"
-    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-#line 3878 "cpp_re.inc"
-yy436:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy439;
-    goto yy98;
-yy437:
-    ++YYCURSOR;
-#line 145 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3887 "cpp_re.inc"
-yy439:
-    yych = *++YYCURSOR;
-    if(yych != '=') goto yy98;
-    ++YYCURSOR;
-#line 146 "cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3894 "cpp_re.inc"
-yy442:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy443;
-    case 'b':    goto yy444;
-    case 'c':    goto yy445;
-    case 'd':    goto yy446;
-    case 'e':    goto yy495;
-    case 'f':    goto yy493;
-    case 'i':    goto yy492;
-    case 'l':    goto yy496;
-    case 's':    goto yy449;
-    case 't':    goto yy494;
-    default:    goto yy195;
-    }
-yy443:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy489;
-    goto yy195;
-yy444:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy484;
-    goto yy195;
-yy445:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy479;
-    goto yy195;
-yy446:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy471;
-    goto yy195;
-yy447:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy463;
-    goto yy195;
-yy448:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy457;
-    goto yy195;
-yy449:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 16;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy456:
-#line 120 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-#line 3970 "cpp_re.inc"
-yy457:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-yy458:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 17;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy462:
-#line 125 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-#line 3995 "cpp_re.inc"
-yy463:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 18;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy470:
-#line 119 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-#line 4025 "cpp_re.inc"
-yy471:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 19;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy478:
-#line 117 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-#line 4055 "cpp_re.inc"
-yy479:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 20;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy483:
-#line 118 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-#line 4076 "cpp_re.inc"
-yy484:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 21;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy488:
-#line 116 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-#line 4097 "cpp_re.inc"
-yy489:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 22;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy491:
-#line 126 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-#line 4112 "cpp_re.inc"
-yy492:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy518;
-    goto yy195;
-yy493:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy463;
-    if(yych == 'i') goto yy511;
-    goto yy195;
-yy494:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy508;
-    goto yy195;
-yy495:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'x') goto yy502;
-    goto yy195;
-yy496:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'v') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 23;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy501:
-#line 124 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-#line 4157 "cpp_re.inc"
-yy502:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 24;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy507:
-#line 122 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-#line 4181 "cpp_re.inc"
-yy508:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'y') goto yy195;
-    yyaccept = 25;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy510:
-#line 121 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-#line 4196 "cpp_re.inc"
-yy511:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'y') goto yy195;
-    yyaccept = 26;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy517:
-#line 123 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-#line 4223 "cpp_re.inc"
-yy518:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy458;
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case '1':    goto yy520;
-    case '3':    goto yy521;
-    case '6':    goto yy522;
-    case '8':    goto yy523;
-    default:    goto yy195;
-    }
-yy520:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '6') goto yy529;
-    goto yy195;
-yy521:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '2') goto yy527;
-    goto yy195;
-yy522:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '4') goto yy525;
-    goto yy195;
-yy523:
-    yyaccept = 27;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy524:
-#line 112 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-#line 4264 "cpp_re.inc"
-yy525:
-    yyaccept = 28;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy526:
-#line 115 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-#line 4276 "cpp_re.inc"
-yy527:
-    yyaccept = 29;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy528:
-#line 114 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-#line 4288 "cpp_re.inc"
-yy529:
-    yyaccept = 30;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy530:
-#line 113 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-#line 4300 "cpp_re.inc"
-yy531:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'h') goto yy537;
-    goto yy195;
-yy532:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 31;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy536:
-#line 110 "cpp.re"
-    { BOOST_WAVE_RET(T_WHILE); }
-#line 4326 "cpp_re.inc"
-yy537:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 32;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy542:
-#line 109 "cpp.re"
-    { BOOST_WAVE_RET(T_WCHART); }
-#line 4350 "cpp_re.inc"
-yy543:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy555;
-    goto yy195;
-yy544:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy545;
-    if(yych == 'l') goto yy546;
-    goto yy195;
-yy545:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy553;
-    goto yy195;
-yy546:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 33;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy552:
-#line 108 "cpp.re"
-    { BOOST_WAVE_RET(T_VOLATILE); }
-#line 4393 "cpp_re.inc"
-yy553:
-    yyaccept = 34;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy554:
-#line 107 "cpp.re"
-    { BOOST_WAVE_RET(T_VOID); }
-#line 4405 "cpp_re.inc"
-yy555:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 35;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy560:
-#line 106 "cpp.re"
-    { BOOST_WAVE_RET(T_VIRTUAL); }
-#line 4429 "cpp_re.inc"
-yy561:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy567;
-    if(yych == 's') goto yy568;
-    goto yy195;
-yy562:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 36;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy566:
-#line 105 "cpp.re"
-    { BOOST_WAVE_RET(T_USING); }
-#line 4456 "cpp_re.inc"
-yy567:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy575;
-    goto yy195;
-yy568:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 37;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy574:
-#line 104 "cpp.re"
-    { BOOST_WAVE_RET(T_UNSIGNED); }
-#line 4488 "cpp_re.inc"
-yy575:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 38;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy577:
-#line 103 "cpp.re"
-    { BOOST_WAVE_RET(T_UNION); }
-#line 4503 "cpp_re.inc"
-yy578:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy608;
-    goto yy195;
-yy579:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy601;
-    if(yych == 'r') goto yy602;
-    goto yy195;
-yy580:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy596;
-    if(yych == 'y') goto yy597;
-    goto yy195;
-yy581:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych != 'd') goto yy195;
-    } else {
-        if(yych <= 'i') goto yy585;
-        if(yych == 'n') goto yy586;
-        goto yy195;
-    }
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy593;
-    goto yy195;
-yy585:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy591;
-    goto yy195;
-yy586:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 39;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy590:
-#line 102 "cpp.re"
-    { BOOST_WAVE_RET(T_TYPENAME); }
-#line 4566 "cpp_re.inc"
-yy591:
-    yyaccept = 40;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy592:
-#line 101 "cpp.re"
-    { BOOST_WAVE_RET(T_TYPEID); }
-#line 4578 "cpp_re.inc"
-yy593:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'f') goto yy195;
-    yyaccept = 41;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy595:
-#line 100 "cpp.re"
-    { BOOST_WAVE_RET(T_TYPEDEF); }
-#line 4593 "cpp_re.inc"
-yy596:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy599;
-    goto yy195;
-yy597:
-    yyaccept = 42;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy598:
-#line 99 "cpp.re"
-    { BOOST_WAVE_RET(T_TRY); }
-#line 4610 "cpp_re.inc"
-yy599:
-    yyaccept = 43;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy600:
-#line 98 "cpp.re"
-    { BOOST_WAVE_RET(T_TRUE); }
-#line 4622 "cpp_re.inc"
-yy601:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy606;
-    goto yy195;
-yy602:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'w') goto yy195;
-    yyaccept = 44;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy605:
-#line 97 "cpp.re"
-    { BOOST_WAVE_RET(T_THROW); }
-#line 4645 "cpp_re.inc"
-yy606:
-    yyaccept = 45;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy607:
-#line 96 "cpp.re"
-    { BOOST_WAVE_RET(T_THIS); }
-#line 4657 "cpp_re.inc"
-yy608:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 46;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy614:
-#line 95 "cpp.re"
-    { BOOST_WAVE_RET(T_TEMPLATE); }
-#line 4684 "cpp_re.inc"
-yy615:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy650;
-    goto yy195;
-yy616:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'g') goto yy640;
-    if(yych == 'z') goto yy641;
-    goto yy195;
-yy617:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy624;
-    if(yych == 'r') goto yy625;
-    goto yy195;
-yy618:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'h') goto yy195;
-    yyaccept = 47;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy623:
-#line 94 "cpp.re"
-    { BOOST_WAVE_RET(T_SWITCH); }
-#line 4725 "cpp_re.inc"
-yy624:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy630;
-    goto yy195;
-yy625:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 48;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy629:
-#line 93 "cpp.re"
-    { BOOST_WAVE_RET(T_STRUCT); }
-#line 4751 "cpp_re.inc"
-yy630:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 49;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy634;
-            if(yych <= '`') goto yy633;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy633:
-#line 91 "cpp.re"
-    { BOOST_WAVE_RET(T_STATIC); }
-#line 4781 "cpp_re.inc"
-yy634:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 50;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy639:
-#line 92 "cpp.re"
-    { BOOST_WAVE_RET(T_STATICCAST); }
-#line 4805 "cpp_re.inc"
-yy640:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy646;
-    goto yy195;
-yy641:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'f') goto yy195;
-    yyaccept = 51;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy645:
-#line 90 "cpp.re"
-    { BOOST_WAVE_RET(T_SIZEOF); }
-#line 4831 "cpp_re.inc"
-yy646:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 52;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy649:
-#line 89 "cpp.re"
-    { BOOST_WAVE_RET(T_SIGNED); }
-#line 4849 "cpp_re.inc"
-yy650:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 53;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy653:
-#line 88 "cpp.re"
-    { BOOST_WAVE_RET(T_SHORT); }
-#line 4867 "cpp_re.inc"
-yy654:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych != 'g') goto yy195;
-    } else {
-        if(yych <= 'i') goto yy656;
-        if(yych == 't') goto yy657;
-        goto yy195;
-    }
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy676;
-    goto yy195;
-yy656:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy662;
-    goto yy195;
-yy657:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 54;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy661:
-#line 87 "cpp.re"
-    { BOOST_WAVE_RET(T_RETURN); }
-#line 4907 "cpp_re.inc"
-yy662:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 55;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy675:
-#line 86 "cpp.re"
-    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-#line 4955 "cpp_re.inc"
-yy676:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 56;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy681:
-#line 85 "cpp.re"
-    { BOOST_WAVE_RET(T_REGISTER); }
-#line 4979 "cpp_re.inc"
-yy682:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy689;
-    if(yych == 'o') goto yy690;
-    goto yy195;
-yy683:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 57;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy688:
-#line 84 "cpp.re"
-    { BOOST_WAVE_RET(T_PUBLIC); }
-#line 5009 "cpp_re.inc"
-yy689:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'v') goto yy698;
-    goto yy195;
-yy690:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 58;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy697:
-#line 83 "cpp.re"
-    { BOOST_WAVE_RET(T_PROTECTED); }
-#line 5044 "cpp_re.inc"
-yy698:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 59;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy702:
-#line 82 "cpp.re"
-    { BOOST_WAVE_RET(T_PRIVATE); }
-#line 5065 "cpp_re.inc"
-yy703:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy710;
-    goto yy195;
-yy704:
-    yyaccept = 60;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy706;
-            if(yych <= '`') goto yy705;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy705:
-#line 223 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-#line 5094 "cpp_re.inc"
-yy706:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 61;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy709:
-#line 207 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-#line 5112 "cpp_re.inc"
-yy710:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 62;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy716:
-#line 81 "cpp.re"
-    { BOOST_WAVE_RET(T_OPERATOR); }
-#line 5139 "cpp_re.inc"
-yy717:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy728;
-    goto yy195;
-yy718:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'w') goto yy726;
-    goto yy195;
-yy719:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 63;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy722;
-            if(yych <= '`') goto yy721;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy721:
-#line 192 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-#line 5176 "cpp_re.inc"
-yy722:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 64;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy725:
-#line 215 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-#line 5194 "cpp_re.inc"
-yy726:
-    yyaccept = 65;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy727:
-#line 80 "cpp.re"
-    { BOOST_WAVE_RET(T_NEW); }
-#line 5206 "cpp_re.inc"
-yy728:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 66;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy735:
-#line 79 "cpp.re"
-    { BOOST_WAVE_RET(T_NAMESPACE); }
-#line 5236 "cpp_re.inc"
-yy736:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 67;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy742:
-#line 78 "cpp.re"
-    { BOOST_WAVE_RET(T_MUTABLE); }
-#line 5263 "cpp_re.inc"
-yy743:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 68;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy746:
-#line 77 "cpp.re"
-    { BOOST_WAVE_RET(T_LONG); }
-#line 5281 "cpp_re.inc"
-yy747:
-    yyaccept = 69;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy748:
-#line 73 "cpp.re"
-    { BOOST_WAVE_RET(T_IF); }
-#line 5293 "cpp_re.inc"
-yy749:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy758;
-    goto yy195;
-yy750:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy751;
-    if(yych == 't') goto yy752;
-    goto yy195;
-yy751:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy754;
-    goto yy195;
-yy752:
-    yyaccept = 70;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy753:
-#line 76 "cpp.re"
-    { BOOST_WAVE_RET(T_INT); }
-#line 5321 "cpp_re.inc"
-yy754:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 71;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy757:
-#line 75 "cpp.re"
-    { BOOST_WAVE_RET(T_INLINE); }
-#line 5339 "cpp_re.inc"
-yy758:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 72;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy762:
-#line 74 "cpp.re"
-    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-#line 5360 "cpp_re.inc"
-yy763:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 73;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy766:
-#line 72 "cpp.re"
-    { BOOST_WAVE_RET(T_GOTO); }
-#line 5378 "cpp_re.inc"
-yy767:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy782;
-    goto yy195;
-yy768:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy778;
-    goto yy195;
-yy769:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy776;
-    goto yy195;
-yy770:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 74;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy775:
-#line 71 "cpp.re"
-    { BOOST_WAVE_RET(T_FRIEND); }
-#line 5417 "cpp_re.inc"
-yy776:
-    yyaccept = 75;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy777:
-#line 70 "cpp.re"
-    { BOOST_WAVE_RET(T_FOR); }
-#line 5429 "cpp_re.inc"
-yy778:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 76;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy781:
-#line 69 "cpp.re"
-    { BOOST_WAVE_RET(T_FLOAT); }
-#line 5447 "cpp_re.inc"
-yy782:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 77;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy785:
-#line 68 "cpp.re"
-    { BOOST_WAVE_RET(T_FALSE); }
-#line 5465 "cpp_re.inc"
-yy786:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy808;
-    goto yy195;
-yy787:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy805;
-    goto yy195;
-yy788:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy789;
-    if(yych == 't') goto yy790;
-    goto yy195;
-yy789:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy795;
-    if(yych == 'o') goto yy796;
-    goto yy195;
-yy790:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 78;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy794:
-#line 67 "cpp.re"
-    { BOOST_WAVE_RET(T_EXTERN); }
-#line 5508 "cpp_re.inc"
-yy795:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy800;
-    goto yy195;
-yy796:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 79;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy799:
-#line 66 "cpp.re"
-    { BOOST_WAVE_RET(T_EXPORT); }
-#line 5531 "cpp_re.inc"
-yy800:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 80;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy804:
-#line 65 "cpp.re"
-    { BOOST_WAVE_RET(T_EXPLICIT); }
-#line 5552 "cpp_re.inc"
-yy805:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 81;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy807:
-#line 64 "cpp.re"
-    { BOOST_WAVE_RET(T_ENUM); }
-#line 5567 "cpp_re.inc"
-yy808:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 82;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy810:
-#line 63 "cpp.re"
-    { BOOST_WAVE_RET(T_ELSE); }
-#line 5582 "cpp_re.inc"
-yy811:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'f') goto yy831;
-    if(yych == 'l') goto yy832;
-    goto yy195;
-yy812:
-    yyaccept = 83;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '9') {
-            if(yych == '$') goto yy194;
-            if(yych >= '0') goto yy194;
-        } else {
-            if(yych == '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '_') {
-            if(yych == '\\') goto yy196;
-            if(yych >= '_') goto yy194;
-        } else {
-            if(yych <= 't') {
-                if(yych >= 'a') goto yy194;
-            } else {
-                if(yych <= 'u') goto yy826;
-                if(yych <= 'z') goto yy194;
-            }
-        }
-    }
-yy813:
-#line 60 "cpp.re"
-    { BOOST_WAVE_RET(T_DO); }
-#line 5616 "cpp_re.inc"
-yy814:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 84;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy825:
-#line 62 "cpp.re"
-    { BOOST_WAVE_RET(T_DYNAMICCAST); }
-#line 5658 "cpp_re.inc"
-yy826:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 85;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy830:
-#line 61 "cpp.re"
-    { BOOST_WAVE_RET(T_DOUBLE); }
-#line 5679 "cpp_re.inc"
-yy831:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy837;
-    goto yy195;
-yy832:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 86;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy836:
-#line 59 "cpp.re"
-    { BOOST_WAVE_RET(T_DELETE); }
-#line 5705 "cpp_re.inc"
-yy837:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 87;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy841:
-#line 58 "cpp.re"
-    { BOOST_WAVE_RET(T_DEFAULT); }
-#line 5726 "cpp_re.inc"
-yy842:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') goto yy195;
-    if(yych <= 's') goto yy873;
-    if(yych <= 't') goto yy874;
-    goto yy195;
-yy843:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy870;
-    goto yy195;
-yy844:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy866;
-    goto yy195;
-yy845:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'l') goto yy195;
-    if(yych <= 'm') goto yy847;
-    if(yych >= 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') goto yy195;
-    if(yych <= 's') goto yy851;
-    if(yych <= 't') goto yy852;
-    goto yy195;
-yy847:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 88;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy850:
-#line 190 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-#line 5773 "cpp_re.inc"
-yy851:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy858;
-    goto yy195;
-yy852:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 89;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy857:
-#line 57 "cpp.re"
-    { BOOST_WAVE_RET(T_CONTINUE); }
-#line 5802 "cpp_re.inc"
-yy858:
-    yyaccept = 90;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy860;
-            if(yych <= '`') goto yy859;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy859:
-#line 55 "cpp.re"
-    { BOOST_WAVE_RET(T_CONST); }
-#line 5826 "cpp_re.inc"
-yy860:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 91;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy865:
-#line 56 "cpp.re"
-    { BOOST_WAVE_RET(T_CONSTCAST); }
-#line 5850 "cpp_re.inc"
-yy866:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 92;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy869:
-#line 54 "cpp.re"
-    { BOOST_WAVE_RET(T_CLASS); }
-#line 5868 "cpp_re.inc"
-yy870:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 93;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy872:
-#line 53 "cpp.re"
-    { BOOST_WAVE_RET(T_CHAR); }
-#line 5883 "cpp_re.inc"
-yy873:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy878;
-    goto yy195;
-yy874:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'h') goto yy195;
-    yyaccept = 94;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy877:
-#line 52 "cpp.re"
-    { BOOST_WAVE_RET(T_CATCH); }
-#line 5906 "cpp_re.inc"
-yy878:
-    yyaccept = 95;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy879:
-#line 51 "cpp.re"
-    { BOOST_WAVE_RET(T_CASE); }
-#line 5918 "cpp_re.inc"
-yy880:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy890;
-    goto yy195;
-yy881:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy887;
-    goto yy195;
-yy882:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'k') goto yy195;
-    yyaccept = 96;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy886:
-#line 50 "cpp.re"
-    { BOOST_WAVE_RET(T_BREAK); }
-#line 5949 "cpp_re.inc"
-yy887:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 97;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy889:
-#line 49 "cpp.re"
-    { BOOST_WAVE_RET(T_BOOL); }
-#line 5964 "cpp_re.inc"
-yy890:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy891;
-    if(yych == 'o') goto yy892;
-    goto yy195;
-yy891:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy895;
-    goto yy195;
-yy892:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 98;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy894:
-#line 186 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-#line 5990 "cpp_re.inc"
-yy895:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 99;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy897:
-#line 184 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-#line 6005 "cpp_re.inc"
-yy898:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy906;
-    goto yy195;
-yy899:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy904;
-    goto yy195;
-yy900:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 100;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy903:
-#line 48 "cpp.re"
-    { BOOST_WAVE_RET(T_AUTO); }
-#line 6033 "cpp_re.inc"
-yy904:
-    yyaccept = 101;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy905:
-#line 47 "cpp.re"
-    { BOOST_WAVE_RET(T_ASM); }
-#line 6045 "cpp_re.inc"
-yy906:
-    yyaccept = 102;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '@') {
-        if(yych <= '/') {
-            if(yych == '$') goto yy194;
-        } else {
-            if(yych <= '9') goto yy194;
-            if(yych == '?') goto yy197;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych <= 'Z') goto yy194;
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy908;
-            if(yych <= '`') goto yy907;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy907:
-#line 219 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-#line 6069 "cpp_re.inc"
-yy908:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 103;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy911:
-#line 205 "cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-#line 6087 "cpp_re.inc"
-yy912:
-    ++YYCURSOR;
-#line 166 "cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
-            }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR); 
-            }
-        }
-#line 6100 "cpp_re.inc"
-yy914:
-    yych = *++YYCURSOR;
-    if(yych == '.') goto yy916;
-    goto yy98;
-yy915:
-    yych = *++YYCURSOR;
-    goto yy7;
-yy916:
-    ++YYCURSOR;
-#line 152 "cpp.re"
-    { BOOST_WAVE_RET(T_ELLIPSIS); }
-#line 6112 "cpp_re.inc"
-yy918:
-    ++YYCURSOR;
-#line 199 "cpp.re"
-    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-#line 6117 "cpp_re.inc"
-yy920:
-    ++YYCURSOR;
-#line 44 "cpp.re"
-    { goto cppcomment; }
-#line 6122 "cpp_re.inc"
-yy922:
-    ++YYCURSOR;
-#line 43 "cpp.re"
-    { goto ccomment; }
-#line 6127 "cpp_re.inc"
-}
-#line 308 "cpp.re"
-
-
-ccomment:
-
-#line 6134 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 0x0C) {
-        if(yych <= 0x08) {
-            if(yych <= 0x00) goto yy933;
-            goto yy935;
-        } else {
-            if(yych == 0x0A) goto yy928;
-            goto yy931;
-        }
-    } else {
-        if(yych <= 0x1F) {
-            if(yych <= 0x0D) goto yy930;
-            goto yy935;
-        } else {
-            if(yych != '*') goto yy932;
-        }
-    }
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '/') goto yy938;
-yy927:
-#line 323 "cpp.re"
-    { goto ccomment; }
-#line 6160 "cpp_re.inc"
-yy928:
-    ++YYCURSOR;
-yy929:
-#line 315 "cpp.re"
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
-        /*s->tok = cursor; */
-        s->line += count_backslash_newlines(s, cursor) +1;
-        cursor.column = 1;
-        goto ccomment;
-    }
-#line 6172 "cpp_re.inc"
-yy930:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy937;
-    goto yy929;
-yy931:
-    yych = *++YYCURSOR;
-    goto yy927;
-yy932:
-    yych = *++YYCURSOR;
-    goto yy927;
-yy933:
-    ++YYCURSOR;
-#line 326 "cpp.re"
-    {
-        if(cursor == s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning, 
-                "Unterminated 'C' style comment");
-        }
-        else
-        {
-            --YYCURSOR;                   // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character: '\\000' in input stream");
-        }
-    }
-#line 6201 "cpp_re.inc"
-yy935:
-    ++YYCURSOR;
-#line 343 "cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 6211 "cpp_re.inc"
-yy937:
-    yych = *++YYCURSOR;
-    goto yy929;
-yy938:
-    ++YYCURSOR;
-#line 312 "cpp.re"
-    { BOOST_WAVE_RET(T_CCOMMENT); }
-#line 6219 "cpp_re.inc"
-}
-#line 349 "cpp.re"
-
-
-cppcomment:
-
-#line 6226 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 0x0A) {
-        if(yych <= 0x00) goto yy948;
-        if(yych <= 0x08) goto yy950;
-        if(yych <= 0x09) goto yy945;
-    } else {
-        if(yych <= 0x0C) goto yy945;
-        if(yych <= 0x0D) goto yy944;
-        if(yych <= 0x1F) goto yy950;
-        goto yy947;
-    }
-    ++YYCURSOR;
-yy943:
-#line 354 "cpp.re"
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
-        /*s->tok = cursor; */
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-#line 6251 "cpp_re.inc"
-yy944:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy952;
-    goto yy943;
-yy945:
-    ++YYCURSOR;
-yy946:
-#line 362 "cpp.re"
-    { goto cppcomment; }
-#line 6261 "cpp_re.inc"
-yy947:
-    yych = *++YYCURSOR;
-    goto yy946;
-yy948:
-    ++YYCURSOR;
-#line 365 "cpp.re"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            --YYCURSOR;                     // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        
-        --YYCURSOR;                         // next call returns T_EOF
-        if (!s->single_line_only)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C++' style comment");
-        }
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-#line 6286 "cpp_re.inc"
-yy950:
-    ++YYCURSOR;
-#line 385 "cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 6296 "cpp_re.inc"
-yy952:
-    ++YYCURSOR;
-    yych = *YYCURSOR;
-    goto yy943;
-}
-#line 391 "cpp.re"
-
-
-/* this subscanner is called whenever a pp_number has been started */
-pp_number:
-{
-    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
-    marker = uchar_wrapper(s->ptr);
-    limit = uchar_wrapper(s->lim);
-
-    if (s->detect_pp_numbers) {
-    
-#line 6314 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    static const unsigned char yybm[] = {
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,  64,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,  64,   0, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,   0,   0,   0,   0,   0,   0, 
-          0,  64,  64,  64,  64, 128,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,   0,   0,   0,   0,  64, 
-          0,  64,  64,  64,  64, 128,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-    };
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych == '.') goto yy956;
-    if(yych <= '/') goto yy955;
-    if(yych <= '9') goto yy957;
-yy955:
-    YYCURSOR = YYMARKER;
-    goto yy959;
-yy956:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy955;
-    if(yych >= ':') goto yy955;
-yy957:
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 64) {
-        goto yy957;
-    }
-    if(yych <= 'Z') {
-        if(yych == '?') goto yy963;
-        if(yych >= 'A') goto yy960;
-    } else {
-        if(yych <= '\\') {
-            if(yych >= '\\') goto yy962;
-        } else {
-            if(yych == 'e') goto yy960;
-        }
-    }
-yy959:
-#line 403 "cpp.re"
-    { BOOST_WAVE_RET(T_PP_NUMBER); }
-#line 6383 "cpp_re.inc"
-yy960:
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy960;
-    }
-    if(yych <= '>') {
-        if(yych <= '+') {
-            if(yych == '$') goto yy957;
-            if(yych <= '*') goto yy959;
-            goto yy957;
-        } else {
-            if(yych <= '.') {
-                if(yych <= ',') goto yy959;
-                goto yy957;
-            } else {
-                if(yych <= '/') goto yy959;
-                if(yych <= '9') goto yy957;
-                goto yy959;
-            }
-        }
-    } else {
-        if(yych <= '\\') {
-            if(yych <= '@') {
-                if(yych <= '?') goto yy963;
-                goto yy959;
-            } else {
-                if(yych <= 'Z') goto yy957;
-                if(yych <= '[') goto yy959;
-            }
-        } else {
-            if(yych <= '_') {
-                if(yych <= '^') goto yy959;
-                goto yy957;
-            } else {
-                if(yych <= '`') goto yy959;
-                if(yych <= 'z') goto yy957;
-                goto yy959;
-            }
-        }
-    }
-yy962:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == 'U') goto yy966;
-    if(yych == 'u') goto yy965;
-    goto yy955;
-yy963:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych != '?') goto yy955;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '/') goto yy962;
-    goto yy955;
-yy965:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy974;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy974;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy974;
-        goto yy955;
-    }
-yy966:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy967;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy967:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy968;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy968:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy969;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy969:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy970;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy970:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy971;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy971:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy972;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy972:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy973;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy973:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy957;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy957;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy957;
-        goto yy955;
-    }
-yy974:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy975;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy975:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy976;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy976:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy957;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy957;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy957;
-        goto yy955;
-    }
-}
-#line 404 "cpp.re"
-
-    }
-    else {
-    
-#line 6599 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-        224, 224, 224, 224, 224, 224, 224, 224, 
-        160, 160,   0,   0,   0,   0,   0,   0, 
-          0, 128, 128, 128, 128, 128, 128,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0, 128, 128, 128, 128, 128, 128,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-    };
-    if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
-    yych = *YYCURSOR;
-    if(yych <= '/') {
-        if(yych == '.') goto yy984;
-    } else {
-        if(yych <= '0') goto yy980;
-        if(yych <= '9') goto yy982;
-    }
-yy979:
-    YYCURSOR = YYMARKER;
-    if(yyaccept <= 0) {
-        goto yy981;
-    } else {
-        goto yy987;
-    }
-yy980:
-    yyaccept = 0;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 64) {
-        goto yy999;
-    }
-    if(yych <= 'E') {
-        if(yych <= '/') {
-            if(yych == '.') goto yy985;
-        } else {
-            if(yych <= '9') goto yy1002;
-            if(yych >= 'E') goto yy995;
-        }
-    } else {
-        if(yych <= 'd') {
-            if(yych == 'X') goto yy1001;
-        } else {
-            if(yych <= 'e') goto yy995;
-            if(yych == 'x') goto yy1001;
-        }
-    }
-yy981:
-#line 411 "cpp.re"
-    { goto integer_suffix; }
-#line 6676 "cpp_re.inc"
-yy982:
-    yyaccept = 0;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy982;
-    }
-    if(yych <= 'D') {
-        if(yych == '.') goto yy985;
-        goto yy981;
-    } else {
-        if(yych <= 'E') goto yy995;
-        if(yych == 'e') goto yy995;
-        goto yy981;
-    }
-yy984:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy985:
-    yyaccept = 1;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= 'D') {
-            if(yych <= '/') goto yy987;
-            if(yych <= '9') goto yy985;
-        } else {
-            if(yych <= 'E') goto yy988;
-            if(yych <= 'F') goto yy989;
-        }
-    } else {
-        if(yych <= 'e') {
-            if(yych <= 'L') goto yy990;
-            if(yych >= 'e') goto yy988;
-        } else {
-            if(yych <= 'f') goto yy989;
-            if(yych == 'l') goto yy990;
-        }
-    }
-yy987:
-#line 409 "cpp.re"
-    { BOOST_WAVE_RET(T_FLOATLIT); }
-#line 6722 "cpp_re.inc"
-yy988:
-    yych = *++YYCURSOR;
-    if(yych <= ',') {
-        if(yych == '+') goto yy992;
-        goto yy979;
-    } else {
-        if(yych <= '-') goto yy992;
-        if(yych <= '/') goto yy979;
-        if(yych <= '9') goto yy993;
-        goto yy979;
-    }
-yy989:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy991;
-    if(yych == 'l') goto yy991;
-    goto yy987;
-yy990:
-    yych = *++YYCURSOR;
-    if(yych == 'F') goto yy991;
-    if(yych != 'f') goto yy987;
-yy991:
-    yych = *++YYCURSOR;
-    goto yy987;
-yy992:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy993:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= '9') {
-            if(yych <= '/') goto yy987;
-            goto yy993;
-        } else {
-            if(yych == 'F') goto yy989;
-            goto yy987;
-        }
-    } else {
-        if(yych <= 'f') {
-            if(yych <= 'L') goto yy990;
-            if(yych <= 'e') goto yy987;
-            goto yy989;
-        } else {
-            if(yych == 'l') goto yy990;
-            goto yy987;
-        }
-    }
-yy995:
-    yych = *++YYCURSOR;
-    if(yych <= ',') {
-        if(yych != '+') goto yy979;
-    } else {
-        if(yych <= '-') goto yy996;
-        if(yych <= '/') goto yy979;
-        if(yych <= '9') goto yy997;
-        goto yy979;
-    }
-yy996:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy997:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= '9') {
-            if(yych <= '/') goto yy987;
-            goto yy997;
-        } else {
-            if(yych == 'F') goto yy989;
-            goto yy987;
-        }
-    } else {
-        if(yych <= 'f') {
-            if(yych <= 'L') goto yy990;
-            if(yych <= 'e') goto yy987;
-            goto yy989;
-        } else {
-            if(yych == 'l') goto yy990;
-            goto yy987;
-        }
-    }
-yy999:
-    yyaccept = 0;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 64) {
-        goto yy999;
-    }
-    if(yych <= '9') {
-        if(yych == '.') goto yy985;
-        if(yych <= '/') goto yy981;
-        goto yy1002;
-    } else {
-        if(yych <= 'E') {
-            if(yych <= 'D') goto yy981;
-            goto yy995;
-        } else {
-            if(yych == 'e') goto yy995;
-            goto yy981;
-        }
-    }
-yy1001:
-    yych = *++YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy1004;
-    }
-    goto yy979;
-yy1002:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych == '.') goto yy985;
-        if(yych <= '/') goto yy979;
-        goto yy1002;
-    } else {
-        if(yych <= 'E') {
-            if(yych <= 'D') goto yy979;
-            goto yy995;
-        } else {
-            if(yych == 'e') goto yy995;
-            goto yy979;
-        }
-    }
-yy1004:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy1004;
-    }
-    goto yy981;
-}
-#line 412 "cpp.re"
-
-    }
-}
-
-/* this subscanner is called, whenever a Integer was recognized */
-integer_suffix:
-{
-    if (s->enable_ms_extensions) {
-    
-#line 6871 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *(YYMARKER = YYCURSOR);
-    if(yych <= 'h') {
-        if(yych <= 'L') {
-            if(yych >= 'L') goto yy1010;
-        } else {
-            if(yych == 'U') goto yy1009;
-        }
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'i') goto yy1011;
-            if(yych >= 'l') goto yy1010;
-        } else {
-            if(yych == 'u') goto yy1009;
-        }
-    }
-yy1008:
-#line 425 "cpp.re"
-    { BOOST_WAVE_RET(T_INTLIT); }
-#line 6893 "cpp_re.inc"
-yy1009:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy1018;
-    if(yych == 'l') goto yy1018;
-    goto yy1008;
-yy1010:
-    yych = *++YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1017;
-        if(yych <= 'T') goto yy1008;
-        goto yy1016;
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'k') goto yy1008;
-            goto yy1017;
-        } else {
-            if(yych == 'u') goto yy1016;
-            goto yy1008;
-        }
-    }
-yy1011:
-    yych = *++YYCURSOR;
-    if(yych == '6') goto yy1013;
-yy1012:
-    YYCURSOR = YYMARKER;
-    goto yy1008;
-yy1013:
-    yych = *++YYCURSOR;
-    if(yych != '4') goto yy1012;
-yy1014:
-    ++YYCURSOR;
-yy1015:
-#line 422 "cpp.re"
-    { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6928 "cpp_re.inc"
-yy1016:
-    yych = *++YYCURSOR;
-    goto yy1008;
-yy1017:
-    yych = *++YYCURSOR;
-    if(yych == 'U') goto yy1014;
-    if(yych == 'u') goto yy1014;
-    goto yy1015;
-yy1018:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'L') goto yy1014;
-    if(yych == 'l') goto yy1014;
-    goto yy1008;
-}
-#line 426 "cpp.re"
-
-    }
-    else {
-    
-#line 6948 "cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1023;
-        if(yych >= 'U') goto yy1022;
-    } else {
-        if(yych <= 'l') {
-            if(yych >= 'l') goto yy1023;
-        } else {
-            if(yych == 'u') goto yy1022;
-        }
-    }
-yy1021:
-#line 434 "cpp.re"
-    { BOOST_WAVE_RET(T_INTLIT); }
-#line 6966 "cpp_re.inc"
-yy1022:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy1028;
-    if(yych == 'l') goto yy1028;
-    goto yy1021;
-yy1023:
-    yych = *++YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1025;
-        if(yych <= 'T') goto yy1021;
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'k') goto yy1021;
-            goto yy1025;
-        } else {
-            if(yych != 'u') goto yy1021;
-        }
-    }
-    yych = *++YYCURSOR;
-    goto yy1021;
-yy1025:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'U') goto yy1027;
-    if(yych == 'u') goto yy1027;
-yy1026:
-#line 431 "cpp.re"
-    { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6994 "cpp_re.inc"
-yy1027:
-    yych = *++YYCURSOR;
-    goto yy1026;
-yy1028:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'L') goto yy1027;
-    if(yych == 'l') goto yy1027;
-    goto yy1021;
-}
-#line 435 "cpp.re"
-
-    }
-}
+/* Generated by re2c 0.13.2 on Fri Apr 04 14:19:15 2008 */
+#line 1 "cpp.re"
+/*=============================================================================
+    Boost.Wave: A Standard compliant C++ preprocessor library
+
+    Copyright (c) 2001 Daniel C. Nuffer
+    Copyright (c) 2001-2008 Hartmut Kaiser. 
+    Distributed under the Boost Software License, Version 1.0. (See accompanying 
+    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+    This is a lexer conforming to the Standard with a few exceptions.
+    So it does allow the '$' to be part of identifiers. If you need strict 
+    Standards conforming behaviour, please include the lexer definition 
+    provided in the file strict_cpp.re.
+
+    TODO: 
+        handle errors better.
+=============================================================================*/
+
+#line 40 "cpp.re"
+
+
+
+#line 25 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  58,  32,  58,  58,  64,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         58,  58,  50,  58,  62,  58,  58,  56, 
+         58,  58, 154,  58,  58,  58,  58,  58, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  58,  58,  58,  58,  42,  56, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  57,  58,  58,  62, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+        /* table 9 .. 12: 256 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  48,   0,  48,  48,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         48,  32,   0,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         96,  96,  96,  96,  96,  96,  96,  96, 
+         96,  96,  32,  32,  32,  32,  32, 128, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,   0,  32,  32,  32, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+    };
+
+    if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+    yych = *YYCURSOR;
+    switch (yych) {
+    case 0x00:    goto yy88;
+    case 0x01:
+    case 0x02:
+    case 0x03:
+    case 0x04:
+    case 0x05:
+    case 0x06:
+    case 0x07:
+    case 0x08:
+    case 0x0E:
+    case 0x0F:
+    case 0x10:
+    case 0x11:
+    case 0x12:
+    case 0x13:
+    case 0x14:
+    case 0x15:
+    case 0x16:
+    case 0x17:
+    case 0x18:
+    case 0x19:
+    case 0x1A:
+    case 0x1B:
+    case 0x1C:
+    case 0x1D:
+    case 0x1E:
+    case 0x1F:    goto yy91;
+    case 0x09:
+    case 0x0B:
+    case 0x0C:    goto yy82;
+    case 0x0A:    goto yy85;
+    case 0x0D:    goto yy87;
+    case ' ':    goto yy84;
+    case '!':    goto yy68;
+    case '"':    goto yy81;
+    case '#':    goto yy45;
+    case '$':
+    case 'A':
+    case 'B':
+    case 'C':
+    case 'D':
+    case 'E':
+    case 'F':
+    case 'G':
+    case 'H':
+    case 'I':
+    case 'J':
+    case 'K':
+    case 'M':
+    case 'N':
+    case 'O':
+    case 'P':
+    case 'Q':
+    case 'R':
+    case 'S':
+    case 'T':
+    case 'U':
+    case 'V':
+    case 'W':
+    case 'X':
+    case 'Y':
+    case 'Z':
+    case 'h':
+    case 'j':
+    case 'k':
+    case 'q':
+    case 'y':
+    case 'z':    goto yy76;
+    case '%':    goto yy37;
+    case '&':    goto yy62;
+    case '\'':    goto yy80;
+    case '(':    goto yy47;
+    case ')':    goto yy49;
+    case '*':    goto yy57;
+    case '+':    goto yy53;
+    case ',':    goto yy74;
+    case '-':    goto yy55;
+    case '.':    goto yy4;
+    case '/':    goto yy2;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':    goto yy6;
+    case ':':    goto yy43;
+    case ';':    goto yy51;
+    case '<':    goto yy33;
+    case '=':    goto yy70;
+    case '>':    goto yy72;
+    case '?':    goto yy31;
+    case 'L':    goto yy77;
+    case '[':    goto yy39;
+    case '\\':    goto yy78;
+    case ']':    goto yy41;
+    case '^':    goto yy59;
+    case '_':    goto yy28;
+    case 'a':    goto yy8;
+    case 'b':    goto yy10;
+    case 'c':    goto yy11;
+    case 'd':    goto yy12;
+    case 'e':    goto yy13;
+    case 'f':    goto yy14;
+    case 'g':    goto yy15;
+    case 'i':    goto yy16;
+    case 'l':    goto yy17;
+    case 'm':    goto yy18;
+    case 'n':    goto yy19;
+    case 'o':    goto yy20;
+    case 'p':    goto yy21;
+    case 'r':    goto yy22;
+    case 's':    goto yy23;
+    case 't':    goto yy24;
+    case 'u':    goto yy25;
+    case 'v':    goto yy26;
+    case 'w':    goto yy27;
+    case 'x':    goto yy61;
+    case '{':    goto yy29;
+    case '|':    goto yy64;
+    case '}':    goto yy35;
+    case '~':    goto yy66;
+    default:    goto yy90;
+    }
+yy2:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '.') {
+        if (yych == '*') goto yy922;
+    } else {
+        if (yych <= '/') goto yy920;
+        if (yych == '=') goto yy918;
+    }
+#line 178 "cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDE); }
+#line 238 "cpp_re.inc"
+yy4:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '-') {
+        if (yych == '*') goto yy912;
+    } else {
+        if (yych <= '.') goto yy914;
+        if (yych <= '/') goto yy5;
+        if (yych <= '9') goto yy915;
+    }
+yy5:
+#line 164 "cpp.re"
+    { BOOST_WAVE_RET(T_DOT); }
+#line 252 "cpp_re.inc"
+yy6:
+    ++YYCURSOR;
+yy7:
+#line 45 "cpp.re"
+    { goto pp_number; }
+#line 258 "cpp_re.inc"
+yy8:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') {
+        if (yych == 'n') goto yy898;
+        goto yy195;
+    } else {
+        if (yych <= 's') goto yy899;
+        if (yych == 'u') goto yy900;
+        goto yy195;
+    }
+yy9:
+#line 243 "cpp.re"
+    { BOOST_WAVE_RET(T_IDENTIFIER); }
+#line 273 "cpp_re.inc"
+yy10:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'i') goto yy880;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy881;
+        if (yych == 'r') goto yy882;
+        goto yy195;
+    }
+yy11:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy842;
+    case 'h':    goto yy843;
+    case 'l':    goto yy844;
+    case 'o':    goto yy845;
+    default:    goto yy195;
+    }
+yy12:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'e') goto yy811;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy812;
+        if (yych == 'y') goto yy814;
+        goto yy195;
+    }
+yy13:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy786;
+        goto yy195;
+    } else {
+        if (yych <= 'n') goto yy787;
+        if (yych == 'x') goto yy788;
+        goto yy195;
+    }
+yy14:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy767;
+    case 'l':    goto yy768;
+    case 'o':    goto yy769;
+    case 'r':    goto yy770;
+    default:    goto yy195;
+    }
+yy15:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy763;
+    goto yy195;
+yy16:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') {
+        if (yych == 'f') goto yy747;
+        goto yy195;
+    } else {
+        if (yych <= 'm') goto yy749;
+        if (yych <= 'n') goto yy750;
+        goto yy195;
+    }
+yy17:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy743;
+    goto yy195;
+yy18:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy736;
+    goto yy195;
+yy19:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'd') {
+        if (yych == 'a') goto yy717;
+        goto yy195;
+    } else {
+        if (yych <= 'e') goto yy718;
+        if (yych == 'o') goto yy719;
+        goto yy195;
+    }
+yy20:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy703;
+    if (yych == 'r') goto yy704;
+    goto yy195;
+yy21:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy682;
+    if (yych == 'u') goto yy683;
+    goto yy195;
+yy22:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy654;
+    goto yy195;
+yy23:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 's') {
+        if (yych <= 'g') goto yy195;
+        if (yych <= 'h') goto yy615;
+        if (yych <= 'i') goto yy616;
+        goto yy195;
+    } else {
+        if (yych <= 't') goto yy617;
+        if (yych == 'w') goto yy618;
+        goto yy195;
+    }
+yy24:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych == 'e') goto yy578;
+        if (yych <= 'g') goto yy195;
+        goto yy579;
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'q') goto yy195;
+            goto yy580;
+        } else {
+            if (yych == 'y') goto yy581;
+            goto yy195;
+        }
+    }
+yy25:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy561;
+    if (yych == 's') goto yy562;
+    goto yy195;
+yy26:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy543;
+    if (yych == 'o') goto yy544;
+    goto yy195;
+yy27:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'c') goto yy531;
+    if (yych == 'h') goto yy532;
+    goto yy195;
+yy28:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '_':    goto yy442;
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'f':    goto yy447;
+    case 'i':    goto yy448;
+    case 's':    goto yy449;
+    default:    goto yy195;
+    }
+yy29:
+    ++YYCURSOR;
+#line 128 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE); }
+#line 446 "cpp_re.inc"
+yy31:
+    yyaccept = 2;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '?') goto yy407;
+yy32:
+#line 153 "cpp.re"
+    { BOOST_WAVE_RET(T_QUESTION_MARK); }
+#line 454 "cpp_re.inc"
+yy33:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= ':') {
+        if (yych == '%') goto yy403;
+        if (yych >= ':') goto yy401;
+    } else {
+        if (yych <= ';') goto yy34;
+        if (yych <= '<') goto yy399;
+        if (yych <= '=') goto yy397;
+    }
+yy34:
+#line 194 "cpp.re"
+    { BOOST_WAVE_RET(T_LESS); }
+#line 468 "cpp_re.inc"
+yy35:
+    ++YYCURSOR;
+#line 131 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE); }
+#line 473 "cpp_re.inc"
+yy37:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == ':') goto yy388;
+    } else {
+        if (yych <= '=') goto yy390;
+        if (yych <= '>') goto yy392;
+    }
+#line 179 "cpp.re"
+    { BOOST_WAVE_RET(T_PERCENT); }
+#line 484 "cpp_re.inc"
+yy39:
+    ++YYCURSOR;
+#line 134 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET); }
+#line 489 "cpp_re.inc"
+yy41:
+    ++YYCURSOR;
+#line 137 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
+#line 494 "cpp_re.inc"
+yy43:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == ':') goto yy384;
+    if (yych == '>') goto yy386;
+#line 151 "cpp.re"
+    { BOOST_WAVE_RET(T_COLON); }
+#line 501 "cpp_re.inc"
+yy45:
+    yyaccept = 3;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy272;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy271;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy46;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy46:
+#line 140 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND); }
+#line 542 "cpp_re.inc"
+yy47:
+    ++YYCURSOR;
+#line 148 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTPAREN); }
+#line 547 "cpp_re.inc"
+yy49:
+    ++YYCURSOR;
+#line 149 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTPAREN); }
+#line 552 "cpp_re.inc"
+yy51:
+    ++YYCURSOR;
+#line 150 "cpp.re"
+    { BOOST_WAVE_RET(T_SEMICOLON); }
+#line 557 "cpp_re.inc"
+yy53:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '+') goto yy256;
+    if (yych == '=') goto yy258;
+#line 175 "cpp.re"
+    { BOOST_WAVE_RET(T_PLUS); }
+#line 564 "cpp_re.inc"
+yy55:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == '-') goto yy250;
+    } else {
+        if (yych <= '=') goto yy252;
+        if (yych <= '>') goto yy248;
+    }
+#line 176 "cpp.re"
+    { BOOST_WAVE_RET(T_MINUS); }
+#line 575 "cpp_re.inc"
+yy57:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy246;
+#line 177 "cpp.re"
+    { BOOST_WAVE_RET(T_STAR); }
+#line 581 "cpp_re.inc"
+yy59:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy244;
+#line 180 "cpp.re"
+    { BOOST_WAVE_RET(T_XOR); }
+#line 587 "cpp_re.inc"
+yy61:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy237;
+    goto yy195;
+yy62:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '&') goto yy233;
+    if (yych == '=') goto yy235;
+#line 183 "cpp.re"
+    { BOOST_WAVE_RET(T_AND); }
+#line 599 "cpp_re.inc"
+yy64:
+    yyaccept = 4;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy228;
+    } else {
+        if (yych <= '?') goto yy225;
+        if (yych == '|') goto yy226;
+    }
+yy65:
+#line 185 "cpp.re"
+    { BOOST_WAVE_RET(T_OR); }
+#line 612 "cpp_re.inc"
+yy66:
+    ++YYCURSOR;
+#line 188 "cpp.re"
+    { BOOST_WAVE_RET(T_COMPL); }
+#line 617 "cpp_re.inc"
+yy68:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy223;
+#line 191 "cpp.re"
+    { BOOST_WAVE_RET(T_NOT); }
+#line 623 "cpp_re.inc"
+yy70:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy221;
+#line 193 "cpp.re"
+    { BOOST_WAVE_RET(T_ASSIGN); }
+#line 629 "cpp_re.inc"
+yy72:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') goto yy73;
+    if (yych <= '=') goto yy215;
+    if (yych <= '>') goto yy217;
+yy73:
+#line 195 "cpp.re"
+    { BOOST_WAVE_RET(T_GREATER); }
+#line 638 "cpp_re.inc"
+yy74:
+    ++YYCURSOR;
+#line 227 "cpp.re"
+    { BOOST_WAVE_RET(T_COMMA); }
+#line 643 "cpp_re.inc"
+yy76:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    goto yy195;
+yy77:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych <= '\'') {
+        if (yych == '"') goto yy96;
+        if (yych <= '&') goto yy9;
+        goto yy214;
+    } else {
+        if (yych <= '?') {
+            if (yych <= '>') goto yy9;
+            goto yy197;
+        } else {
+            if (yych == '\\') goto yy196;
+            goto yy9;
+        }
+    }
+yy78:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy79:
+#line 299 "cpp.re"
+    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
+#line 675 "cpp_re.inc"
+yy80:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0C) {
+        if (yych == 0x09) goto yy142;
+        if (yych <= 0x0A) goto yy79;
+        goto yy142;
+    } else {
+        if (yych <= 0x1F) goto yy79;
+        if (yych == '\'') goto yy79;
+        goto yy142;
+    }
+yy81:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0A) {
+        if (yych == 0x09) goto yy97;
+        goto yy79;
+    } else {
+        if (yych <= 0x0C) goto yy97;
+        if (yych <= 0x1F) goto yy79;
+        goto yy97;
+    }
+yy82:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy95;
+yy83:
+#line 279 "cpp.re"
+    { BOOST_WAVE_RET(T_SPACE); }
+#line 706 "cpp_re.inc"
+yy84:
+    yych = *++YYCURSOR;
+    goto yy95;
+yy85:
+    ++YYCURSOR;
+yy86:
+#line 282 "cpp.re"
+    {
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_NEWLINE);
+    }
+#line 719 "cpp_re.inc"
+yy87:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy93;
+    goto yy86;
+yy88:
+    ++YYCURSOR;
+#line 289 "cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        BOOST_WAVE_RET(T_EOF);
+    }
+#line 736 "cpp_re.inc"
+yy90:
+    yych = *++YYCURSOR;
+    goto yy79;
+yy91:
+    ++YYCURSOR;
+#line 302 "cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 749 "cpp_re.inc"
+yy93:
+    yych = *++YYCURSOR;
+    goto yy86;
+yy94:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy95:
+    if (yybm[256+yych] & 16) {
+        goto yy94;
+    }
+    goto yy83;
+yy96:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy97:
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy98:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 51) {
+        if (yyaccept <= 25) {
+            if (yyaccept <= 12) {
+                if (yyaccept <= 6) {
+                    if (yyaccept <= 3) {
+                        if (yyaccept <= 1) {
+                            if (yyaccept <= 0) {
+                                goto yy5;
+                            } else {
+                                goto yy9;
+                            }
+                        } else {
+                            if (yyaccept <= 2) {
+                                goto yy32;
+                            } else {
+                                goto yy46;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 5) {
+                            if (yyaccept <= 4) {
+                                goto yy65;
+                            } else {
+                                goto yy79;
+                            }
+                        } else {
+                            goto yy102;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 9) {
+                        if (yyaccept <= 8) {
+                            if (yyaccept <= 7) {
+                                goto yy152;
+                            } else {
+                                goto yy239;
+                            }
+                        } else {
+                            goto yy243;
+                        }
+                    } else {
+                        if (yyaccept <= 11) {
+                            if (yyaccept <= 10) {
+                                goto yy279;
+                            } else {
+                                goto yy294;
+                            }
+                        } else {
+                            goto yy389;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 19) {
+                    if (yyaccept <= 16) {
+                        if (yyaccept <= 14) {
+                            if (yyaccept <= 13) {
+                                goto yy417;
+                            } else {
+                                goto yy421;
+                            }
+                        } else {
+                            if (yyaccept <= 15) {
+                                goto yy425;
+                            } else {
+                                goto yy456;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 18) {
+                            if (yyaccept <= 17) {
+                                goto yy462;
+                            } else {
+                                goto yy470;
+                            }
+                        } else {
+                            goto yy478;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 22) {
+                        if (yyaccept <= 21) {
+                            if (yyaccept <= 20) {
+                                goto yy483;
+                            } else {
+                                goto yy488;
+                            }
+                        } else {
+                            goto yy491;
+                        }
+                    } else {
+                        if (yyaccept <= 24) {
+                            if (yyaccept <= 23) {
+                                goto yy501;
+                            } else {
+                                goto yy507;
+                            }
+                        } else {
+                            goto yy510;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 38) {
+                if (yyaccept <= 32) {
+                    if (yyaccept <= 29) {
+                        if (yyaccept <= 27) {
+                            if (yyaccept <= 26) {
+                                goto yy517;
+                            } else {
+                                goto yy524;
+                            }
+                        } else {
+                            if (yyaccept <= 28) {
+                                goto yy526;
+                            } else {
+                                goto yy528;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 31) {
+                            if (yyaccept <= 30) {
+                                goto yy530;
+                            } else {
+                                goto yy536;
+                            }
+                        } else {
+                            goto yy542;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 35) {
+                        if (yyaccept <= 34) {
+                            if (yyaccept <= 33) {
+                                goto yy552;
+                            } else {
+                                goto yy554;
+                            }
+                        } else {
+                            goto yy560;
+                        }
+                    } else {
+                        if (yyaccept <= 37) {
+                            if (yyaccept <= 36) {
+                                goto yy566;
+                            } else {
+                                goto yy574;
+                            }
+                        } else {
+                            goto yy577;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 45) {
+                    if (yyaccept <= 42) {
+                        if (yyaccept <= 40) {
+                            if (yyaccept <= 39) {
+                                goto yy590;
+                            } else {
+                                goto yy592;
+                            }
+                        } else {
+                            if (yyaccept <= 41) {
+                                goto yy595;
+                            } else {
+                                goto yy598;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 44) {
+                            if (yyaccept <= 43) {
+                                goto yy600;
+                            } else {
+                                goto yy605;
+                            }
+                        } else {
+                            goto yy607;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 48) {
+                        if (yyaccept <= 47) {
+                            if (yyaccept <= 46) {
+                                goto yy614;
+                            } else {
+                                goto yy623;
+                            }
+                        } else {
+                            goto yy629;
+                        }
+                    } else {
+                        if (yyaccept <= 50) {
+                            if (yyaccept <= 49) {
+                                goto yy633;
+                            } else {
+                                goto yy639;
+                            }
+                        } else {
+                            goto yy645;
+                        }
+                    }
+                }
+            }
+        }
+    } else {
+        if (yyaccept <= 77) {
+            if (yyaccept <= 64) {
+                if (yyaccept <= 58) {
+                    if (yyaccept <= 55) {
+                        if (yyaccept <= 53) {
+                            if (yyaccept <= 52) {
+                                goto yy649;
+                            } else {
+                                goto yy653;
+                            }
+                        } else {
+                            if (yyaccept <= 54) {
+                                goto yy661;
+                            } else {
+                                goto yy675;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 57) {
+                            if (yyaccept <= 56) {
+                                goto yy681;
+                            } else {
+                                goto yy688;
+                            }
+                        } else {
+                            goto yy697;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 61) {
+                        if (yyaccept <= 60) {
+                            if (yyaccept <= 59) {
+                                goto yy702;
+                            } else {
+                                goto yy705;
+                            }
+                        } else {
+                            goto yy709;
+                        }
+                    } else {
+                        if (yyaccept <= 63) {
+                            if (yyaccept <= 62) {
+                                goto yy716;
+                            } else {
+                                goto yy721;
+                            }
+                        } else {
+                            goto yy725;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 71) {
+                    if (yyaccept <= 68) {
+                        if (yyaccept <= 66) {
+                            if (yyaccept <= 65) {
+                                goto yy727;
+                            } else {
+                                goto yy735;
+                            }
+                        } else {
+                            if (yyaccept <= 67) {
+                                goto yy742;
+                            } else {
+                                goto yy746;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 70) {
+                            if (yyaccept <= 69) {
+                                goto yy748;
+                            } else {
+                                goto yy753;
+                            }
+                        } else {
+                            goto yy757;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 74) {
+                        if (yyaccept <= 73) {
+                            if (yyaccept <= 72) {
+                                goto yy762;
+                            } else {
+                                goto yy766;
+                            }
+                        } else {
+                            goto yy775;
+                        }
+                    } else {
+                        if (yyaccept <= 76) {
+                            if (yyaccept <= 75) {
+                                goto yy777;
+                            } else {
+                                goto yy781;
+                            }
+                        } else {
+                            goto yy785;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 90) {
+                if (yyaccept <= 84) {
+                    if (yyaccept <= 81) {
+                        if (yyaccept <= 79) {
+                            if (yyaccept <= 78) {
+                                goto yy794;
+                            } else {
+                                goto yy799;
+                            }
+                        } else {
+                            if (yyaccept <= 80) {
+                                goto yy804;
+                            } else {
+                                goto yy807;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 83) {
+                            if (yyaccept <= 82) {
+                                goto yy810;
+                            } else {
+                                goto yy813;
+                            }
+                        } else {
+                            goto yy825;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 87) {
+                        if (yyaccept <= 86) {
+                            if (yyaccept <= 85) {
+                                goto yy830;
+                            } else {
+                                goto yy836;
+                            }
+                        } else {
+                            goto yy841;
+                        }
+                    } else {
+                        if (yyaccept <= 89) {
+                            if (yyaccept <= 88) {
+                                goto yy850;
+                            } else {
+                                goto yy857;
+                            }
+                        } else {
+                            goto yy859;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 97) {
+                    if (yyaccept <= 94) {
+                        if (yyaccept <= 92) {
+                            if (yyaccept <= 91) {
+                                goto yy865;
+                            } else {
+                                goto yy869;
+                            }
+                        } else {
+                            if (yyaccept <= 93) {
+                                goto yy872;
+                            } else {
+                                goto yy877;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 96) {
+                            if (yyaccept <= 95) {
+                                goto yy879;
+                            } else {
+                                goto yy886;
+                            }
+                        } else {
+                            goto yy889;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 100) {
+                        if (yyaccept <= 99) {
+                            if (yyaccept <= 98) {
+                                goto yy894;
+                            } else {
+                                goto yy897;
+                            }
+                        } else {
+                            goto yy903;
+                        }
+                    } else {
+                        if (yyaccept <= 102) {
+                            if (yyaccept <= 101) {
+                                goto yy905;
+                            } else {
+                                goto yy907;
+                            }
+                        } else {
+                            goto yy911;
+                        }
+                    }
+                }
+            }
+        }
+    }
+yy99:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy112;
+yy100:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy96;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy96;
+                if (yych <= '/') goto yy98;
+                goto yy107;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy105;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy104;
+                if (yych == '\\') goto yy96;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy96;
+                if (yych <= 'e') goto yy98;
+                goto yy96;
+            } else {
+                if (yych == 'n') goto yy96;
+                if (yych <= 'q') goto yy98;
+                goto yy96;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy96;
+                goto yy103;
+            } else {
+                if (yych <= 'v') goto yy96;
+                if (yych == 'x') goto yy106;
+                goto yy98;
+            }
+        }
+    }
+yy101:
+    ++YYCURSOR;
+yy102:
+#line 249 "cpp.re"
+    { BOOST_WAVE_RET(T_STRINGLIT); }
+#line 1251 "cpp_re.inc"
+yy103:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy138;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy138;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy138;
+        goto yy98;
+    }
+yy104:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy131;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy131;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy131;
+        goto yy98;
+    }
+yy105:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy111;
+    goto yy100;
+yy106:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    goto yy98;
+yy107:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '"') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '!') goto yy96;
+            goto yy101;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy96;
+            if (yych >= '8') goto yy96;
+        } else {
+            if (yych <= '?') goto yy99;
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy109:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '?') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '>') goto yy96;
+            goto yy99;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy111:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+yy112:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy114:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 1) {
+        goto yy114;
+    }
+    if (yych <= '7') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy118;
+                if (yych <= '/') goto yy96;
+                goto yy107;
+            }
+        }
+    } else {
+        if (yych <= 'U') {
+            if (yych == '?') goto yy119;
+            if (yych <= 'T') goto yy96;
+            goto yy117;
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy96;
+            } else {
+                if (yych == 'x') goto yy109;
+                goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy128;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy128;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy128;
+                goto yy96;
+            }
+        }
+    }
+yy117:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy121;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy121;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy121;
+                goto yy96;
+            }
+        }
+    }
+yy118:
+    yyaccept = 6;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy102;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy119:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+            goto yy114;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy121:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy128:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy131:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy132;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy132:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy133;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy133:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy134;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy134:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy135;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy135:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy136;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy136:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy137;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy137:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy138:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy139;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy139:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy140;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy140:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy141:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy142:
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy143:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy156;
+yy144:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy141;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy141;
+                if (yych <= '/') goto yy98;
+                goto yy149;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy147;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy146;
+                if (yych == '\\') goto yy141;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy141;
+                if (yych <= 'e') goto yy98;
+                goto yy141;
+            } else {
+                if (yych == 'n') goto yy141;
+                if (yych <= 'q') goto yy98;
+                goto yy141;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych <= 'v') goto yy141;
+                if (yych == 'x') goto yy148;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy182;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy182;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy182;
+        goto yy98;
+    }
+yy146:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy175;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy175;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy175;
+        goto yy98;
+    }
+yy147:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy155;
+    goto yy144;
+yy148:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy153;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy153;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy153;
+        goto yy98;
+    }
+yy149:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy141;
+            if (yych >= '8') goto yy141;
+        } else {
+            if (yych <= '?') goto yy143;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy151:
+    ++YYCURSOR;
+yy152:
+#line 246 "cpp.re"
+    { BOOST_WAVE_RET(T_CHARLIT); }
+#line 2098 "cpp_re.inc"
+yy153:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy153;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy153;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+yy155:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy156:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych != '/') goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy158:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '>') {
+        if (yych <= 0x1F) {
+            if (yych <= 0x09) {
+                if (yych <= 0x08) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= 0x0A) goto yy98;
+                if (yych <= 0x0C) goto yy141;
+                goto yy98;
+            }
+        } else {
+            if (yych <= '\'') {
+                if (yych <= '&') goto yy141;
+                goto yy162;
+            } else {
+                if (yych <= '/') goto yy141;
+                if (yych <= '7') goto yy149;
+                goto yy141;
+            }
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= 'T') {
+                if (yych <= '?') goto yy163;
+                goto yy141;
+            } else {
+                if (yych <= 'U') goto yy161;
+                if (yych <= '[') goto yy141;
+                goto yy158;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych == 'x') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy172;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy172;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy172;
+                goto yy141;
+            }
+        }
+    }
+yy161:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy165;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy165;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy165;
+                goto yy141;
+            }
+        }
+    }
+yy162:
+    yyaccept = 7;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy152;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy163:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych == '/') goto yy158;
+            goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy165:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy172:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy175:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy176;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy176:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy177;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy177:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy178;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy178:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy179;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy179:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy180;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy180:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy181;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy181:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy182:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy183;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy183:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy184;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy184:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy185:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy211;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy211;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy211;
+        goto yy98;
+    }
+yy186:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy187;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy187:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy188;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy188:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy189;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy189:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy190;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy190:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy191;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy191:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy192;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy192:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy193;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy193:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy194:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy195:
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych != '\\') goto yy9;
+yy196:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy200;
+    if (yych == 'u') goto yy199;
+    goto yy98;
+yy197:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy98;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy196;
+    goto yy98;
+yy199:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy208;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy208;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy208;
+        goto yy98;
+    }
+yy200:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy201;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy201:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy202;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy202:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy203;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy203:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy204;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy204:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy205;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy205:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy206;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy206:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy207;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy207:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy208:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy209;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy209:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy210;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy210:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy211:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy212;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy212:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy213;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy213:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy214:
+    yych = *++YYCURSOR;
+    if (yych == '\'') goto yy98;
+    goto yy142;
+yy215:
+    ++YYCURSOR;
+#line 217 "cpp.re"
+    { BOOST_WAVE_RET(T_GREATEREQUAL); }
+#line 3028 "cpp_re.inc"
+yy217:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy219;
+#line 210 "cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
+#line 3034 "cpp_re.inc"
+yy219:
+    ++YYCURSOR;
+#line 211 "cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
+#line 3039 "cpp_re.inc"
+yy221:
+    ++YYCURSOR;
+#line 213 "cpp.re"
+    { BOOST_WAVE_RET(T_EQUAL); }
+#line 3044 "cpp_re.inc"
+yy223:
+    ++YYCURSOR;
+#line 214 "cpp.re"
+    { BOOST_WAVE_RET(T_NOTEQUAL); }
+#line 3049 "cpp_re.inc"
+yy225:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy230;
+    goto yy98;
+yy226:
+    ++YYCURSOR;
+#line 220 "cpp.re"
+    { BOOST_WAVE_RET(T_OROR); }
+#line 3058 "cpp_re.inc"
+yy228:
+    ++YYCURSOR;
+#line 206 "cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN); }
+#line 3063 "cpp_re.inc"
+yy230:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 222 "cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3070 "cpp_re.inc"
+yy233:
+    ++YYCURSOR;
+#line 218 "cpp.re"
+    { BOOST_WAVE_RET(T_ANDAND); }
+#line 3075 "cpp_re.inc"
+yy235:
+    ++YYCURSOR;
+#line 204 "cpp.re"
+    { BOOST_WAVE_RET(T_ANDASSIGN); }
+#line 3080 "cpp_re.inc"
+yy237:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 8;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy240;
+            if (yych <= '`') goto yy239;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy239:
+#line 182 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
+#line 3107 "cpp_re.inc"
+yy240:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 9;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy243:
+#line 202 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
+#line 3125 "cpp_re.inc"
+yy244:
+    ++YYCURSOR;
+#line 201 "cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN); }
+#line 3130 "cpp_re.inc"
+yy246:
+    ++YYCURSOR;
+#line 198 "cpp.re"
+    { BOOST_WAVE_RET(T_STARASSIGN); }
+#line 3135 "cpp_re.inc"
+yy248:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '*') goto yy254;
+#line 238 "cpp.re"
+    { BOOST_WAVE_RET(T_ARROW); }
+#line 3141 "cpp_re.inc"
+yy250:
+    ++YYCURSOR;
+#line 226 "cpp.re"
+    { BOOST_WAVE_RET(T_MINUSMINUS); }
+#line 3146 "cpp_re.inc"
+yy252:
+    ++YYCURSOR;
+#line 197 "cpp.re"
+    { BOOST_WAVE_RET(T_MINUSASSIGN); }
+#line 3151 "cpp_re.inc"
+yy254:
+    ++YYCURSOR;
+#line 229 "cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_ARROW);
+            }
+            else {
+                BOOST_WAVE_RET(T_ARROWSTAR); 
+            }
+        }
+#line 3164 "cpp_re.inc"
+yy256:
+    ++YYCURSOR;
+#line 225 "cpp.re"
+    { BOOST_WAVE_RET(T_PLUSPLUS); }
+#line 3169 "cpp_re.inc"
+yy258:
+    ++YYCURSOR;
+#line 196 "cpp.re"
+    { BOOST_WAVE_RET(T_PLUSASSIGN); }
+#line 3174 "cpp_re.inc"
+yy260:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+    yych = *YYCURSOR;
+yy261:
+    if (yych <= 'h') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy260;
+                goto yy98;
+            } else {
+                if (yych <= 0x0C) goto yy260;
+                if (yych <= 0x1F) goto yy98;
+                goto yy260;
+            }
+        } else {
+            if (yych <= 'c') {
+                if (yych != '/') goto yy98;
+            } else {
+                if (yych <= 'd') goto yy269;
+                if (yych <= 'e') goto yy263;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'q') {
+            if (yych <= 'l') {
+                if (yych <= 'i') goto yy270;
+                if (yych <= 'k') goto yy98;
+                goto yy267;
+            } else {
+                if (yych == 'p') goto yy266;
+                goto yy98;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 'r') goto yy264;
+                if (yych <= 't') goto yy98;
+                goto yy268;
+            } else {
+                if (yych == 'w') goto yy265;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy377;
+    goto yy98;
+yy263:
+    yych = *++YYCURSOR;
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy353;
+        goto yy98;
+    } else {
+        if (yych <= 'n') goto yy354;
+        if (yych == 'r') goto yy355;
+        goto yy98;
+    }
+yy264:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy347;
+    goto yy98;
+yy265:
+    yych = *++YYCURSOR;
+    if (yych == 'a') goto yy340;
+    goto yy98;
+yy266:
+    yych = *++YYCURSOR;
+    if (yych == 'r') goto yy334;
+    goto yy98;
+yy267:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy330;
+    goto yy98;
+yy268:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy325;
+    goto yy98;
+yy269:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy319;
+    goto yy98;
+yy270:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy278;
+    if (yych == 'n') goto yy277;
+    goto yy98;
+yy271:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy274;
+    goto yy98;
+yy272:
+    ++YYCURSOR;
+#line 143 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND); }
+#line 3272 "cpp_re.inc"
+yy274:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 144 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3279 "cpp_re.inc"
+yy277:
+    yych = *++YYCURSOR;
+    if (yych == 'c') goto yy289;
+    goto yy98;
+yy278:
+    yyaccept = 10;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy281;
+    if (yych == 'n') goto yy280;
+yy279:
+#line 261 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_IF); }
+#line 3292 "cpp_re.inc"
+yy280:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy285;
+    goto yy98;
+yy281:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 262 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFDEF); }
+#line 3305 "cpp_re.inc"
+yy285:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 263 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFNDEF); }
+#line 3314 "cpp_re.inc"
+yy289:
+    yych = *++YYCURSOR;
+    if (yych != 'l') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'u') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yyaccept = 11;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '_') goto yy295;
+    goto yy297;
+yy294:
+#line 259 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_INCLUDE); }
+#line 3331 "cpp_re.inc"
+yy295:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy316;
+    goto yy98;
+yy296:
+    yyaccept = 11;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+yy297:
+    if (yych <= ' ') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy296;
+            goto yy294;
+        } else {
+            if (yych <= 0x0C) goto yy296;
+            if (yych <= 0x1F) goto yy294;
+            goto yy296;
+        }
+    } else {
+        if (yych <= '.') {
+            if (yych == '"') goto yy300;
+            goto yy294;
+        } else {
+            if (yych <= '/') goto yy298;
+            if (yych == '<') goto yy299;
+            goto yy294;
+        }
+    }
+yy298:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy309;
+    goto yy98;
+yy299:
+    yych = *++YYCURSOR;
+    if (yych == '>') goto yy98;
+    goto yy306;
+yy300:
+    yych = *++YYCURSOR;
+    if (yych == '"') goto yy98;
+    goto yy302;
+yy301:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy302:
+    if (yybm[0+yych] & 8) {
+        goto yy301;
+    }
+    if (yych <= '!') goto yy98;
+    ++YYCURSOR;
+#line 256 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_QHEADER); }
+#line 3387 "cpp_re.inc"
+yy305:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy306:
+    if (yybm[0+yych] & 16) {
+        goto yy305;
+    }
+    if (yych <= '=') goto yy98;
+    ++YYCURSOR;
+#line 253 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_HHEADER); }
+#line 3400 "cpp_re.inc"
+yy309:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy311:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+yy313:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy313;
+    }
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy309;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '/') goto yy296;
+        goto yy309;
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy316:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'x') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych == 't') goto yy296;
+    goto yy98;
+yy319:
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 267 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_DEFINE); }
+#line 3464 "cpp_re.inc"
+yy325:
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 268 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_UNDEF); }
+#line 3475 "cpp_re.inc"
+yy330:
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 269 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_LINE); }
+#line 3484 "cpp_re.inc"
+yy334:
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'm') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    ++YYCURSOR;
+#line 271 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_PRAGMA); }
+#line 3497 "cpp_re.inc"
+yy340:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    ++YYCURSOR;
+#line 273 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_WARNING); }
+#line 3512 "cpp_re.inc"
+yy347:
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 275 "cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
+#line 3525 "cpp_re.inc"
+yy353:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy371;
+    if (yych == 's') goto yy372;
+    goto yy98;
+yy354:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy360;
+    goto yy98;
+yy355:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    ++YYCURSOR;
+#line 270 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_ERROR); }
+#line 3545 "cpp_re.inc"
+yy360:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy361;
+    if (yych == 'r') goto yy362;
+    goto yy98;
+yy361:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy369;
+    goto yy98;
+yy362:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 276 "cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+#line 3569 "cpp_re.inc"
+yy369:
+    ++YYCURSOR;
+#line 266 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_ENDIF); }
+#line 3574 "cpp_re.inc"
+yy371:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy375;
+    goto yy98;
+yy372:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 264 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELSE); }
+#line 3585 "cpp_re.inc"
+yy375:
+    ++YYCURSOR;
+#line 265 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELIF); }
+#line 3590 "cpp_re.inc"
+yy377:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy379:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych != '*') goto yy377;
+    }
+yy381:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x1F) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        if (yych >= 0x0E) goto yy98;
+    } else {
+        if (yych <= '*') {
+            if (yych <= ')') goto yy377;
+            goto yy381;
+        } else {
+            if (yych == '/') goto yy260;
+            goto yy377;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy384:
+    ++YYCURSOR;
+#line 155 "cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_COLON);
+            }
+            else {
+                BOOST_WAVE_RET(T_COLON_COLON); 
+            }
+        }
+#line 3656 "cpp_re.inc"
+yy386:
+    ++YYCURSOR;
+#line 139 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
+#line 3661 "cpp_re.inc"
+yy388:
+    yyaccept = 12;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'e') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '%') goto yy394;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych >= 'd') goto yy261;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'k') {
+                if (yych == 'i') goto yy261;
+            } else {
+                if (yych <= 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy389;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy389:
+#line 141 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_ALT); }
+#line 3701 "cpp_re.inc"
+yy390:
+    ++YYCURSOR;
+#line 200 "cpp.re"
+    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
+#line 3706 "cpp_re.inc"
+yy392:
+    ++YYCURSOR;
+#line 133 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
+#line 3711 "cpp_re.inc"
+yy394:
+    yych = *++YYCURSOR;
+    if (yych != ':') goto yy98;
+    ++YYCURSOR;
+#line 147 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
+#line 3718 "cpp_re.inc"
+yy397:
+    ++YYCURSOR;
+#line 216 "cpp.re"
+    { BOOST_WAVE_RET(T_LESSEQUAL); }
+#line 3723 "cpp_re.inc"
+yy399:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy405;
+#line 209 "cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFT); }
+#line 3729 "cpp_re.inc"
+yy401:
+    ++YYCURSOR;
+#line 136 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
+#line 3734 "cpp_re.inc"
+yy403:
+    ++YYCURSOR;
+#line 130 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
+#line 3739 "cpp_re.inc"
+yy405:
+    ++YYCURSOR;
+#line 212 "cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
+#line 3744 "cpp_re.inc"
+yy407:
+    yych = *++YYCURSOR;
+    switch (yych) {
+    case '!':    goto yy420;
+    case '\'':    goto yy418;
+    case '(':    goto yy412;
+    case ')':    goto yy414;
+    case '-':    goto yy422;
+    case '/':    goto yy424;
+    case '<':    goto yy408;
+    case '=':    goto yy416;
+    case '>':    goto yy410;
+    default:    goto yy98;
+    }
+yy408:
+    ++YYCURSOR;
+#line 129 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
+#line 3763 "cpp_re.inc"
+yy410:
+    ++YYCURSOR;
+#line 132 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
+#line 3768 "cpp_re.inc"
+yy412:
+    ++YYCURSOR;
+#line 135 "cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
+#line 3773 "cpp_re.inc"
+yy414:
+    ++YYCURSOR;
+#line 138 "cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
+#line 3778 "cpp_re.inc"
+yy416:
+    yyaccept = 13;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy437;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy436;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy417;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy417:
+#line 142 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
+#line 3819 "cpp_re.inc"
+yy418:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy434;
+#line 181 "cpp.re"
+    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
+#line 3825 "cpp_re.inc"
+yy420:
+    yyaccept = 14;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy429;
+    } else {
+        if (yych <= '?') goto yy426;
+        if (yych == '|') goto yy427;
+    }
+yy421:
+#line 187 "cpp.re"
+    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
+#line 3838 "cpp_re.inc"
+yy422:
+    ++YYCURSOR;
+#line 189 "cpp.re"
+    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
+#line 3843 "cpp_re.inc"
+yy424:
+    yyaccept = 15;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy425:
+#line 239 "cpp.re"
+    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
+#line 3852 "cpp_re.inc"
+yy426:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy431;
+    goto yy98;
+yy427:
+    ++YYCURSOR;
+#line 221 "cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3861 "cpp_re.inc"
+yy429:
+    ++YYCURSOR;
+#line 208 "cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
+#line 3866 "cpp_re.inc"
+yy431:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 224 "cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3873 "cpp_re.inc"
+yy434:
+    ++YYCURSOR;
+#line 203 "cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
+#line 3878 "cpp_re.inc"
+yy436:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy439;
+    goto yy98;
+yy437:
+    ++YYCURSOR;
+#line 145 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3887 "cpp_re.inc"
+yy439:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 146 "cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3894 "cpp_re.inc"
+yy442:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'e':    goto yy495;
+    case 'f':    goto yy493;
+    case 'i':    goto yy492;
+    case 'l':    goto yy496;
+    case 's':    goto yy449;
+    case 't':    goto yy494;
+    default:    goto yy195;
+    }
+yy443:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy489;
+    goto yy195;
+yy444:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy484;
+    goto yy195;
+yy445:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy479;
+    goto yy195;
+yy446:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy471;
+    goto yy195;
+yy447:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    goto yy195;
+yy448:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy457;
+    goto yy195;
+yy449:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 16;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy456:
+#line 120 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
+#line 3970 "cpp_re.inc"
+yy457:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+yy458:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 17;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy462:
+#line 125 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
+#line 3995 "cpp_re.inc"
+yy463:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 18;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy470:
+#line 119 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
+#line 4025 "cpp_re.inc"
+yy471:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 19;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy478:
+#line 117 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
+#line 4055 "cpp_re.inc"
+yy479:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 20;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy483:
+#line 118 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
+#line 4076 "cpp_re.inc"
+yy484:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 21;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy488:
+#line 116 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
+#line 4097 "cpp_re.inc"
+yy489:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 22;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy491:
+#line 126 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
+#line 4112 "cpp_re.inc"
+yy492:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy518;
+    goto yy195;
+yy493:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    if (yych == 'i') goto yy511;
+    goto yy195;
+yy494:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy508;
+    goto yy195;
+yy495:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'x') goto yy502;
+    goto yy195;
+yy496:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'v') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 23;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy501:
+#line 124 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
+#line 4157 "cpp_re.inc"
+yy502:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 24;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy507:
+#line 122 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
+#line 4181 "cpp_re.inc"
+yy508:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 25;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy510:
+#line 121 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
+#line 4196 "cpp_re.inc"
+yy511:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 26;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy517:
+#line 123 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
+#line 4223 "cpp_re.inc"
+yy518:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy458;
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '1':    goto yy520;
+    case '3':    goto yy521;
+    case '6':    goto yy522;
+    case '8':    goto yy523;
+    default:    goto yy195;
+    }
+yy520:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '6') goto yy529;
+    goto yy195;
+yy521:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '2') goto yy527;
+    goto yy195;
+yy522:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '4') goto yy525;
+    goto yy195;
+yy523:
+    yyaccept = 27;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy524:
+#line 112 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
+#line 4264 "cpp_re.inc"
+yy525:
+    yyaccept = 28;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy526:
+#line 115 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
+#line 4276 "cpp_re.inc"
+yy527:
+    yyaccept = 29;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy528:
+#line 114 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
+#line 4288 "cpp_re.inc"
+yy529:
+    yyaccept = 30;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy530:
+#line 113 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
+#line 4300 "cpp_re.inc"
+yy531:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'h') goto yy537;
+    goto yy195;
+yy532:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 31;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy536:
+#line 110 "cpp.re"
+    { BOOST_WAVE_RET(T_WHILE); }
+#line 4326 "cpp_re.inc"
+yy537:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 32;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy542:
+#line 109 "cpp.re"
+    { BOOST_WAVE_RET(T_WCHART); }
+#line 4350 "cpp_re.inc"
+yy543:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy555;
+    goto yy195;
+yy544:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy545;
+    if (yych == 'l') goto yy546;
+    goto yy195;
+yy545:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy553;
+    goto yy195;
+yy546:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 33;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy552:
+#line 108 "cpp.re"
+    { BOOST_WAVE_RET(T_VOLATILE); }
+#line 4393 "cpp_re.inc"
+yy553:
+    yyaccept = 34;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy554:
+#line 107 "cpp.re"
+    { BOOST_WAVE_RET(T_VOID); }
+#line 4405 "cpp_re.inc"
+yy555:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 35;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy560:
+#line 106 "cpp.re"
+    { BOOST_WAVE_RET(T_VIRTUAL); }
+#line 4429 "cpp_re.inc"
+yy561:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy567;
+    if (yych == 's') goto yy568;
+    goto yy195;
+yy562:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 36;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy566:
+#line 105 "cpp.re"
+    { BOOST_WAVE_RET(T_USING); }
+#line 4456 "cpp_re.inc"
+yy567:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy575;
+    goto yy195;
+yy568:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 37;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy574:
+#line 104 "cpp.re"
+    { BOOST_WAVE_RET(T_UNSIGNED); }
+#line 4488 "cpp_re.inc"
+yy575:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 38;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy577:
+#line 103 "cpp.re"
+    { BOOST_WAVE_RET(T_UNION); }
+#line 4503 "cpp_re.inc"
+yy578:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy608;
+    goto yy195;
+yy579:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy601;
+    if (yych == 'r') goto yy602;
+    goto yy195;
+yy580:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy596;
+    if (yych == 'y') goto yy597;
+    goto yy195;
+yy581:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'd') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy585;
+        if (yych == 'n') goto yy586;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy593;
+    goto yy195;
+yy585:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy591;
+    goto yy195;
+yy586:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 39;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy590:
+#line 102 "cpp.re"
+    { BOOST_WAVE_RET(T_TYPENAME); }
+#line 4566 "cpp_re.inc"
+yy591:
+    yyaccept = 40;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy592:
+#line 101 "cpp.re"
+    { BOOST_WAVE_RET(T_TYPEID); }
+#line 4578 "cpp_re.inc"
+yy593:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 41;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy595:
+#line 100 "cpp.re"
+    { BOOST_WAVE_RET(T_TYPEDEF); }
+#line 4593 "cpp_re.inc"
+yy596:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy599;
+    goto yy195;
+yy597:
+    yyaccept = 42;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy598:
+#line 99 "cpp.re"
+    { BOOST_WAVE_RET(T_TRY); }
+#line 4610 "cpp_re.inc"
+yy599:
+    yyaccept = 43;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy600:
+#line 98 "cpp.re"
+    { BOOST_WAVE_RET(T_TRUE); }
+#line 4622 "cpp_re.inc"
+yy601:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy606;
+    goto yy195;
+yy602:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'w') goto yy195;
+    yyaccept = 44;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy605:
+#line 97 "cpp.re"
+    { BOOST_WAVE_RET(T_THROW); }
+#line 4645 "cpp_re.inc"
+yy606:
+    yyaccept = 45;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy607:
+#line 96 "cpp.re"
+    { BOOST_WAVE_RET(T_THIS); }
+#line 4657 "cpp_re.inc"
+yy608:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 46;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy614:
+#line 95 "cpp.re"
+    { BOOST_WAVE_RET(T_TEMPLATE); }
+#line 4684 "cpp_re.inc"
+yy615:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy650;
+    goto yy195;
+yy616:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'g') goto yy640;
+    if (yych == 'z') goto yy641;
+    goto yy195;
+yy617:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy624;
+    if (yych == 'r') goto yy625;
+    goto yy195;
+yy618:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 47;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy623:
+#line 94 "cpp.re"
+    { BOOST_WAVE_RET(T_SWITCH); }
+#line 4725 "cpp_re.inc"
+yy624:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy630;
+    goto yy195;
+yy625:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 48;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy629:
+#line 93 "cpp.re"
+    { BOOST_WAVE_RET(T_STRUCT); }
+#line 4751 "cpp_re.inc"
+yy630:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 49;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy634;
+            if (yych <= '`') goto yy633;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy633:
+#line 91 "cpp.re"
+    { BOOST_WAVE_RET(T_STATIC); }
+#line 4781 "cpp_re.inc"
+yy634:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 50;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy639:
+#line 92 "cpp.re"
+    { BOOST_WAVE_RET(T_STATICCAST); }
+#line 4805 "cpp_re.inc"
+yy640:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy646;
+    goto yy195;
+yy641:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 51;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy645:
+#line 90 "cpp.re"
+    { BOOST_WAVE_RET(T_SIZEOF); }
+#line 4831 "cpp_re.inc"
+yy646:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 52;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy649:
+#line 89 "cpp.re"
+    { BOOST_WAVE_RET(T_SIGNED); }
+#line 4849 "cpp_re.inc"
+yy650:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 53;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy653:
+#line 88 "cpp.re"
+    { BOOST_WAVE_RET(T_SHORT); }
+#line 4867 "cpp_re.inc"
+yy654:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'g') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy656;
+        if (yych == 't') goto yy657;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy676;
+    goto yy195;
+yy656:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy662;
+    goto yy195;
+yy657:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 54;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy661:
+#line 87 "cpp.re"
+    { BOOST_WAVE_RET(T_RETURN); }
+#line 4907 "cpp_re.inc"
+yy662:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 55;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy675:
+#line 86 "cpp.re"
+    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
+#line 4955 "cpp_re.inc"
+yy676:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 56;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy681:
+#line 85 "cpp.re"
+    { BOOST_WAVE_RET(T_REGISTER); }
+#line 4979 "cpp_re.inc"
+yy682:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy689;
+    if (yych == 'o') goto yy690;
+    goto yy195;
+yy683:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 57;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy688:
+#line 84 "cpp.re"
+    { BOOST_WAVE_RET(T_PUBLIC); }
+#line 5009 "cpp_re.inc"
+yy689:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'v') goto yy698;
+    goto yy195;
+yy690:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 58;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy697:
+#line 83 "cpp.re"
+    { BOOST_WAVE_RET(T_PROTECTED); }
+#line 5044 "cpp_re.inc"
+yy698:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 59;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy702:
+#line 82 "cpp.re"
+    { BOOST_WAVE_RET(T_PRIVATE); }
+#line 5065 "cpp_re.inc"
+yy703:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy710;
+    goto yy195;
+yy704:
+    yyaccept = 60;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy706;
+            if (yych <= '`') goto yy705;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy705:
+#line 223 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
+#line 5094 "cpp_re.inc"
+yy706:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 61;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy709:
+#line 207 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
+#line 5112 "cpp_re.inc"
+yy710:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 62;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy716:
+#line 81 "cpp.re"
+    { BOOST_WAVE_RET(T_OPERATOR); }
+#line 5139 "cpp_re.inc"
+yy717:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy728;
+    goto yy195;
+yy718:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'w') goto yy726;
+    goto yy195;
+yy719:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 63;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy722;
+            if (yych <= '`') goto yy721;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy721:
+#line 192 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
+#line 5176 "cpp_re.inc"
+yy722:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 64;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy725:
+#line 215 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
+#line 5194 "cpp_re.inc"
+yy726:
+    yyaccept = 65;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy727:
+#line 80 "cpp.re"
+    { BOOST_WAVE_RET(T_NEW); }
+#line 5206 "cpp_re.inc"
+yy728:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 66;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy735:
+#line 79 "cpp.re"
+    { BOOST_WAVE_RET(T_NAMESPACE); }
+#line 5236 "cpp_re.inc"
+yy736:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 67;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy742:
+#line 78 "cpp.re"
+    { BOOST_WAVE_RET(T_MUTABLE); }
+#line 5263 "cpp_re.inc"
+yy743:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 68;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy746:
+#line 77 "cpp.re"
+    { BOOST_WAVE_RET(T_LONG); }
+#line 5281 "cpp_re.inc"
+yy747:
+    yyaccept = 69;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy748:
+#line 73 "cpp.re"
+    { BOOST_WAVE_RET(T_IF); }
+#line 5293 "cpp_re.inc"
+yy749:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy758;
+    goto yy195;
+yy750:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy751;
+    if (yych == 't') goto yy752;
+    goto yy195;
+yy751:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy754;
+    goto yy195;
+yy752:
+    yyaccept = 70;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy753:
+#line 76 "cpp.re"
+    { BOOST_WAVE_RET(T_INT); }
+#line 5321 "cpp_re.inc"
+yy754:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 71;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy757:
+#line 75 "cpp.re"
+    { BOOST_WAVE_RET(T_INLINE); }
+#line 5339 "cpp_re.inc"
+yy758:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 72;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy762:
+#line 74 "cpp.re"
+    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
+#line 5360 "cpp_re.inc"
+yy763:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 73;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy766:
+#line 72 "cpp.re"
+    { BOOST_WAVE_RET(T_GOTO); }
+#line 5378 "cpp_re.inc"
+yy767:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy782;
+    goto yy195;
+yy768:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy778;
+    goto yy195;
+yy769:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy776;
+    goto yy195;
+yy770:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 74;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy775:
+#line 71 "cpp.re"
+    { BOOST_WAVE_RET(T_FRIEND); }
+#line 5417 "cpp_re.inc"
+yy776:
+    yyaccept = 75;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy777:
+#line 70 "cpp.re"
+    { BOOST_WAVE_RET(T_FOR); }
+#line 5429 "cpp_re.inc"
+yy778:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 76;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy781:
+#line 69 "cpp.re"
+    { BOOST_WAVE_RET(T_FLOAT); }
+#line 5447 "cpp_re.inc"
+yy782:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 77;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy785:
+#line 68 "cpp.re"
+    { BOOST_WAVE_RET(T_FALSE); }
+#line 5465 "cpp_re.inc"
+yy786:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy808;
+    goto yy195;
+yy787:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy805;
+    goto yy195;
+yy788:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy789;
+    if (yych == 't') goto yy790;
+    goto yy195;
+yy789:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy795;
+    if (yych == 'o') goto yy796;
+    goto yy195;
+yy790:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 78;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy794:
+#line 67 "cpp.re"
+    { BOOST_WAVE_RET(T_EXTERN); }
+#line 5508 "cpp_re.inc"
+yy795:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy800;
+    goto yy195;
+yy796:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 79;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy799:
+#line 66 "cpp.re"
+    { BOOST_WAVE_RET(T_EXPORT); }
+#line 5531 "cpp_re.inc"
+yy800:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 80;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy804:
+#line 65 "cpp.re"
+    { BOOST_WAVE_RET(T_EXPLICIT); }
+#line 5552 "cpp_re.inc"
+yy805:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 81;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy807:
+#line 64 "cpp.re"
+    { BOOST_WAVE_RET(T_ENUM); }
+#line 5567 "cpp_re.inc"
+yy808:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 82;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy810:
+#line 63 "cpp.re"
+    { BOOST_WAVE_RET(T_ELSE); }
+#line 5582 "cpp_re.inc"
+yy811:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'f') goto yy831;
+    if (yych == 'l') goto yy832;
+    goto yy195;
+yy812:
+    yyaccept = 83;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '9') {
+            if (yych == '$') goto yy194;
+            if (yych >= '0') goto yy194;
+        } else {
+            if (yych == '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '_') {
+            if (yych == '\\') goto yy196;
+            if (yych >= '_') goto yy194;
+        } else {
+            if (yych <= 't') {
+                if (yych >= 'a') goto yy194;
+            } else {
+                if (yych <= 'u') goto yy826;
+                if (yych <= 'z') goto yy194;
+            }
+        }
+    }
+yy813:
+#line 60 "cpp.re"
+    { BOOST_WAVE_RET(T_DO); }
+#line 5616 "cpp_re.inc"
+yy814:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 84;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy825:
+#line 62 "cpp.re"
+    { BOOST_WAVE_RET(T_DYNAMICCAST); }
+#line 5658 "cpp_re.inc"
+yy826:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 85;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy830:
+#line 61 "cpp.re"
+    { BOOST_WAVE_RET(T_DOUBLE); }
+#line 5679 "cpp_re.inc"
+yy831:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy837;
+    goto yy195;
+yy832:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 86;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy836:
+#line 59 "cpp.re"
+    { BOOST_WAVE_RET(T_DELETE); }
+#line 5705 "cpp_re.inc"
+yy837:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 87;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy841:
+#line 58 "cpp.re"
+    { BOOST_WAVE_RET(T_DEFAULT); }
+#line 5726 "cpp_re.inc"
+yy842:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy873;
+    if (yych <= 't') goto yy874;
+    goto yy195;
+yy843:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy870;
+    goto yy195;
+yy844:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy866;
+    goto yy195;
+yy845:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') goto yy195;
+    if (yych <= 'm') goto yy847;
+    if (yych >= 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy851;
+    if (yych <= 't') goto yy852;
+    goto yy195;
+yy847:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 88;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy850:
+#line 190 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
+#line 5773 "cpp_re.inc"
+yy851:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy858;
+    goto yy195;
+yy852:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 89;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy857:
+#line 57 "cpp.re"
+    { BOOST_WAVE_RET(T_CONTINUE); }
+#line 5802 "cpp_re.inc"
+yy858:
+    yyaccept = 90;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy860;
+            if (yych <= '`') goto yy859;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy859:
+#line 55 "cpp.re"
+    { BOOST_WAVE_RET(T_CONST); }
+#line 5826 "cpp_re.inc"
+yy860:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 91;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy865:
+#line 56 "cpp.re"
+    { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 5850 "cpp_re.inc"
+yy866:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 92;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy869:
+#line 54 "cpp.re"
+    { BOOST_WAVE_RET(T_CLASS); }
+#line 5868 "cpp_re.inc"
+yy870:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 93;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy872:
+#line 53 "cpp.re"
+    { BOOST_WAVE_RET(T_CHAR); }
+#line 5883 "cpp_re.inc"
+yy873:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy878;
+    goto yy195;
+yy874:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 94;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy877:
+#line 52 "cpp.re"
+    { BOOST_WAVE_RET(T_CATCH); }
+#line 5906 "cpp_re.inc"
+yy878:
+    yyaccept = 95;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy879:
+#line 51 "cpp.re"
+    { BOOST_WAVE_RET(T_CASE); }
+#line 5918 "cpp_re.inc"
+yy880:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy890;
+    goto yy195;
+yy881:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy887;
+    goto yy195;
+yy882:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'k') goto yy195;
+    yyaccept = 96;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy886:
+#line 50 "cpp.re"
+    { BOOST_WAVE_RET(T_BREAK); }
+#line 5949 "cpp_re.inc"
+yy887:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 97;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy889:
+#line 49 "cpp.re"
+    { BOOST_WAVE_RET(T_BOOL); }
+#line 5964 "cpp_re.inc"
+yy890:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy891;
+    if (yych == 'o') goto yy892;
+    goto yy195;
+yy891:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy895;
+    goto yy195;
+yy892:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 98;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy894:
+#line 186 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
+#line 5990 "cpp_re.inc"
+yy895:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 99;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy897:
+#line 184 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
+#line 6005 "cpp_re.inc"
+yy898:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy906;
+    goto yy195;
+yy899:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy904;
+    goto yy195;
+yy900:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 100;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy903:
+#line 48 "cpp.re"
+    { BOOST_WAVE_RET(T_AUTO); }
+#line 6033 "cpp_re.inc"
+yy904:
+    yyaccept = 101;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy905:
+#line 47 "cpp.re"
+    { BOOST_WAVE_RET(T_ASM); }
+#line 6045 "cpp_re.inc"
+yy906:
+    yyaccept = 102;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '@') {
+        if (yych <= '/') {
+            if (yych == '$') goto yy194;
+        } else {
+            if (yych <= '9') goto yy194;
+            if (yych == '?') goto yy197;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych <= 'Z') goto yy194;
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy908;
+            if (yych <= '`') goto yy907;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy907:
+#line 219 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
+#line 6069 "cpp_re.inc"
+yy908:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 103;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy911:
+#line 205 "cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
+#line 6087 "cpp_re.inc"
+yy912:
+    ++YYCURSOR;
+#line 166 "cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_DOT);
+            }
+            else {
+                BOOST_WAVE_RET(T_DOTSTAR); 
+            }
+        }
+#line 6100 "cpp_re.inc"
+yy914:
+    yych = *++YYCURSOR;
+    if (yych == '.') goto yy916;
+    goto yy98;
+yy915:
+    yych = *++YYCURSOR;
+    goto yy7;
+yy916:
+    ++YYCURSOR;
+#line 152 "cpp.re"
+    { BOOST_WAVE_RET(T_ELLIPSIS); }
+#line 6112 "cpp_re.inc"
+yy918:
+    ++YYCURSOR;
+#line 199 "cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
+#line 6117 "cpp_re.inc"
+yy920:
+    ++YYCURSOR;
+#line 44 "cpp.re"
+    { goto cppcomment; }
+#line 6122 "cpp_re.inc"
+yy922:
+    ++YYCURSOR;
+#line 43 "cpp.re"
+    { goto ccomment; }
+#line 6127 "cpp_re.inc"
+}
+#line 308 "cpp.re"
+
+
+ccomment:
+
+#line 6134 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0C) {
+        if (yych <= 0x08) {
+            if (yych <= 0x00) goto yy933;
+            goto yy935;
+        } else {
+            if (yych == 0x0A) goto yy928;
+            goto yy931;
+        }
+    } else {
+        if (yych <= 0x1F) {
+            if (yych <= 0x0D) goto yy930;
+            goto yy935;
+        } else {
+            if (yych != '*') goto yy932;
+        }
+    }
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '/') goto yy938;
+yy927:
+#line 323 "cpp.re"
+    { goto ccomment; }
+#line 6160 "cpp_re.inc"
+yy928:
+    ++YYCURSOR;
+yy929:
+#line 315 "cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
+        /*s->tok = cursor; */
+        s->line += count_backslash_newlines(s, cursor) +1;
+        cursor.column = 1;
+        goto ccomment;
+    }
+#line 6172 "cpp_re.inc"
+yy930:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy937;
+    goto yy929;
+yy931:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy932:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy933:
+    ++YYCURSOR;
+#line 326 "cpp.re"
+    {
+        if(cursor == s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning, 
+                "Unterminated 'C' style comment");
+        }
+        else
+        {
+            --YYCURSOR;                   // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character: '\\000' in input stream");
+        }
+    }
+#line 6201 "cpp_re.inc"
+yy935:
+    ++YYCURSOR;
+#line 343 "cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6211 "cpp_re.inc"
+yy937:
+    yych = *++YYCURSOR;
+    goto yy929;
+yy938:
+    ++YYCURSOR;
+#line 312 "cpp.re"
+    { BOOST_WAVE_RET(T_CCOMMENT); }
+#line 6219 "cpp_re.inc"
+}
+#line 349 "cpp.re"
+
+
+cppcomment:
+
+#line 6226 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0A) {
+        if (yych <= 0x00) goto yy948;
+        if (yych <= 0x08) goto yy950;
+        if (yych <= 0x09) goto yy945;
+    } else {
+        if (yych <= 0x0C) goto yy945;
+        if (yych <= 0x0D) goto yy944;
+        if (yych <= 0x1F) goto yy950;
+        goto yy947;
+    }
+    ++YYCURSOR;
+yy943:
+#line 354 "cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
+        /*s->tok = cursor; */
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6251 "cpp_re.inc"
+yy944:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy952;
+    goto yy943;
+yy945:
+    ++YYCURSOR;
+yy946:
+#line 362 "cpp.re"
+    { goto cppcomment; }
+#line 6261 "cpp_re.inc"
+yy947:
+    yych = *++YYCURSOR;
+    goto yy946;
+yy948:
+    ++YYCURSOR;
+#line 365 "cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            --YYCURSOR;                     // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        
+        --YYCURSOR;                         // next call returns T_EOF
+        if (!s->single_line_only)
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "Unterminated 'C++' style comment");
+        }
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6286 "cpp_re.inc"
+yy950:
+    ++YYCURSOR;
+#line 385 "cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6296 "cpp_re.inc"
+yy952:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy943;
+}
+#line 391 "cpp.re"
+
+
+/* this subscanner is called whenever a pp_number has been started */
+pp_number:
+{
+    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
+    marker = uchar_wrapper(s->ptr);
+    limit = uchar_wrapper(s->lim);
+
+    if (s->detect_pp_numbers) {
+    
+#line 6314 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,  64,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,  64,   0, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,   0,   0,   0,   0,   0,   0, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,  64, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych == '.') goto yy956;
+    if (yych <= '/') goto yy955;
+    if (yych <= '9') goto yy957;
+yy955:
+    YYCURSOR = YYMARKER;
+    goto yy959;
+yy956:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy955;
+    if (yych >= ':') goto yy955;
+yy957:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy957;
+    }
+    if (yych <= 'Z') {
+        if (yych == '?') goto yy963;
+        if (yych >= 'A') goto yy960;
+    } else {
+        if (yych <= '\\') {
+            if (yych >= '\\') goto yy962;
+        } else {
+            if (yych == 'e') goto yy960;
+        }
+    }
+yy959:
+#line 403 "cpp.re"
+    { BOOST_WAVE_RET(T_PP_NUMBER); }
+#line 6383 "cpp_re.inc"
+yy960:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy960;
+    }
+    if (yych <= '>') {
+        if (yych <= '+') {
+            if (yych == '$') goto yy957;
+            if (yych <= '*') goto yy959;
+            goto yy957;
+        } else {
+            if (yych <= '.') {
+                if (yych <= ',') goto yy959;
+                goto yy957;
+            } else {
+                if (yych <= '/') goto yy959;
+                if (yych <= '9') goto yy957;
+                goto yy959;
+            }
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= '@') {
+                if (yych <= '?') goto yy963;
+                goto yy959;
+            } else {
+                if (yych <= 'Z') goto yy957;
+                if (yych <= '[') goto yy959;
+            }
+        } else {
+            if (yych <= '_') {
+                if (yych <= '^') goto yy959;
+                goto yy957;
+            } else {
+                if (yych <= '`') goto yy959;
+                if (yych <= 'z') goto yy957;
+                goto yy959;
+            }
+        }
+    }
+yy962:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy966;
+    if (yych == 'u') goto yy965;
+    goto yy955;
+yy963:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy955;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy962;
+    goto yy955;
+yy965:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy974;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy974;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy974;
+        goto yy955;
+    }
+yy966:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy967;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy967:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy968;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy968:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy969;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy969:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy970;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy970:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy971;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy971:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy972;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy972:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy973;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy973:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+yy974:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy975;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy975:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy976;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy976:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+}
+#line 404 "cpp.re"
+
+    }
+    else {
+    
+#line 6599 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+        224, 224, 224, 224, 224, 224, 224, 224, 
+        160, 160,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+    yych = *YYCURSOR;
+    if (yych <= '/') {
+        if (yych == '.') goto yy984;
+    } else {
+        if (yych <= '0') goto yy980;
+        if (yych <= '9') goto yy982;
+    }
+yy979:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 0) {
+        goto yy981;
+    } else {
+        goto yy987;
+    }
+yy980:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= 'E') {
+        if (yych <= '/') {
+            if (yych == '.') goto yy985;
+        } else {
+            if (yych <= '9') goto yy1002;
+            if (yych >= 'E') goto yy995;
+        }
+    } else {
+        if (yych <= 'd') {
+            if (yych == 'X') goto yy1001;
+        } else {
+            if (yych <= 'e') goto yy995;
+            if (yych == 'x') goto yy1001;
+        }
+    }
+yy981:
+#line 411 "cpp.re"
+    { goto integer_suffix; }
+#line 6676 "cpp_re.inc"
+yy982:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy982;
+    }
+    if (yych <= 'D') {
+        if (yych == '.') goto yy985;
+        goto yy981;
+    } else {
+        if (yych <= 'E') goto yy995;
+        if (yych == 'e') goto yy995;
+        goto yy981;
+    }
+yy984:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy985:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= 'D') {
+            if (yych <= '/') goto yy987;
+            if (yych <= '9') goto yy985;
+        } else {
+            if (yych <= 'E') goto yy988;
+            if (yych <= 'F') goto yy989;
+        }
+    } else {
+        if (yych <= 'e') {
+            if (yych <= 'L') goto yy990;
+            if (yych >= 'e') goto yy988;
+        } else {
+            if (yych <= 'f') goto yy989;
+            if (yych == 'l') goto yy990;
+        }
+    }
+yy987:
+#line 409 "cpp.re"
+    { BOOST_WAVE_RET(T_FLOATLIT); }
+#line 6722 "cpp_re.inc"
+yy988:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych == '+') goto yy992;
+        goto yy979;
+    } else {
+        if (yych <= '-') goto yy992;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy993;
+        goto yy979;
+    }
+yy989:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy991;
+    if (yych == 'l') goto yy991;
+    goto yy987;
+yy990:
+    yych = *++YYCURSOR;
+    if (yych == 'F') goto yy991;
+    if (yych != 'f') goto yy987;
+yy991:
+    yych = *++YYCURSOR;
+    goto yy987;
+yy992:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy993:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy993;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy995:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych != '+') goto yy979;
+    } else {
+        if (yych <= '-') goto yy996;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy997;
+        goto yy979;
+    }
+yy996:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy997:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy997;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy999:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy981;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy981;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy981;
+        }
+    }
+yy1001:
+    yych = *++YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy979;
+yy1002:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy979;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy979;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy979;
+        }
+    }
+yy1004:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy981;
+}
+#line 412 "cpp.re"
+
+    }
+}
+
+/* this subscanner is called, whenever a Integer was recognized */
+integer_suffix:
+{
+    if (s->enable_ms_extensions) {
+    
+#line 6871 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *(YYMARKER = YYCURSOR);
+    if (yych <= 'h') {
+        if (yych <= 'L') {
+            if (yych >= 'L') goto yy1010;
+        } else {
+            if (yych == 'U') goto yy1009;
+        }
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'i') goto yy1011;
+            if (yych >= 'l') goto yy1010;
+        } else {
+            if (yych == 'u') goto yy1009;
+        }
+    }
+yy1008:
+#line 425 "cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6893 "cpp_re.inc"
+yy1009:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1018;
+    if (yych == 'l') goto yy1018;
+    goto yy1008;
+yy1010:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1017;
+        if (yych <= 'T') goto yy1008;
+        goto yy1016;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1008;
+            goto yy1017;
+        } else {
+            if (yych == 'u') goto yy1016;
+            goto yy1008;
+        }
+    }
+yy1011:
+    yych = *++YYCURSOR;
+    if (yych == '6') goto yy1013;
+yy1012:
+    YYCURSOR = YYMARKER;
+    goto yy1008;
+yy1013:
+    yych = *++YYCURSOR;
+    if (yych != '4') goto yy1012;
+yy1014:
+    ++YYCURSOR;
+yy1015:
+#line 422 "cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6928 "cpp_re.inc"
+yy1016:
+    yych = *++YYCURSOR;
+    goto yy1008;
+yy1017:
+    yych = *++YYCURSOR;
+    if (yych == 'U') goto yy1014;
+    if (yych == 'u') goto yy1014;
+    goto yy1015;
+yy1018:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1014;
+    if (yych == 'l') goto yy1014;
+    goto yy1008;
+}
+#line 426 "cpp.re"
+
+    }
+    else {
+    
+#line 6948 "cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1023;
+        if (yych >= 'U') goto yy1022;
+    } else {
+        if (yych <= 'l') {
+            if (yych >= 'l') goto yy1023;
+        } else {
+            if (yych == 'u') goto yy1022;
+        }
+    }
+yy1021:
+#line 434 "cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6966 "cpp_re.inc"
+yy1022:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1028;
+    if (yych == 'l') goto yy1028;
+    goto yy1021;
+yy1023:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1025;
+        if (yych <= 'T') goto yy1021;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1021;
+            goto yy1025;
+        } else {
+            if (yych != 'u') goto yy1021;
+        }
+    }
+    yych = *++YYCURSOR;
+    goto yy1021;
+yy1025:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'U') goto yy1027;
+    if (yych == 'u') goto yy1027;
+yy1026:
+#line 431 "cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6994 "cpp_re.inc"
+yy1027:
+    yych = *++YYCURSOR;
+    goto yy1026;
+yy1028:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1027;
+    if (yych == 'l') goto yy1027;
+    goto yy1021;
+}
+#line 435 "cpp.re"
+
+    }
+}
Modified: branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re
==============================================================================
--- branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re	(original)
+++ branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -1,8 +1,10 @@
+/* Generated by re2c 0.13.2 on Fri Apr 04 14:19:15 2008 */
+#line 1 "strict_cpp.re"
 /*=============================================================================
     Boost.Wave: A Standard compliant C++ preprocessor library
 
     Copyright (c) 2001 Daniel C. Nuffer
-    Copyright (c) 2001-2008 Hartmut Kaiser. 
+    Copyright (c) 2001-2008 Hartmut Kaiser. 
     Distributed under the Boost Software License, Version 1.0. (See accompanying 
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 
@@ -15,144 +17,3632 @@
         handle errors better.
 =============================================================================*/
 
-/*!re2c
-re2c:indent:string = "    "; 
-any                = [\t\v\f\r\n\040-\377];
-anyctrl            = [\001-\037];
-OctalDigit         = [0-7];
-Digit              = [0-9];
-HexDigit           = [a-fA-F0-9];
-Integer            = (("0" [xX] HexDigit+) | ("0" OctalDigit*) | ([1-9] Digit*));
-ExponentStart      = [Ee] [+-];
-ExponentPart       = [Ee] [+-]? Digit+;
-FractionalConstant = (Digit* "." Digit+) | (Digit+ ".");
-FloatingSuffix     = [fF] [lL]? | [lL] [fF]?;
-IntegerSuffix      = [uU] [lL]? | [lL] [uU]?;
-LongIntegerSuffix  = [uU] ([lL] [lL]) | ([lL] [lL]) [uU]?;
-Backslash          = [\\] | "??/";
-EscapeSequence     = Backslash ([abfnrtv?'"] | Backslash | "x" HexDigit+ | OctalDigit OctalDigit? OctalDigit?);
-HexQuad            = HexDigit HexDigit HexDigit HexDigit;
-UniversalChar      = Backslash ("u" HexQuad | "U" HexQuad HexQuad);
-Newline            = "\r\n" | "\n" | "\r";
-PPSpace            = ([ \t\f\v]|("/*"(any\[*]|Newline|("*"+(any\[*/]|Newline)))*"*"+"/"))*;
-Pound              = "#" | "??=" | "%:";
-NonDigit           = [a-zA-Z_] | UniversalChar;
-*/
-
-/*!re2c
-    "/*"            { goto ccomment; }
-    "//"            { goto cppcomment; }
-    "."? Digit      { goto pp_number; }
-
-    "asm"           { BOOST_WAVE_RET(T_ASM); }
-    "auto"          { BOOST_WAVE_RET(T_AUTO); }
-    "bool"          { BOOST_WAVE_RET(T_BOOL); }
-    "break"         { BOOST_WAVE_RET(T_BREAK); }
-    "case"          { BOOST_WAVE_RET(T_CASE); }
-    "catch"         { BOOST_WAVE_RET(T_CATCH); }
-    "char"          { BOOST_WAVE_RET(T_CHAR); }
-    "class"         { BOOST_WAVE_RET(T_CLASS); }
-    "const"         { BOOST_WAVE_RET(T_CONST); }
-    "const_cast"    { BOOST_WAVE_RET(T_CONSTCAST); }
-    "continue"      { BOOST_WAVE_RET(T_CONTINUE); }
-    "default"       { BOOST_WAVE_RET(T_DEFAULT); }
-    "delete"        { BOOST_WAVE_RET(T_DELETE); }
-    "do"            { BOOST_WAVE_RET(T_DO); }
-    "double"        { BOOST_WAVE_RET(T_DOUBLE); }
-    "dynamic_cast"  { BOOST_WAVE_RET(T_DYNAMICCAST); }
-    "else"          { BOOST_WAVE_RET(T_ELSE); }
-    "enum"          { BOOST_WAVE_RET(T_ENUM); }
-    "explicit"      { BOOST_WAVE_RET(T_EXPLICIT); }
-    "export"        { BOOST_WAVE_RET(T_EXPORT); }
-    "extern"        { BOOST_WAVE_RET(T_EXTERN); }
-    "false"         { BOOST_WAVE_RET(T_FALSE); }
-    "float"         { BOOST_WAVE_RET(T_FLOAT); }
-    "for"           { BOOST_WAVE_RET(T_FOR); }
-    "friend"        { BOOST_WAVE_RET(T_FRIEND); }
-    "goto"          { BOOST_WAVE_RET(T_GOTO); }
-    "if"            { BOOST_WAVE_RET(T_IF); }
-    "import"        { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-    "inline"        { BOOST_WAVE_RET(T_INLINE); }
-    "int"           { BOOST_WAVE_RET(T_INT); }
-    "long"          { BOOST_WAVE_RET(T_LONG); }
-    "mutable"       { BOOST_WAVE_RET(T_MUTABLE); }
-    "namespace"     { BOOST_WAVE_RET(T_NAMESPACE); }
-    "new"           { BOOST_WAVE_RET(T_NEW); }
-    "operator"      { BOOST_WAVE_RET(T_OPERATOR); }
-    "private"       { BOOST_WAVE_RET(T_PRIVATE); }
-    "protected"     { BOOST_WAVE_RET(T_PROTECTED); }
-    "public"        { BOOST_WAVE_RET(T_PUBLIC); }
-    "register"      { BOOST_WAVE_RET(T_REGISTER); }
-    "reinterpret_cast" { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-    "return"        { BOOST_WAVE_RET(T_RETURN); }
-    "short"         { BOOST_WAVE_RET(T_SHORT); }
-    "signed"        { BOOST_WAVE_RET(T_SIGNED); }
-    "sizeof"        { BOOST_WAVE_RET(T_SIZEOF); }
-    "static"        { BOOST_WAVE_RET(T_STATIC); }
-    "static_cast"   { BOOST_WAVE_RET(T_STATICCAST); }
-    "struct"        { BOOST_WAVE_RET(T_STRUCT); }
-    "switch"        { BOOST_WAVE_RET(T_SWITCH); }
-    "template"      { BOOST_WAVE_RET(T_TEMPLATE); }
-    "this"          { BOOST_WAVE_RET(T_THIS); }
-    "throw"         { BOOST_WAVE_RET(T_THROW); }
-    "true"          { BOOST_WAVE_RET(T_TRUE); }
-    "try"           { BOOST_WAVE_RET(T_TRY); }
-    "typedef"       { BOOST_WAVE_RET(T_TYPEDEF); }
-    "typeid"        { BOOST_WAVE_RET(T_TYPEID); }
-    "typename"      { BOOST_WAVE_RET(T_TYPENAME); }
-    "union"         { BOOST_WAVE_RET(T_UNION); }
-    "unsigned"      { BOOST_WAVE_RET(T_UNSIGNED); }
-    "using"         { BOOST_WAVE_RET(T_USING); }
-    "virtual"       { BOOST_WAVE_RET(T_VIRTUAL); }
-    "void"          { BOOST_WAVE_RET(T_VOID); }
-    "volatile"      { BOOST_WAVE_RET(T_VOLATILE); }
-    "wchar_t"       { BOOST_WAVE_RET(T_WCHART); }
-    "while"         { BOOST_WAVE_RET(T_WHILE); }
-
-    "__int8"        { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-    "__int16"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-    "__int32"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-    "__int64"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-    "_"? "_based"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-    "_"? "_declspec" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-    "_"? "_cdecl"   { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-    "_"? "_fastcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-    "_"? "_stdcall" { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-    "__try"         { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-    "__except"      { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-    "__finally"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-    "__leave"       { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-    "_"? "_inline"  { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-    "_"? "_asm"     { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-
-    "{"             { BOOST_WAVE_RET(T_LEFTBRACE); }
-    "??<"           { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-    "<%"            { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-    "}"             { BOOST_WAVE_RET(T_RIGHTBRACE); }
-    "??>"           { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-    "%>"            { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-    "["             { BOOST_WAVE_RET(T_LEFTBRACKET); }
-    "??("           { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-    "<:"            { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-    "]"             { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-    "??)"           { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-    ":>"            { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-    "#"             { BOOST_WAVE_RET(T_POUND); }
-    "%:"            { BOOST_WAVE_RET(T_POUND_ALT); }
-    "??="           { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-    "##"            { BOOST_WAVE_RET(T_POUND_POUND); }
-    "#??="          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=#"          { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "??=??="        { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-    "%:%:"          { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-    "("             { BOOST_WAVE_RET(T_LEFTPAREN); }
-    ")"             { BOOST_WAVE_RET(T_RIGHTPAREN); }
-    ";"             { BOOST_WAVE_RET(T_SEMICOLON); }
-    ":"             { BOOST_WAVE_RET(T_COLON); }
-    "..."           { BOOST_WAVE_RET(T_ELLIPSIS); }
-    "?"             { BOOST_WAVE_RET(T_QUESTION_MARK); }
-    "::"            
-        { 
+#line 40 "strict_cpp.re"
+
+
+
+#line 25 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  58,  32,  58,  58,  64,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         58,  58,  50,  58,  58,  58,  58,  56, 
+         58,  58, 154,  58,  58,  58,  58,  58, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  58,  58,  58,  58,  42,  56, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  57,  58,  58,  62, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+        /* table 9 .. 12: 256 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  48,   0,  48,  48,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         48,  32,   0,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         96,  96,  96,  96,  96,  96,  96,  96, 
+         96,  96,  32,  32,  32,  32,  32, 128, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,   0,  32,  32,  32, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+    };
+
+    if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+    yych = *YYCURSOR;
+    switch (yych) {
+    case 0x00:    goto yy88;
+    case 0x01:
+    case 0x02:
+    case 0x03:
+    case 0x04:
+    case 0x05:
+    case 0x06:
+    case 0x07:
+    case 0x08:
+    case 0x0E:
+    case 0x0F:
+    case 0x10:
+    case 0x11:
+    case 0x12:
+    case 0x13:
+    case 0x14:
+    case 0x15:
+    case 0x16:
+    case 0x17:
+    case 0x18:
+    case 0x19:
+    case 0x1A:
+    case 0x1B:
+    case 0x1C:
+    case 0x1D:
+    case 0x1E:
+    case 0x1F:    goto yy91;
+    case 0x09:
+    case 0x0B:
+    case 0x0C:    goto yy82;
+    case 0x0A:    goto yy85;
+    case 0x0D:    goto yy87;
+    case ' ':    goto yy84;
+    case '!':    goto yy68;
+    case '"':    goto yy81;
+    case '#':    goto yy45;
+    case '%':    goto yy37;
+    case '&':    goto yy62;
+    case '\'':    goto yy80;
+    case '(':    goto yy47;
+    case ')':    goto yy49;
+    case '*':    goto yy57;
+    case '+':    goto yy53;
+    case ',':    goto yy74;
+    case '-':    goto yy55;
+    case '.':    goto yy4;
+    case '/':    goto yy2;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':    goto yy6;
+    case ':':    goto yy43;
+    case ';':    goto yy51;
+    case '<':    goto yy33;
+    case '=':    goto yy70;
+    case '>':    goto yy72;
+    case '?':    goto yy31;
+    case 'A':
+    case 'B':
+    case 'C':
+    case 'D':
+    case 'E':
+    case 'F':
+    case 'G':
+    case 'H':
+    case 'I':
+    case 'J':
+    case 'K':
+    case 'M':
+    case 'N':
+    case 'O':
+    case 'P':
+    case 'Q':
+    case 'R':
+    case 'S':
+    case 'T':
+    case 'U':
+    case 'V':
+    case 'W':
+    case 'X':
+    case 'Y':
+    case 'Z':
+    case 'h':
+    case 'j':
+    case 'k':
+    case 'q':
+    case 'y':
+    case 'z':    goto yy76;
+    case 'L':    goto yy77;
+    case '[':    goto yy39;
+    case '\\':    goto yy78;
+    case ']':    goto yy41;
+    case '^':    goto yy59;
+    case '_':    goto yy28;
+    case 'a':    goto yy8;
+    case 'b':    goto yy10;
+    case 'c':    goto yy11;
+    case 'd':    goto yy12;
+    case 'e':    goto yy13;
+    case 'f':    goto yy14;
+    case 'g':    goto yy15;
+    case 'i':    goto yy16;
+    case 'l':    goto yy17;
+    case 'm':    goto yy18;
+    case 'n':    goto yy19;
+    case 'o':    goto yy20;
+    case 'p':    goto yy21;
+    case 'r':    goto yy22;
+    case 's':    goto yy23;
+    case 't':    goto yy24;
+    case 'u':    goto yy25;
+    case 'v':    goto yy26;
+    case 'w':    goto yy27;
+    case 'x':    goto yy61;
+    case '{':    goto yy29;
+    case '|':    goto yy64;
+    case '}':    goto yy35;
+    case '~':    goto yy66;
+    default:    goto yy90;
+    }
+yy2:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '.') {
+        if (yych == '*') goto yy922;
+    } else {
+        if (yych <= '/') goto yy920;
+        if (yych == '=') goto yy918;
+    }
+#line 178 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDE); }
+#line 237 "strict_cpp_re.inc"
+yy4:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '-') {
+        if (yych == '*') goto yy912;
+    } else {
+        if (yych <= '.') goto yy914;
+        if (yych <= '/') goto yy5;
+        if (yych <= '9') goto yy915;
+    }
+yy5:
+#line 164 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOT); }
+#line 251 "strict_cpp_re.inc"
+yy6:
+    ++YYCURSOR;
+yy7:
+#line 45 "strict_cpp.re"
+    { goto pp_number; }
+#line 257 "strict_cpp_re.inc"
+yy8:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') {
+        if (yych == 'n') goto yy898;
+        goto yy195;
+    } else {
+        if (yych <= 's') goto yy899;
+        if (yych == 'u') goto yy900;
+        goto yy195;
+    }
+yy9:
+#line 243 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IDENTIFIER); }
+#line 272 "strict_cpp_re.inc"
+yy10:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'i') goto yy880;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy881;
+        if (yych == 'r') goto yy882;
+        goto yy195;
+    }
+yy11:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy842;
+    case 'h':    goto yy843;
+    case 'l':    goto yy844;
+    case 'o':    goto yy845;
+    default:    goto yy195;
+    }
+yy12:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'e') goto yy811;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy812;
+        if (yych == 'y') goto yy814;
+        goto yy195;
+    }
+yy13:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy786;
+        goto yy195;
+    } else {
+        if (yych <= 'n') goto yy787;
+        if (yych == 'x') goto yy788;
+        goto yy195;
+    }
+yy14:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy767;
+    case 'l':    goto yy768;
+    case 'o':    goto yy769;
+    case 'r':    goto yy770;
+    default:    goto yy195;
+    }
+yy15:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy763;
+    goto yy195;
+yy16:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') {
+        if (yych == 'f') goto yy747;
+        goto yy195;
+    } else {
+        if (yych <= 'm') goto yy749;
+        if (yych <= 'n') goto yy750;
+        goto yy195;
+    }
+yy17:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy743;
+    goto yy195;
+yy18:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy736;
+    goto yy195;
+yy19:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'd') {
+        if (yych == 'a') goto yy717;
+        goto yy195;
+    } else {
+        if (yych <= 'e') goto yy718;
+        if (yych == 'o') goto yy719;
+        goto yy195;
+    }
+yy20:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy703;
+    if (yych == 'r') goto yy704;
+    goto yy195;
+yy21:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy682;
+    if (yych == 'u') goto yy683;
+    goto yy195;
+yy22:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy654;
+    goto yy195;
+yy23:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 's') {
+        if (yych <= 'g') goto yy195;
+        if (yych <= 'h') goto yy615;
+        if (yych <= 'i') goto yy616;
+        goto yy195;
+    } else {
+        if (yych <= 't') goto yy617;
+        if (yych == 'w') goto yy618;
+        goto yy195;
+    }
+yy24:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych == 'e') goto yy578;
+        if (yych <= 'g') goto yy195;
+        goto yy579;
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'q') goto yy195;
+            goto yy580;
+        } else {
+            if (yych == 'y') goto yy581;
+            goto yy195;
+        }
+    }
+yy25:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy561;
+    if (yych == 's') goto yy562;
+    goto yy195;
+yy26:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy543;
+    if (yych == 'o') goto yy544;
+    goto yy195;
+yy27:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'c') goto yy531;
+    if (yych == 'h') goto yy532;
+    goto yy195;
+yy28:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '_':    goto yy442;
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'f':    goto yy447;
+    case 'i':    goto yy448;
+    case 's':    goto yy449;
+    default:    goto yy195;
+    }
+yy29:
+    ++YYCURSOR;
+#line 128 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE); }
+#line 445 "strict_cpp_re.inc"
+yy31:
+    yyaccept = 2;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '?') goto yy407;
+yy32:
+#line 153 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_QUESTION_MARK); }
+#line 453 "strict_cpp_re.inc"
+yy33:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= ':') {
+        if (yych == '%') goto yy403;
+        if (yych >= ':') goto yy401;
+    } else {
+        if (yych <= ';') goto yy34;
+        if (yych <= '<') goto yy399;
+        if (yych <= '=') goto yy397;
+    }
+yy34:
+#line 194 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESS); }
+#line 467 "strict_cpp_re.inc"
+yy35:
+    ++YYCURSOR;
+#line 131 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE); }
+#line 472 "strict_cpp_re.inc"
+yy37:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == ':') goto yy388;
+    } else {
+        if (yych <= '=') goto yy390;
+        if (yych <= '>') goto yy392;
+    }
+#line 179 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENT); }
+#line 483 "strict_cpp_re.inc"
+yy39:
+    ++YYCURSOR;
+#line 134 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET); }
+#line 488 "strict_cpp_re.inc"
+yy41:
+    ++YYCURSOR;
+#line 137 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
+#line 493 "strict_cpp_re.inc"
+yy43:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == ':') goto yy384;
+    if (yych == '>') goto yy386;
+#line 151 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COLON); }
+#line 500 "strict_cpp_re.inc"
+yy45:
+    yyaccept = 3;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy272;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy271;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy46;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy46:
+#line 140 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND); }
+#line 541 "strict_cpp_re.inc"
+yy47:
+    ++YYCURSOR;
+#line 148 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTPAREN); }
+#line 546 "strict_cpp_re.inc"
+yy49:
+    ++YYCURSOR;
+#line 149 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTPAREN); }
+#line 551 "strict_cpp_re.inc"
+yy51:
+    ++YYCURSOR;
+#line 150 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SEMICOLON); }
+#line 556 "strict_cpp_re.inc"
+yy53:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '+') goto yy256;
+    if (yych == '=') goto yy258;
+#line 175 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUS); }
+#line 563 "strict_cpp_re.inc"
+yy55:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == '-') goto yy250;
+    } else {
+        if (yych <= '=') goto yy252;
+        if (yych <= '>') goto yy248;
+    }
+#line 176 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUS); }
+#line 574 "strict_cpp_re.inc"
+yy57:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy246;
+#line 177 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STAR); }
+#line 580 "strict_cpp_re.inc"
+yy59:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy244;
+#line 180 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR); }
+#line 586 "strict_cpp_re.inc"
+yy61:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy237;
+    goto yy195;
+yy62:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '&') goto yy233;
+    if (yych == '=') goto yy235;
+#line 183 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AND); }
+#line 598 "strict_cpp_re.inc"
+yy64:
+    yyaccept = 4;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy228;
+    } else {
+        if (yych <= '?') goto yy225;
+        if (yych == '|') goto yy226;
+    }
+yy65:
+#line 185 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR); }
+#line 611 "strict_cpp_re.inc"
+yy66:
+    ++YYCURSOR;
+#line 188 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL); }
+#line 616 "strict_cpp_re.inc"
+yy68:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy223;
+#line 191 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOT); }
+#line 622 "strict_cpp_re.inc"
+yy70:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy221;
+#line 193 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASSIGN); }
+#line 628 "strict_cpp_re.inc"
+yy72:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') goto yy73;
+    if (yych <= '=') goto yy215;
+    if (yych <= '>') goto yy217;
+yy73:
+#line 195 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATER); }
+#line 637 "strict_cpp_re.inc"
+yy74:
+    ++YYCURSOR;
+#line 227 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMMA); }
+#line 642 "strict_cpp_re.inc"
+yy76:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    goto yy195;
+yy77:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych <= '\'') {
+        if (yych == '"') goto yy96;
+        if (yych <= '&') goto yy9;
+        goto yy214;
+    } else {
+        if (yych <= '?') {
+            if (yych <= '>') goto yy9;
+            goto yy197;
+        } else {
+            if (yych == '\\') goto yy196;
+            goto yy9;
+        }
+    }
+yy78:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy79:
+#line 299 "strict_cpp.re"
+    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
+#line 674 "strict_cpp_re.inc"
+yy80:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0C) {
+        if (yych == 0x09) goto yy142;
+        if (yych <= 0x0A) goto yy79;
+        goto yy142;
+    } else {
+        if (yych <= 0x1F) goto yy79;
+        if (yych == '\'') goto yy79;
+        goto yy142;
+    }
+yy81:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0A) {
+        if (yych == 0x09) goto yy97;
+        goto yy79;
+    } else {
+        if (yych <= 0x0C) goto yy97;
+        if (yych <= 0x1F) goto yy79;
+        goto yy97;
+    }
+yy82:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy95;
+yy83:
+#line 279 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SPACE); }
+#line 705 "strict_cpp_re.inc"
+yy84:
+    yych = *++YYCURSOR;
+    goto yy95;
+yy85:
+    ++YYCURSOR;
+yy86:
+#line 282 "strict_cpp.re"
+    {
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_NEWLINE);
+    }
+#line 718 "strict_cpp_re.inc"
+yy87:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy93;
+    goto yy86;
+yy88:
+    ++YYCURSOR;
+#line 289 "strict_cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        BOOST_WAVE_RET(T_EOF);
+    }
+#line 735 "strict_cpp_re.inc"
+yy90:
+    yych = *++YYCURSOR;
+    goto yy79;
+yy91:
+    ++YYCURSOR;
+#line 302 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 748 "strict_cpp_re.inc"
+yy93:
+    yych = *++YYCURSOR;
+    goto yy86;
+yy94:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy95:
+    if (yybm[256+yych] & 16) {
+        goto yy94;
+    }
+    goto yy83;
+yy96:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy97:
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy98:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 51) {
+        if (yyaccept <= 25) {
+            if (yyaccept <= 12) {
+                if (yyaccept <= 6) {
+                    if (yyaccept <= 3) {
+                        if (yyaccept <= 1) {
+                            if (yyaccept <= 0) {
+                                goto yy5;
+                            } else {
+                                goto yy9;
+                            }
+                        } else {
+                            if (yyaccept <= 2) {
+                                goto yy32;
+                            } else {
+                                goto yy46;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 5) {
+                            if (yyaccept <= 4) {
+                                goto yy65;
+                            } else {
+                                goto yy79;
+                            }
+                        } else {
+                            goto yy102;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 9) {
+                        if (yyaccept <= 8) {
+                            if (yyaccept <= 7) {
+                                goto yy152;
+                            } else {
+                                goto yy239;
+                            }
+                        } else {
+                            goto yy243;
+                        }
+                    } else {
+                        if (yyaccept <= 11) {
+                            if (yyaccept <= 10) {
+                                goto yy279;
+                            } else {
+                                goto yy294;
+                            }
+                        } else {
+                            goto yy389;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 19) {
+                    if (yyaccept <= 16) {
+                        if (yyaccept <= 14) {
+                            if (yyaccept <= 13) {
+                                goto yy417;
+                            } else {
+                                goto yy421;
+                            }
+                        } else {
+                            if (yyaccept <= 15) {
+                                goto yy425;
+                            } else {
+                                goto yy456;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 18) {
+                            if (yyaccept <= 17) {
+                                goto yy462;
+                            } else {
+                                goto yy470;
+                            }
+                        } else {
+                            goto yy478;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 22) {
+                        if (yyaccept <= 21) {
+                            if (yyaccept <= 20) {
+                                goto yy483;
+                            } else {
+                                goto yy488;
+                            }
+                        } else {
+                            goto yy491;
+                        }
+                    } else {
+                        if (yyaccept <= 24) {
+                            if (yyaccept <= 23) {
+                                goto yy501;
+                            } else {
+                                goto yy507;
+                            }
+                        } else {
+                            goto yy510;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 38) {
+                if (yyaccept <= 32) {
+                    if (yyaccept <= 29) {
+                        if (yyaccept <= 27) {
+                            if (yyaccept <= 26) {
+                                goto yy517;
+                            } else {
+                                goto yy524;
+                            }
+                        } else {
+                            if (yyaccept <= 28) {
+                                goto yy526;
+                            } else {
+                                goto yy528;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 31) {
+                            if (yyaccept <= 30) {
+                                goto yy530;
+                            } else {
+                                goto yy536;
+                            }
+                        } else {
+                            goto yy542;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 35) {
+                        if (yyaccept <= 34) {
+                            if (yyaccept <= 33) {
+                                goto yy552;
+                            } else {
+                                goto yy554;
+                            }
+                        } else {
+                            goto yy560;
+                        }
+                    } else {
+                        if (yyaccept <= 37) {
+                            if (yyaccept <= 36) {
+                                goto yy566;
+                            } else {
+                                goto yy574;
+                            }
+                        } else {
+                            goto yy577;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 45) {
+                    if (yyaccept <= 42) {
+                        if (yyaccept <= 40) {
+                            if (yyaccept <= 39) {
+                                goto yy590;
+                            } else {
+                                goto yy592;
+                            }
+                        } else {
+                            if (yyaccept <= 41) {
+                                goto yy595;
+                            } else {
+                                goto yy598;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 44) {
+                            if (yyaccept <= 43) {
+                                goto yy600;
+                            } else {
+                                goto yy605;
+                            }
+                        } else {
+                            goto yy607;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 48) {
+                        if (yyaccept <= 47) {
+                            if (yyaccept <= 46) {
+                                goto yy614;
+                            } else {
+                                goto yy623;
+                            }
+                        } else {
+                            goto yy629;
+                        }
+                    } else {
+                        if (yyaccept <= 50) {
+                            if (yyaccept <= 49) {
+                                goto yy633;
+                            } else {
+                                goto yy639;
+                            }
+                        } else {
+                            goto yy645;
+                        }
+                    }
+                }
+            }
+        }
+    } else {
+        if (yyaccept <= 77) {
+            if (yyaccept <= 64) {
+                if (yyaccept <= 58) {
+                    if (yyaccept <= 55) {
+                        if (yyaccept <= 53) {
+                            if (yyaccept <= 52) {
+                                goto yy649;
+                            } else {
+                                goto yy653;
+                            }
+                        } else {
+                            if (yyaccept <= 54) {
+                                goto yy661;
+                            } else {
+                                goto yy675;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 57) {
+                            if (yyaccept <= 56) {
+                                goto yy681;
+                            } else {
+                                goto yy688;
+                            }
+                        } else {
+                            goto yy697;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 61) {
+                        if (yyaccept <= 60) {
+                            if (yyaccept <= 59) {
+                                goto yy702;
+                            } else {
+                                goto yy705;
+                            }
+                        } else {
+                            goto yy709;
+                        }
+                    } else {
+                        if (yyaccept <= 63) {
+                            if (yyaccept <= 62) {
+                                goto yy716;
+                            } else {
+                                goto yy721;
+                            }
+                        } else {
+                            goto yy725;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 71) {
+                    if (yyaccept <= 68) {
+                        if (yyaccept <= 66) {
+                            if (yyaccept <= 65) {
+                                goto yy727;
+                            } else {
+                                goto yy735;
+                            }
+                        } else {
+                            if (yyaccept <= 67) {
+                                goto yy742;
+                            } else {
+                                goto yy746;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 70) {
+                            if (yyaccept <= 69) {
+                                goto yy748;
+                            } else {
+                                goto yy753;
+                            }
+                        } else {
+                            goto yy757;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 74) {
+                        if (yyaccept <= 73) {
+                            if (yyaccept <= 72) {
+                                goto yy762;
+                            } else {
+                                goto yy766;
+                            }
+                        } else {
+                            goto yy775;
+                        }
+                    } else {
+                        if (yyaccept <= 76) {
+                            if (yyaccept <= 75) {
+                                goto yy777;
+                            } else {
+                                goto yy781;
+                            }
+                        } else {
+                            goto yy785;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 90) {
+                if (yyaccept <= 84) {
+                    if (yyaccept <= 81) {
+                        if (yyaccept <= 79) {
+                            if (yyaccept <= 78) {
+                                goto yy794;
+                            } else {
+                                goto yy799;
+                            }
+                        } else {
+                            if (yyaccept <= 80) {
+                                goto yy804;
+                            } else {
+                                goto yy807;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 83) {
+                            if (yyaccept <= 82) {
+                                goto yy810;
+                            } else {
+                                goto yy813;
+                            }
+                        } else {
+                            goto yy825;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 87) {
+                        if (yyaccept <= 86) {
+                            if (yyaccept <= 85) {
+                                goto yy830;
+                            } else {
+                                goto yy836;
+                            }
+                        } else {
+                            goto yy841;
+                        }
+                    } else {
+                        if (yyaccept <= 89) {
+                            if (yyaccept <= 88) {
+                                goto yy850;
+                            } else {
+                                goto yy857;
+                            }
+                        } else {
+                            goto yy859;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 97) {
+                    if (yyaccept <= 94) {
+                        if (yyaccept <= 92) {
+                            if (yyaccept <= 91) {
+                                goto yy865;
+                            } else {
+                                goto yy869;
+                            }
+                        } else {
+                            if (yyaccept <= 93) {
+                                goto yy872;
+                            } else {
+                                goto yy877;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 96) {
+                            if (yyaccept <= 95) {
+                                goto yy879;
+                            } else {
+                                goto yy886;
+                            }
+                        } else {
+                            goto yy889;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 100) {
+                        if (yyaccept <= 99) {
+                            if (yyaccept <= 98) {
+                                goto yy894;
+                            } else {
+                                goto yy897;
+                            }
+                        } else {
+                            goto yy903;
+                        }
+                    } else {
+                        if (yyaccept <= 102) {
+                            if (yyaccept <= 101) {
+                                goto yy905;
+                            } else {
+                                goto yy907;
+                            }
+                        } else {
+                            goto yy911;
+                        }
+                    }
+                }
+            }
+        }
+    }
+yy99:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy112;
+yy100:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy96;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy96;
+                if (yych <= '/') goto yy98;
+                goto yy107;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy105;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy104;
+                if (yych == '\\') goto yy96;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy96;
+                if (yych <= 'e') goto yy98;
+                goto yy96;
+            } else {
+                if (yych == 'n') goto yy96;
+                if (yych <= 'q') goto yy98;
+                goto yy96;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy96;
+                goto yy103;
+            } else {
+                if (yych <= 'v') goto yy96;
+                if (yych == 'x') goto yy106;
+                goto yy98;
+            }
+        }
+    }
+yy101:
+    ++YYCURSOR;
+yy102:
+#line 249 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRINGLIT); }
+#line 1250 "strict_cpp_re.inc"
+yy103:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy138;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy138;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy138;
+        goto yy98;
+    }
+yy104:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy131;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy131;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy131;
+        goto yy98;
+    }
+yy105:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy111;
+    goto yy100;
+yy106:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    goto yy98;
+yy107:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '"') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '!') goto yy96;
+            goto yy101;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy96;
+            if (yych >= '8') goto yy96;
+        } else {
+            if (yych <= '?') goto yy99;
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy109:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '?') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '>') goto yy96;
+            goto yy99;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy111:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+yy112:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy114:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 1) {
+        goto yy114;
+    }
+    if (yych <= '7') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy118;
+                if (yych <= '/') goto yy96;
+                goto yy107;
+            }
+        }
+    } else {
+        if (yych <= 'U') {
+            if (yych == '?') goto yy119;
+            if (yych <= 'T') goto yy96;
+            goto yy117;
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy96;
+            } else {
+                if (yych == 'x') goto yy109;
+                goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy128;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy128;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy128;
+                goto yy96;
+            }
+        }
+    }
+yy117:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy121;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy121;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy121;
+                goto yy96;
+            }
+        }
+    }
+yy118:
+    yyaccept = 6;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy102;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy119:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+            goto yy114;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy121:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy128:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy131:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy132;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy132:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy133;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy133:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy134;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy134:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy135;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy135:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy136;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy136:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy137;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy137:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy138:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy139;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy139:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy140;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy140:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy141:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy142:
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy143:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy156;
+yy144:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy141;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy141;
+                if (yych <= '/') goto yy98;
+                goto yy149;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy147;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy146;
+                if (yych == '\\') goto yy141;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy141;
+                if (yych <= 'e') goto yy98;
+                goto yy141;
+            } else {
+                if (yych == 'n') goto yy141;
+                if (yych <= 'q') goto yy98;
+                goto yy141;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych <= 'v') goto yy141;
+                if (yych == 'x') goto yy148;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy182;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy182;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy182;
+        goto yy98;
+    }
+yy146:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy175;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy175;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy175;
+        goto yy98;
+    }
+yy147:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy155;
+    goto yy144;
+yy148:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy153;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy153;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy153;
+        goto yy98;
+    }
+yy149:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy141;
+            if (yych >= '8') goto yy141;
+        } else {
+            if (yych <= '?') goto yy143;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy151:
+    ++YYCURSOR;
+yy152:
+#line 246 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHARLIT); }
+#line 2097 "strict_cpp_re.inc"
+yy153:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy153;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy153;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+yy155:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy156:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych != '/') goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy158:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '>') {
+        if (yych <= 0x1F) {
+            if (yych <= 0x09) {
+                if (yych <= 0x08) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= 0x0A) goto yy98;
+                if (yych <= 0x0C) goto yy141;
+                goto yy98;
+            }
+        } else {
+            if (yych <= '\'') {
+                if (yych <= '&') goto yy141;
+                goto yy162;
+            } else {
+                if (yych <= '/') goto yy141;
+                if (yych <= '7') goto yy149;
+                goto yy141;
+            }
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= 'T') {
+                if (yych <= '?') goto yy163;
+                goto yy141;
+            } else {
+                if (yych <= 'U') goto yy161;
+                if (yych <= '[') goto yy141;
+                goto yy158;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych == 'x') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy172;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy172;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy172;
+                goto yy141;
+            }
+        }
+    }
+yy161:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy165;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy165;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy165;
+                goto yy141;
+            }
+        }
+    }
+yy162:
+    yyaccept = 7;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy152;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy163:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych == '/') goto yy158;
+            goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy165:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy172:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy175:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy176;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy176:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy177;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy177:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy178;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy178:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy179;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy179:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy180;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy180:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy181;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy181:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy182:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy183;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy183:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy184;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy184:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy185:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy211;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy211;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy211;
+        goto yy98;
+    }
+yy186:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy187;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy187:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy188;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy188:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy189;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy189:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy190;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy190:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy191;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy191:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy192;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy192:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy193;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy193:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy194:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy195:
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych != '\\') goto yy9;
+yy196:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy200;
+    if (yych == 'u') goto yy199;
+    goto yy98;
+yy197:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy98;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy196;
+    goto yy98;
+yy199:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy208;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy208;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy208;
+        goto yy98;
+    }
+yy200:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy201;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy201:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy202;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy202:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy203;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy203:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy204;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy204:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy205;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy205:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy206;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy206:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy207;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy207:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy208:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy209;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy209:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy210;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy210:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy211:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy212;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy212:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy213;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy213:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy214:
+    yych = *++YYCURSOR;
+    if (yych == '\'') goto yy98;
+    goto yy142;
+yy215:
+    ++YYCURSOR;
+#line 217 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATEREQUAL); }
+#line 3027 "strict_cpp_re.inc"
+yy217:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy219;
+#line 210 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
+#line 3033 "strict_cpp_re.inc"
+yy219:
+    ++YYCURSOR;
+#line 211 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
+#line 3038 "strict_cpp_re.inc"
+yy221:
+    ++YYCURSOR;
+#line 213 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EQUAL); }
+#line 3043 "strict_cpp_re.inc"
+yy223:
+    ++YYCURSOR;
+#line 214 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOTEQUAL); }
+#line 3048 "strict_cpp_re.inc"
+yy225:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy230;
+    goto yy98;
+yy226:
+    ++YYCURSOR;
+#line 220 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR); }
+#line 3057 "strict_cpp_re.inc"
+yy228:
+    ++YYCURSOR;
+#line 206 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN); }
+#line 3062 "strict_cpp_re.inc"
+yy230:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 222 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3069 "strict_cpp_re.inc"
+yy233:
+    ++YYCURSOR;
+#line 218 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDAND); }
+#line 3074 "strict_cpp_re.inc"
+yy235:
+    ++YYCURSOR;
+#line 204 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDASSIGN); }
+#line 3079 "strict_cpp_re.inc"
+yy237:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 8;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy239;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy240;
+            if (yych <= '`') goto yy239;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy239:
+#line 182 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
+#line 3106 "strict_cpp_re.inc"
+yy240:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 9;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy243:
+#line 202 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
+#line 3124 "strict_cpp_re.inc"
+yy244:
+    ++YYCURSOR;
+#line 201 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN); }
+#line 3129 "strict_cpp_re.inc"
+yy246:
+    ++YYCURSOR;
+#line 198 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STARASSIGN); }
+#line 3134 "strict_cpp_re.inc"
+yy248:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '*') goto yy254;
+#line 238 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ARROW); }
+#line 3140 "strict_cpp_re.inc"
+yy250:
+    ++YYCURSOR;
+#line 226 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSMINUS); }
+#line 3145 "strict_cpp_re.inc"
+yy252:
+    ++YYCURSOR;
+#line 197 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSASSIGN); }
+#line 3150 "strict_cpp_re.inc"
+yy254:
+    ++YYCURSOR;
+#line 229 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_ARROW);
+            }
+            else {
+                BOOST_WAVE_RET(T_ARROWSTAR); 
+            }
+        }
+#line 3163 "strict_cpp_re.inc"
+yy256:
+    ++YYCURSOR;
+#line 225 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSPLUS); }
+#line 3168 "strict_cpp_re.inc"
+yy258:
+    ++YYCURSOR;
+#line 196 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSASSIGN); }
+#line 3173 "strict_cpp_re.inc"
+yy260:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+    yych = *YYCURSOR;
+yy261:
+    if (yych <= 'h') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy260;
+                goto yy98;
+            } else {
+                if (yych <= 0x0C) goto yy260;
+                if (yych <= 0x1F) goto yy98;
+                goto yy260;
+            }
+        } else {
+            if (yych <= 'c') {
+                if (yych != '/') goto yy98;
+            } else {
+                if (yych <= 'd') goto yy269;
+                if (yych <= 'e') goto yy263;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'q') {
+            if (yych <= 'l') {
+                if (yych <= 'i') goto yy270;
+                if (yych <= 'k') goto yy98;
+                goto yy267;
+            } else {
+                if (yych == 'p') goto yy266;
+                goto yy98;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 'r') goto yy264;
+                if (yych <= 't') goto yy98;
+                goto yy268;
+            } else {
+                if (yych == 'w') goto yy265;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy377;
+    goto yy98;
+yy263:
+    yych = *++YYCURSOR;
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy353;
+        goto yy98;
+    } else {
+        if (yych <= 'n') goto yy354;
+        if (yych == 'r') goto yy355;
+        goto yy98;
+    }
+yy264:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy347;
+    goto yy98;
+yy265:
+    yych = *++YYCURSOR;
+    if (yych == 'a') goto yy340;
+    goto yy98;
+yy266:
+    yych = *++YYCURSOR;
+    if (yych == 'r') goto yy334;
+    goto yy98;
+yy267:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy330;
+    goto yy98;
+yy268:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy325;
+    goto yy98;
+yy269:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy319;
+    goto yy98;
+yy270:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy278;
+    if (yych == 'n') goto yy277;
+    goto yy98;
+yy271:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy274;
+    goto yy98;
+yy272:
+    ++YYCURSOR;
+#line 143 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND); }
+#line 3271 "strict_cpp_re.inc"
+yy274:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 144 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3278 "strict_cpp_re.inc"
+yy277:
+    yych = *++YYCURSOR;
+    if (yych == 'c') goto yy289;
+    goto yy98;
+yy278:
+    yyaccept = 10;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy281;
+    if (yych == 'n') goto yy280;
+yy279:
+#line 261 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IF); }
+#line 3291 "strict_cpp_re.inc"
+yy280:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy285;
+    goto yy98;
+yy281:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 262 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFDEF); }
+#line 3304 "strict_cpp_re.inc"
+yy285:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 263 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFNDEF); }
+#line 3313 "strict_cpp_re.inc"
+yy289:
+    yych = *++YYCURSOR;
+    if (yych != 'l') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'u') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yyaccept = 11;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '_') goto yy295;
+    goto yy297;
+yy294:
+#line 259 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_INCLUDE); }
+#line 3330 "strict_cpp_re.inc"
+yy295:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy316;
+    goto yy98;
+yy296:
+    yyaccept = 11;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+yy297:
+    if (yych <= ' ') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy296;
+            goto yy294;
+        } else {
+            if (yych <= 0x0C) goto yy296;
+            if (yych <= 0x1F) goto yy294;
+            goto yy296;
+        }
+    } else {
+        if (yych <= '.') {
+            if (yych == '"') goto yy300;
+            goto yy294;
+        } else {
+            if (yych <= '/') goto yy298;
+            if (yych == '<') goto yy299;
+            goto yy294;
+        }
+    }
+yy298:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy309;
+    goto yy98;
+yy299:
+    yych = *++YYCURSOR;
+    if (yych == '>') goto yy98;
+    goto yy306;
+yy300:
+    yych = *++YYCURSOR;
+    if (yych == '"') goto yy98;
+    goto yy302;
+yy301:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy302:
+    if (yybm[0+yych] & 8) {
+        goto yy301;
+    }
+    if (yych <= '!') goto yy98;
+    ++YYCURSOR;
+#line 256 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_QHEADER); }
+#line 3386 "strict_cpp_re.inc"
+yy305:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy306:
+    if (yybm[0+yych] & 16) {
+        goto yy305;
+    }
+    if (yych <= '=') goto yy98;
+    ++YYCURSOR;
+#line 253 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_HHEADER); }
+#line 3399 "strict_cpp_re.inc"
+yy309:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy311:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+yy313:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy313;
+    }
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy309;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '/') goto yy296;
+        goto yy309;
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy316:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'x') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych == 't') goto yy296;
+    goto yy98;
+yy319:
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 267 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_DEFINE); }
+#line 3463 "strict_cpp_re.inc"
+yy325:
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 268 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_UNDEF); }
+#line 3474 "strict_cpp_re.inc"
+yy330:
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 269 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_LINE); }
+#line 3483 "strict_cpp_re.inc"
+yy334:
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'm') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    ++YYCURSOR;
+#line 271 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_PRAGMA); }
+#line 3496 "strict_cpp_re.inc"
+yy340:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    ++YYCURSOR;
+#line 273 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_WARNING); }
+#line 3511 "strict_cpp_re.inc"
+yy347:
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 275 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
+#line 3524 "strict_cpp_re.inc"
+yy353:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy371;
+    if (yych == 's') goto yy372;
+    goto yy98;
+yy354:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy360;
+    goto yy98;
+yy355:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    ++YYCURSOR;
+#line 270 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ERROR); }
+#line 3544 "strict_cpp_re.inc"
+yy360:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy361;
+    if (yych == 'r') goto yy362;
+    goto yy98;
+yy361:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy369;
+    goto yy98;
+yy362:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 276 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+#line 3568 "strict_cpp_re.inc"
+yy369:
+    ++YYCURSOR;
+#line 266 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ENDIF); }
+#line 3573 "strict_cpp_re.inc"
+yy371:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy375;
+    goto yy98;
+yy372:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 264 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELSE); }
+#line 3584 "strict_cpp_re.inc"
+yy375:
+    ++YYCURSOR;
+#line 265 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELIF); }
+#line 3589 "strict_cpp_re.inc"
+yy377:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy379:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych != '*') goto yy377;
+    }
+yy381:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x1F) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        if (yych >= 0x0E) goto yy98;
+    } else {
+        if (yych <= '*') {
+            if (yych <= ')') goto yy377;
+            goto yy381;
+        } else {
+            if (yych == '/') goto yy260;
+            goto yy377;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy384:
+    ++YYCURSOR;
+#line 155 "strict_cpp.re"
+    { 
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
                 BOOST_WAVE_RET(T_COLON);
@@ -161,157 +3651,2512 @@
                 BOOST_WAVE_RET(T_COLON_COLON); 
             }
         }
-    "."             { BOOST_WAVE_RET(T_DOT); }
-    ".*" 
-        { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
+#line 3655 "strict_cpp_re.inc"
+yy386:
+    ++YYCURSOR;
+#line 139 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
+#line 3660 "strict_cpp_re.inc"
+yy388:
+    yyaccept = 12;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'e') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
             }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR); 
+        } else {
+            if (yych <= '.') {
+                if (yych == '%') goto yy394;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych >= 'd') goto yy261;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'k') {
+                if (yych == 'i') goto yy261;
+            } else {
+                if (yych <= 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy389;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy389:
+#line 141 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_ALT); }
+#line 3700 "strict_cpp_re.inc"
+yy390:
+    ++YYCURSOR;
+#line 200 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
+#line 3705 "strict_cpp_re.inc"
+yy392:
+    ++YYCURSOR;
+#line 133 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
+#line 3710 "strict_cpp_re.inc"
+yy394:
+    yych = *++YYCURSOR;
+    if (yych != ':') goto yy98;
+    ++YYCURSOR;
+#line 147 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
+#line 3717 "strict_cpp_re.inc"
+yy397:
+    ++YYCURSOR;
+#line 216 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESSEQUAL); }
+#line 3722 "strict_cpp_re.inc"
+yy399:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy405;
+#line 209 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFT); }
+#line 3728 "strict_cpp_re.inc"
+yy401:
+    ++YYCURSOR;
+#line 136 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
+#line 3733 "strict_cpp_re.inc"
+yy403:
+    ++YYCURSOR;
+#line 130 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
+#line 3738 "strict_cpp_re.inc"
+yy405:
+    ++YYCURSOR;
+#line 212 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
+#line 3743 "strict_cpp_re.inc"
+yy407:
+    yych = *++YYCURSOR;
+    switch (yych) {
+    case '!':    goto yy420;
+    case '\'':    goto yy418;
+    case '(':    goto yy412;
+    case ')':    goto yy414;
+    case '-':    goto yy422;
+    case '/':    goto yy424;
+    case '<':    goto yy408;
+    case '=':    goto yy416;
+    case '>':    goto yy410;
+    default:    goto yy98;
+    }
+yy408:
+    ++YYCURSOR;
+#line 129 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
+#line 3762 "strict_cpp_re.inc"
+yy410:
+    ++YYCURSOR;
+#line 132 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
+#line 3767 "strict_cpp_re.inc"
+yy412:
+    ++YYCURSOR;
+#line 135 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
+#line 3772 "strict_cpp_re.inc"
+yy414:
+    ++YYCURSOR;
+#line 138 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
+#line 3777 "strict_cpp_re.inc"
+yy416:
+    yyaccept = 13;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy437;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy436;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
             }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy417;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy417:
+#line 142 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
+#line 3818 "strict_cpp_re.inc"
+yy418:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy434;
+#line 181 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
+#line 3824 "strict_cpp_re.inc"
+yy420:
+    yyaccept = 14;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy429;
+    } else {
+        if (yych <= '?') goto yy426;
+        if (yych == '|') goto yy427;
+    }
+yy421:
+#line 187 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
+#line 3837 "strict_cpp_re.inc"
+yy422:
+    ++YYCURSOR;
+#line 189 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
+#line 3842 "strict_cpp_re.inc"
+yy424:
+    yyaccept = 15;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy425:
+#line 239 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
+#line 3851 "strict_cpp_re.inc"
+yy426:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy431;
+    goto yy98;
+yy427:
+    ++YYCURSOR;
+#line 221 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3860 "strict_cpp_re.inc"
+yy429:
+    ++YYCURSOR;
+#line 208 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
+#line 3865 "strict_cpp_re.inc"
+yy431:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 224 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3872 "strict_cpp_re.inc"
+yy434:
+    ++YYCURSOR;
+#line 203 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
+#line 3877 "strict_cpp_re.inc"
+yy436:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy439;
+    goto yy98;
+yy437:
+    ++YYCURSOR;
+#line 145 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3886 "strict_cpp_re.inc"
+yy439:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 146 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3893 "strict_cpp_re.inc"
+yy442:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'e':    goto yy495;
+    case 'f':    goto yy493;
+    case 'i':    goto yy492;
+    case 'l':    goto yy496;
+    case 's':    goto yy449;
+    case 't':    goto yy494;
+    default:    goto yy195;
+    }
+yy443:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy489;
+    goto yy195;
+yy444:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy484;
+    goto yy195;
+yy445:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy479;
+    goto yy195;
+yy446:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy471;
+    goto yy195;
+yy447:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    goto yy195;
+yy448:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy457;
+    goto yy195;
+yy449:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 16;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy456:
+#line 120 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
+#line 3969 "strict_cpp_re.inc"
+yy457:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+yy458:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 17;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy462:
+#line 125 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
+#line 3994 "strict_cpp_re.inc"
+yy463:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 18;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy470:
+#line 119 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
+#line 4024 "strict_cpp_re.inc"
+yy471:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 19;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy478:
+#line 117 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
+#line 4054 "strict_cpp_re.inc"
+yy479:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 20;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy483:
+#line 118 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
+#line 4075 "strict_cpp_re.inc"
+yy484:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 21;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy488:
+#line 116 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
+#line 4096 "strict_cpp_re.inc"
+yy489:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 22;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy491:
+#line 126 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
+#line 4111 "strict_cpp_re.inc"
+yy492:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy518;
+    goto yy195;
+yy493:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    if (yych == 'i') goto yy511;
+    goto yy195;
+yy494:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy508;
+    goto yy195;
+yy495:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'x') goto yy502;
+    goto yy195;
+yy496:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'v') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 23;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy501:
+#line 124 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
+#line 4156 "strict_cpp_re.inc"
+yy502:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 24;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy507:
+#line 122 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
+#line 4180 "strict_cpp_re.inc"
+yy508:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 25;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy510:
+#line 121 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
+#line 4195 "strict_cpp_re.inc"
+yy511:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 26;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy517:
+#line 123 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
+#line 4222 "strict_cpp_re.inc"
+yy518:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy458;
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '1':    goto yy520;
+    case '3':    goto yy521;
+    case '6':    goto yy522;
+    case '8':    goto yy523;
+    default:    goto yy195;
+    }
+yy520:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '6') goto yy529;
+    goto yy195;
+yy521:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '2') goto yy527;
+    goto yy195;
+yy522:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '4') goto yy525;
+    goto yy195;
+yy523:
+    yyaccept = 27;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy524:
+#line 112 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
+#line 4263 "strict_cpp_re.inc"
+yy525:
+    yyaccept = 28;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy526:
+#line 115 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
+#line 4275 "strict_cpp_re.inc"
+yy527:
+    yyaccept = 29;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy528:
+#line 114 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
+#line 4287 "strict_cpp_re.inc"
+yy529:
+    yyaccept = 30;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy530:
+#line 113 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
+#line 4299 "strict_cpp_re.inc"
+yy531:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'h') goto yy537;
+    goto yy195;
+yy532:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 31;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy536:
+#line 110 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WHILE); }
+#line 4325 "strict_cpp_re.inc"
+yy537:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 32;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy542:
+#line 109 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WCHART); }
+#line 4349 "strict_cpp_re.inc"
+yy543:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy555;
+    goto yy195;
+yy544:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy545;
+    if (yych == 'l') goto yy546;
+    goto yy195;
+yy545:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy553;
+    goto yy195;
+yy546:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 33;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy552:
+#line 108 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOLATILE); }
+#line 4392 "strict_cpp_re.inc"
+yy553:
+    yyaccept = 34;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy554:
+#line 107 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOID); }
+#line 4404 "strict_cpp_re.inc"
+yy555:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 35;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy560:
+#line 106 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VIRTUAL); }
+#line 4428 "strict_cpp_re.inc"
+yy561:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy567;
+    if (yych == 's') goto yy568;
+    goto yy195;
+yy562:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 36;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy566:
+#line 105 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_USING); }
+#line 4455 "strict_cpp_re.inc"
+yy567:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy575;
+    goto yy195;
+yy568:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 37;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy574:
+#line 104 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNSIGNED); }
+#line 4487 "strict_cpp_re.inc"
+yy575:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 38;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy577:
+#line 103 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNION); }
+#line 4502 "strict_cpp_re.inc"
+yy578:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy608;
+    goto yy195;
+yy579:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy601;
+    if (yych == 'r') goto yy602;
+    goto yy195;
+yy580:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy596;
+    if (yych == 'y') goto yy597;
+    goto yy195;
+yy581:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'd') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy585;
+        if (yych == 'n') goto yy586;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy593;
+    goto yy195;
+yy585:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy591;
+    goto yy195;
+yy586:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 39;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy590:
+#line 102 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPENAME); }
+#line 4565 "strict_cpp_re.inc"
+yy591:
+    yyaccept = 40;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy592:
+#line 101 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEID); }
+#line 4577 "strict_cpp_re.inc"
+yy593:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 41;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy595:
+#line 100 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEDEF); }
+#line 4592 "strict_cpp_re.inc"
+yy596:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy599;
+    goto yy195;
+yy597:
+    yyaccept = 42;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy598:
+#line 99 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRY); }
+#line 4609 "strict_cpp_re.inc"
+yy599:
+    yyaccept = 43;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy600:
+#line 98 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRUE); }
+#line 4621 "strict_cpp_re.inc"
+yy601:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy606;
+    goto yy195;
+yy602:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'w') goto yy195;
+    yyaccept = 44;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy605:
+#line 97 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THROW); }
+#line 4644 "strict_cpp_re.inc"
+yy606:
+    yyaccept = 45;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy607:
+#line 96 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THIS); }
+#line 4656 "strict_cpp_re.inc"
+yy608:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 46;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy614:
+#line 95 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TEMPLATE); }
+#line 4683 "strict_cpp_re.inc"
+yy615:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy650;
+    goto yy195;
+yy616:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'g') goto yy640;
+    if (yych == 'z') goto yy641;
+    goto yy195;
+yy617:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy624;
+    if (yych == 'r') goto yy625;
+    goto yy195;
+yy618:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 47;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy623:
+#line 94 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SWITCH); }
+#line 4724 "strict_cpp_re.inc"
+yy624:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy630;
+    goto yy195;
+yy625:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 48;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy629:
+#line 93 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRUCT); }
+#line 4750 "strict_cpp_re.inc"
+yy630:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 49;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy633;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy634;
+            if (yych <= '`') goto yy633;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy633:
+#line 91 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATIC); }
+#line 4780 "strict_cpp_re.inc"
+yy634:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 50;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy639:
+#line 92 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATICCAST); }
+#line 4804 "strict_cpp_re.inc"
+yy640:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy646;
+    goto yy195;
+yy641:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 51;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy645:
+#line 90 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIZEOF); }
+#line 4830 "strict_cpp_re.inc"
+yy646:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 52;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy649:
+#line 89 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIGNED); }
+#line 4848 "strict_cpp_re.inc"
+yy650:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 53;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy653:
+#line 88 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHORT); }
+#line 4866 "strict_cpp_re.inc"
+yy654:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'g') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy656;
+        if (yych == 't') goto yy657;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy676;
+    goto yy195;
+yy656:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy662;
+    goto yy195;
+yy657:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 54;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy661:
+#line 87 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RETURN); }
+#line 4906 "strict_cpp_re.inc"
+yy662:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 55;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy675:
+#line 86 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
+#line 4954 "strict_cpp_re.inc"
+yy676:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 56;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy681:
+#line 85 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REGISTER); }
+#line 4978 "strict_cpp_re.inc"
+yy682:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy689;
+    if (yych == 'o') goto yy690;
+    goto yy195;
+yy683:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 57;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy688:
+#line 84 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PUBLIC); }
+#line 5008 "strict_cpp_re.inc"
+yy689:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'v') goto yy698;
+    goto yy195;
+yy690:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 58;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy697:
+#line 83 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PROTECTED); }
+#line 5043 "strict_cpp_re.inc"
+yy698:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 59;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy702:
+#line 82 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PRIVATE); }
+#line 5064 "strict_cpp_re.inc"
+yy703:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy710;
+    goto yy195;
+yy704:
+    yyaccept = 60;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy705;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy706;
+            if (yych <= '`') goto yy705;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy705:
+#line 223 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
+#line 5093 "strict_cpp_re.inc"
+yy706:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 61;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy709:
+#line 207 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
+#line 5111 "strict_cpp_re.inc"
+yy710:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 62;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy716:
+#line 81 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OPERATOR); }
+#line 5138 "strict_cpp_re.inc"
+yy717:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy728;
+    goto yy195;
+yy718:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'w') goto yy726;
+    goto yy195;
+yy719:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 63;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy721;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy722;
+            if (yych <= '`') goto yy721;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy721:
+#line 192 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
+#line 5175 "strict_cpp_re.inc"
+yy722:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 64;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy725:
+#line 215 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
+#line 5193 "strict_cpp_re.inc"
+yy726:
+    yyaccept = 65;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy727:
+#line 80 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NEW); }
+#line 5205 "strict_cpp_re.inc"
+yy728:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 66;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy735:
+#line 79 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NAMESPACE); }
+#line 5235 "strict_cpp_re.inc"
+yy736:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 67;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy742:
+#line 78 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MUTABLE); }
+#line 5262 "strict_cpp_re.inc"
+yy743:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 68;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy746:
+#line 77 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONG); }
+#line 5280 "strict_cpp_re.inc"
+yy747:
+    yyaccept = 69;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy748:
+#line 73 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IF); }
+#line 5292 "strict_cpp_re.inc"
+yy749:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy758;
+    goto yy195;
+yy750:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy751;
+    if (yych == 't') goto yy752;
+    goto yy195;
+yy751:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy754;
+    goto yy195;
+yy752:
+    yyaccept = 70;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy753:
+#line 76 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INT); }
+#line 5320 "strict_cpp_re.inc"
+yy754:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 71;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy757:
+#line 75 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INLINE); }
+#line 5338 "strict_cpp_re.inc"
+yy758:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 72;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy762:
+#line 74 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
+#line 5359 "strict_cpp_re.inc"
+yy763:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 73;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy766:
+#line 72 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GOTO); }
+#line 5377 "strict_cpp_re.inc"
+yy767:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy782;
+    goto yy195;
+yy768:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy778;
+    goto yy195;
+yy769:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy776;
+    goto yy195;
+yy770:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 74;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy775:
+#line 71 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FRIEND); }
+#line 5416 "strict_cpp_re.inc"
+yy776:
+    yyaccept = 75;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy777:
+#line 70 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FOR); }
+#line 5428 "strict_cpp_re.inc"
+yy778:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 76;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy781:
+#line 69 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOAT); }
+#line 5446 "strict_cpp_re.inc"
+yy782:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 77;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy785:
+#line 68 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FALSE); }
+#line 5464 "strict_cpp_re.inc"
+yy786:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy808;
+    goto yy195;
+yy787:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy805;
+    goto yy195;
+yy788:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy789;
+    if (yych == 't') goto yy790;
+    goto yy195;
+yy789:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy795;
+    if (yych == 'o') goto yy796;
+    goto yy195;
+yy790:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 78;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy794:
+#line 67 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXTERN); }
+#line 5507 "strict_cpp_re.inc"
+yy795:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy800;
+    goto yy195;
+yy796:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 79;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy799:
+#line 66 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPORT); }
+#line 5530 "strict_cpp_re.inc"
+yy800:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 80;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy804:
+#line 65 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPLICIT); }
+#line 5551 "strict_cpp_re.inc"
+yy805:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 81;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy807:
+#line 64 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ENUM); }
+#line 5566 "strict_cpp_re.inc"
+yy808:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 82;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy810:
+#line 63 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELSE); }
+#line 5581 "strict_cpp_re.inc"
+yy811:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'f') goto yy831;
+    if (yych == 'l') goto yy832;
+    goto yy195;
+yy812:
+    yyaccept = 83;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '[') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy813;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych <= '@') goto yy813;
+            if (yych <= 'Z') goto yy194;
+        }
+    } else {
+        if (yych <= '`') {
+            if (yych <= '\\') goto yy196;
+            if (yych == '_') goto yy194;
+        } else {
+            if (yych == 'u') goto yy826;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy813:
+#line 60 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DO); }
+#line 5612 "strict_cpp_re.inc"
+yy814:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 84;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy825:
+#line 62 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DYNAMICCAST); }
+#line 5654 "strict_cpp_re.inc"
+yy826:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 85;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy830:
+#line 61 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOUBLE); }
+#line 5675 "strict_cpp_re.inc"
+yy831:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy837;
+    goto yy195;
+yy832:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 86;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy836:
+#line 59 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DELETE); }
+#line 5701 "strict_cpp_re.inc"
+yy837:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 87;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy841:
+#line 58 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DEFAULT); }
+#line 5722 "strict_cpp_re.inc"
+yy842:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy873;
+    if (yych <= 't') goto yy874;
+    goto yy195;
+yy843:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy870;
+    goto yy195;
+yy844:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy866;
+    goto yy195;
+yy845:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') goto yy195;
+    if (yych <= 'm') goto yy847;
+    if (yych >= 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy851;
+    if (yych <= 't') goto yy852;
+    goto yy195;
+yy847:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 88;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy850:
+#line 190 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
+#line 5769 "strict_cpp_re.inc"
+yy851:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy858;
+    goto yy195;
+yy852:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 89;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy857:
+#line 57 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONTINUE); }
+#line 5798 "strict_cpp_re.inc"
+yy858:
+    yyaccept = 90;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy859;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy860;
+            if (yych <= '`') goto yy859;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy859:
+#line 55 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONST); }
+#line 5822 "strict_cpp_re.inc"
+yy860:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 91;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy865:
+#line 56 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 5846 "strict_cpp_re.inc"
+yy866:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 92;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy869:
+#line 54 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CLASS); }
+#line 5864 "strict_cpp_re.inc"
+yy870:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 93;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy872:
+#line 53 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHAR); }
+#line 5879 "strict_cpp_re.inc"
+yy873:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy878;
+    goto yy195;
+yy874:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 94;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy877:
+#line 52 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CATCH); }
+#line 5902 "strict_cpp_re.inc"
+yy878:
+    yyaccept = 95;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy879:
+#line 51 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CASE); }
+#line 5914 "strict_cpp_re.inc"
+yy880:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy890;
+    goto yy195;
+yy881:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy887;
+    goto yy195;
+yy882:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'k') goto yy195;
+    yyaccept = 96;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy886:
+#line 50 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BREAK); }
+#line 5945 "strict_cpp_re.inc"
+yy887:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 97;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy889:
+#line 49 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BOOL); }
+#line 5960 "strict_cpp_re.inc"
+yy890:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy891;
+    if (yych == 'o') goto yy892;
+    goto yy195;
+yy891:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy895;
+    goto yy195;
+yy892:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 98;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy894:
+#line 186 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
+#line 5986 "strict_cpp_re.inc"
+yy895:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 99;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy897:
+#line 184 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
+#line 6001 "strict_cpp_re.inc"
+yy898:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy906;
+    goto yy195;
+yy899:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy904;
+    goto yy195;
+yy900:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 100;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy903:
+#line 48 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AUTO); }
+#line 6029 "strict_cpp_re.inc"
+yy904:
+    yyaccept = 101;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy905:
+#line 47 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASM); }
+#line 6041 "strict_cpp_re.inc"
+yy906:
+    yyaccept = 102;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy907;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
         }
-    "+"             { BOOST_WAVE_RET(T_PLUS); }
-    "-"             { BOOST_WAVE_RET(T_MINUS); }
-    "*"             { BOOST_WAVE_RET(T_STAR); }
-    "/"             { BOOST_WAVE_RET(T_DIVIDE); }
-    "%"             { BOOST_WAVE_RET(T_PERCENT); }
-    "^"             { BOOST_WAVE_RET(T_XOR); }
-    "??'"           { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-    "xor"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-    "&"             { BOOST_WAVE_RET(T_AND); }
-    "bitand"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-    "|"             { BOOST_WAVE_RET(T_OR); }
-    "bitor"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-    "??!"           { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-    "~"             { BOOST_WAVE_RET(T_COMPL); }
-    "??-"           { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-    "compl"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-    "!"             { BOOST_WAVE_RET(T_NOT); }
-    "not"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-    "="             { BOOST_WAVE_RET(T_ASSIGN); }
-    "<"             { BOOST_WAVE_RET(T_LESS); }
-    ">"             { BOOST_WAVE_RET(T_GREATER); }
-    "+="            { BOOST_WAVE_RET(T_PLUSASSIGN); }
-    "-="            { BOOST_WAVE_RET(T_MINUSASSIGN); }
-    "*="            { BOOST_WAVE_RET(T_STARASSIGN); }
-    "/="            { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-    "%="            { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-    "^="            { BOOST_WAVE_RET(T_XORASSIGN); }
-    "xor_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-    "??'="          { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-    "&="            { BOOST_WAVE_RET(T_ANDASSIGN); }
-    "and_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-    "|="            { BOOST_WAVE_RET(T_ORASSIGN); }
-    "or_eq"         { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-    "??!="          { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-    "<<"            { BOOST_WAVE_RET(T_SHIFTLEFT); }
-    ">>"            { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-    ">>="           { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-    "<<="           { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-    "=="            { BOOST_WAVE_RET(T_EQUAL); }
-    "!="            { BOOST_WAVE_RET(T_NOTEQUAL); }
-    "not_eq"        { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-    "<="            { BOOST_WAVE_RET(T_LESSEQUAL); }
-    ">="            { BOOST_WAVE_RET(T_GREATEREQUAL); }
-    "&&"            { BOOST_WAVE_RET(T_ANDAND); }
-    "and"           { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-    "||"            { BOOST_WAVE_RET(T_OROR); }
-    "??!|"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "|??!"          { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "or"            { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-    "??!??!"        { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-    "++"            { BOOST_WAVE_RET(T_PLUSPLUS); }
-    "--"            { BOOST_WAVE_RET(T_MINUSMINUS); }
-    ","             { BOOST_WAVE_RET(T_COMMA); }
-    "->*"
-        { 
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy908;
+            if (yych <= '`') goto yy907;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy907:
+#line 219 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
+#line 6065 "strict_cpp_re.inc"
+yy908:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 103;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy911:
+#line 205 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
+#line 6083 "strict_cpp_re.inc"
+yy912:
+    ++YYCURSOR;
+#line 166 "strict_cpp.re"
+    { 
             if (s->act_in_c99_mode) {
                 --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
+                BOOST_WAVE_RET(T_DOT);
             }
             else {
-                BOOST_WAVE_RET(T_ARROWSTAR); 
+                BOOST_WAVE_RET(T_DOTSTAR); 
             }
         }
-    "->"            { BOOST_WAVE_RET(T_ARROW); }
-    "??/"           { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-
-
-    ([a-zA-Z_] | UniversalChar) ([a-zA-Z_0-9] | UniversalChar)*
-        { BOOST_WAVE_RET(T_IDENTIFIER); }
-
-    "L"? (['] (EscapeSequence|any\[\n\r\\']|UniversalChar)+ ['])
-        { BOOST_WAVE_RET(T_CHARLIT); }
-    
-    "L"? (["] (EscapeSequence|any\[\n\r\\"]|UniversalChar)* ["])
-        { BOOST_WAVE_RET(T_STRINGLIT); }
-    
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "<" (any\[\n\r>])+ ">" 
-        { BOOST_WAVE_RET(T_PP_HHEADER); }
-
-    Pound PPSpace ( "include" | "include_next") PPSpace "\"" (any\[\n\r"])+ "\"" 
-        { BOOST_WAVE_RET(T_PP_QHEADER); } 
-
-    Pound PPSpace ( "include" | "include_next") PPSpace
-        { BOOST_WAVE_RET(T_PP_INCLUDE); } 
-
-    Pound PPSpace "if"        { BOOST_WAVE_RET(T_PP_IF); }
-    Pound PPSpace "ifdef"     { BOOST_WAVE_RET(T_PP_IFDEF); }
-    Pound PPSpace "ifndef"    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-    Pound PPSpace "else"      { BOOST_WAVE_RET(T_PP_ELSE); }
-    Pound PPSpace "elif"      { BOOST_WAVE_RET(T_PP_ELIF); }
-    Pound PPSpace "endif"     { BOOST_WAVE_RET(T_PP_ENDIF); }
-    Pound PPSpace "define"    { BOOST_WAVE_RET(T_PP_DEFINE); }
-    Pound PPSpace "undef"     { BOOST_WAVE_RET(T_PP_UNDEF); }
-    Pound PPSpace "line"      { BOOST_WAVE_RET(T_PP_LINE); }
-    Pound PPSpace "error"     { BOOST_WAVE_RET(T_PP_ERROR); }
-    Pound PPSpace "pragma"    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-
-    Pound PPSpace "warning"   { BOOST_WAVE_RET(T_PP_WARNING); }
-
-    Pound PPSpace "region"    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-    Pound PPSpace "endregion" { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+#line 6096 "strict_cpp_re.inc"
+yy914:
+    yych = *++YYCURSOR;
+    if (yych == '.') goto yy916;
+    goto yy98;
+yy915:
+    yych = *++YYCURSOR;
+    goto yy7;
+yy916:
+    ++YYCURSOR;
+#line 152 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELLIPSIS); }
+#line 6108 "strict_cpp_re.inc"
+yy918:
+    ++YYCURSOR;
+#line 199 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
+#line 6113 "strict_cpp_re.inc"
+yy920:
+    ++YYCURSOR;
+#line 44 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6118 "strict_cpp_re.inc"
+yy922:
+    ++YYCURSOR;
+#line 43 "strict_cpp.re"
+    { goto ccomment; }
+#line 6123 "strict_cpp_re.inc"
+}
+#line 308 "strict_cpp.re"
 
-    [ \t\v\f]+
-        { BOOST_WAVE_RET(T_SPACE); }
 
-    Newline
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
+ccomment:
 
-    "\000"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
+#line 6130 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0C) {
+        if (yych <= 0x08) {
+            if (yych <= 0x00) goto yy933;
+            goto yy935;
+        } else {
+            if (yych == 0x0A) goto yy928;
+            goto yy931;
+        }
+    } else {
+        if (yych <= 0x1F) {
+            if (yych <= 0x0D) goto yy930;
+            goto yy935;
+        } else {
+            if (yych != '*') goto yy932;
         }
-        BOOST_WAVE_RET(T_EOF);
-    }
-
-    any        { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-
-    anyctrl
-    {
-        // 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);
     }
-*/
-
-ccomment:
-/*!re2c
-    "*/"            { BOOST_WAVE_RET(T_CCOMMENT); }
-    
-    Newline
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '/') goto yy938;
+yy927:
+#line 323 "strict_cpp.re"
+    { goto ccomment; }
+#line 6156 "strict_cpp_re.inc"
+yy928:
+    ++YYCURSOR;
+yy929:
+#line 315 "strict_cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
         /*s->tok = cursor; */
@@ -319,38 +6164,78 @@
         cursor.column = 1;
         goto ccomment;
     }
-
-    any            { goto ccomment; }
-
-    "\000"
+#line 6168 "strict_cpp_re.inc"
+yy930:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy937;
+    goto yy929;
+yy931:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy932:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy933:
+    ++YYCURSOR;
+#line 326 "strict_cpp.re"
     {
         if(cursor == s->eof) 
         {
             BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "unterminated 'C' style comment");
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "unterminated 'C' style comment");
         }
         else
         {
             --YYCURSOR;                   // next call returns T_EOF
             BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character: '\\000' in input stream");
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character: '\\000' in input stream");
         }
     }
-
-    anyctrl
+#line 6197 "strict_cpp_re.inc"
+yy935:
+    ++YYCURSOR;
+#line 343 "strict_cpp.re"
     {
         // flag the error
         BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
     }
-*/
+#line 6207 "strict_cpp_re.inc"
+yy937:
+    yych = *++YYCURSOR;
+    goto yy929;
+yy938:
+    ++YYCURSOR;
+#line 312 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CCOMMENT); }
+#line 6215 "strict_cpp_re.inc"
+}
+#line 349 "strict_cpp.re"
+
 
 cppcomment:
-/*!re2c
-    Newline
+
+#line 6222 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0A) {
+        if (yych <= 0x00) goto yy948;
+        if (yych <= 0x08) goto yy950;
+        if (yych <= 0x09) goto yy945;
+    } else {
+        if (yych <= 0x0C) goto yy945;
+        if (yych <= 0x0D) goto yy944;
+        if (yych <= 0x1F) goto yy950;
+        goto yy947;
+    }
+    ++YYCURSOR;
+yy943:
+#line 354 "strict_cpp.re"
     {
         /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
         /*s->tok = cursor; */
@@ -358,37 +6243,59 @@
         cursor.column = 1;
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-
-    any            { goto cppcomment; }
-
-    "\000"
+#line 6247 "strict_cpp_re.inc"
+yy944:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy952;
+    goto yy943;
+yy945:
+    ++YYCURSOR;
+yy946:
+#line 362 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6257 "strict_cpp_re.inc"
+yy947:
+    yych = *++YYCURSOR;
+    goto yy946;
+yy948:
+    ++YYCURSOR;
+#line 365 "strict_cpp.re"
     {
         if (s->eof && cursor != s->eof) 
         {
             --YYCURSOR;                     // next call returns T_EOF
             BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
         }
         
         --YYCURSOR;                         // next call returns T_EOF
         if (!s->single_line_only)
         {
             BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C++' style comment");
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "Unterminated 'C++' style comment");
         }
         BOOST_WAVE_RET(T_CPPCOMMENT);
     }
-
-    anyctrl
+#line 6282 "strict_cpp_re.inc"
+yy950:
+    ++YYCURSOR;
+#line 385 "strict_cpp.re"
     {
         // flag the error
         BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
     }
-*/
+#line 6292 "strict_cpp_re.inc"
+yy952:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy943;
+}
+#line 391 "strict_cpp.re"
+
 
 /* this subscanner is called whenever a pp_number has been started */
 pp_number:
@@ -398,18 +6305,548 @@
     limit = uchar_wrapper(s->lim);
 
     if (s->detect_pp_numbers) {
-    /*!re2c
-        "."? Digit (Digit | NonDigit | ExponentStart | ".")*
-            { BOOST_WAVE_RET(T_PP_NUMBER); }
-    */
+    
+#line 6310 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,  64,   0, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,   0,   0,   0,   0,   0,   0, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,  64, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych == '.') goto yy956;
+    if (yych <= '/') goto yy955;
+    if (yych <= '9') goto yy957;
+yy955:
+    YYCURSOR = YYMARKER;
+    goto yy959;
+yy956:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy955;
+    if (yych >= ':') goto yy955;
+yy957:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy957;
+    }
+    if (yych <= 'Z') {
+        if (yych == '?') goto yy963;
+        if (yych >= 'A') goto yy960;
+    } else {
+        if (yych <= '\\') {
+            if (yych >= '\\') goto yy962;
+        } else {
+            if (yych == 'e') goto yy960;
+        }
+    }
+yy959:
+#line 403 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_NUMBER); }
+#line 6379 "strict_cpp_re.inc"
+yy960:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy960;
+    }
+    if (yych <= '?') {
+        if (yych <= '.') {
+            if (yych == '+') goto yy957;
+            if (yych <= ',') goto yy959;
+            goto yy957;
+        } else {
+            if (yych <= '/') goto yy959;
+            if (yych <= '9') goto yy957;
+            if (yych <= '>') goto yy959;
+            goto yy963;
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= '@') goto yy959;
+            if (yych <= 'Z') goto yy957;
+            if (yych <= '[') goto yy959;
+        } else {
+            if (yych <= '_') {
+                if (yych <= '^') goto yy959;
+                goto yy957;
+            } else {
+                if (yych <= '`') goto yy959;
+                if (yych <= 'z') goto yy957;
+                goto yy959;
+            }
+        }
+    }
+yy962:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy966;
+    if (yych == 'u') goto yy965;
+    goto yy955;
+yy963:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy955;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy962;
+    goto yy955;
+yy965:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy974;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy974;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy974;
+        goto yy955;
+    }
+yy966:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy967;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy967:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy968;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy968:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy969;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy969:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy970;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy970:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy971;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy971:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy972;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy972:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy973;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy973:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+yy974:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy975;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy975:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy976;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy976:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+}
+#line 404 "strict_cpp.re"
+
     }
     else {
-    /*!re2c
-        ((FractionalConstant ExponentPart?) | (Digit+ ExponentPart)) FloatingSuffix?
-            { BOOST_WAVE_RET(T_FLOATLIT); }
-            
-        Integer { goto integer_suffix; } 
-    */
+    
+#line 6587 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+        224, 224, 224, 224, 224, 224, 224, 224, 
+        160, 160,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+    yych = *YYCURSOR;
+    if (yych <= '/') {
+        if (yych == '.') goto yy984;
+    } else {
+        if (yych <= '0') goto yy980;
+        if (yych <= '9') goto yy982;
+    }
+yy979:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 0) {
+        goto yy981;
+    } else {
+        goto yy987;
+    }
+yy980:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= 'E') {
+        if (yych <= '/') {
+            if (yych == '.') goto yy985;
+        } else {
+            if (yych <= '9') goto yy1002;
+            if (yych >= 'E') goto yy995;
+        }
+    } else {
+        if (yych <= 'd') {
+            if (yych == 'X') goto yy1001;
+        } else {
+            if (yych <= 'e') goto yy995;
+            if (yych == 'x') goto yy1001;
+        }
+    }
+yy981:
+#line 411 "strict_cpp.re"
+    { goto integer_suffix; }
+#line 6664 "strict_cpp_re.inc"
+yy982:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy982;
+    }
+    if (yych <= 'D') {
+        if (yych == '.') goto yy985;
+        goto yy981;
+    } else {
+        if (yych <= 'E') goto yy995;
+        if (yych == 'e') goto yy995;
+        goto yy981;
+    }
+yy984:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy985:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= 'D') {
+            if (yych <= '/') goto yy987;
+            if (yych <= '9') goto yy985;
+        } else {
+            if (yych <= 'E') goto yy988;
+            if (yych <= 'F') goto yy989;
+        }
+    } else {
+        if (yych <= 'e') {
+            if (yych <= 'L') goto yy990;
+            if (yych >= 'e') goto yy988;
+        } else {
+            if (yych <= 'f') goto yy989;
+            if (yych == 'l') goto yy990;
+        }
+    }
+yy987:
+#line 409 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOATLIT); }
+#line 6710 "strict_cpp_re.inc"
+yy988:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych == '+') goto yy992;
+        goto yy979;
+    } else {
+        if (yych <= '-') goto yy992;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy993;
+        goto yy979;
+    }
+yy989:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy991;
+    if (yych == 'l') goto yy991;
+    goto yy987;
+yy990:
+    yych = *++YYCURSOR;
+    if (yych == 'F') goto yy991;
+    if (yych != 'f') goto yy987;
+yy991:
+    yych = *++YYCURSOR;
+    goto yy987;
+yy992:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy993:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy993;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy995:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych != '+') goto yy979;
+    } else {
+        if (yych <= '-') goto yy996;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy997;
+        goto yy979;
+    }
+yy996:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy997:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy997;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy999:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy981;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy981;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy981;
+        }
+    }
+yy1001:
+    yych = *++YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy979;
+yy1002:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy979;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy979;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy979;
+        }
+    }
+yy1004:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy981;
+}
+#line 412 "strict_cpp.re"
+
     }
 }
 
@@ -417,21 +6854,141 @@
 integer_suffix:
 {
     if (s->enable_ms_extensions) {
-    /*!re2c
-        LongIntegerSuffix | "i64"
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
+    
+#line 6859 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *(YYMARKER = YYCURSOR);
+    if (yych <= 'h') {
+        if (yych <= 'L') {
+            if (yych >= 'L') goto yy1010;
+        } else {
+            if (yych == 'U') goto yy1009;
+        }
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'i') goto yy1011;
+            if (yych >= 'l') goto yy1010;
+        } else {
+            if (yych == 'u') goto yy1009;
+        }
+    }
+yy1008:
+#line 425 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6881 "strict_cpp_re.inc"
+yy1009:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1018;
+    if (yych == 'l') goto yy1018;
+    goto yy1008;
+yy1010:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1017;
+        if (yych <= 'T') goto yy1008;
+        goto yy1016;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1008;
+            goto yy1017;
+        } else {
+            if (yych == 'u') goto yy1016;
+            goto yy1008;
+        }
+    }
+yy1011:
+    yych = *++YYCURSOR;
+    if (yych == '6') goto yy1013;
+yy1012:
+    YYCURSOR = YYMARKER;
+    goto yy1008;
+yy1013:
+    yych = *++YYCURSOR;
+    if (yych != '4') goto yy1012;
+yy1014:
+    ++YYCURSOR;
+yy1015:
+#line 422 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6916 "strict_cpp_re.inc"
+yy1016:
+    yych = *++YYCURSOR;
+    goto yy1008;
+yy1017:
+    yych = *++YYCURSOR;
+    if (yych == 'U') goto yy1014;
+    if (yych == 'u') goto yy1014;
+    goto yy1015;
+yy1018:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1014;
+    if (yych == 'l') goto yy1014;
+    goto yy1008;
+}
+#line 426 "strict_cpp.re"
+
     }
     else {
-    /*!re2c
-        LongIntegerSuffix
-            { BOOST_WAVE_RET(T_LONGINTLIT); }
-
-        IntegerSuffix?
-            { BOOST_WAVE_RET(T_INTLIT); }
-    */
+    
+#line 6936 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1023;
+        if (yych >= 'U') goto yy1022;
+    } else {
+        if (yych <= 'l') {
+            if (yych >= 'l') goto yy1023;
+        } else {
+            if (yych == 'u') goto yy1022;
+        }
+    }
+yy1021:
+#line 434 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6954 "strict_cpp_re.inc"
+yy1022:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1028;
+    if (yych == 'l') goto yy1028;
+    goto yy1021;
+yy1023:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1025;
+        if (yych <= 'T') goto yy1021;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1021;
+            goto yy1025;
+        } else {
+            if (yych != 'u') goto yy1021;
+        }
+    }
+    yych = *++YYCURSOR;
+    goto yy1021;
+yy1025:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'U') goto yy1027;
+    if (yych == 'u') goto yy1027;
+yy1026:
+#line 431 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6982 "strict_cpp_re.inc"
+yy1027:
+    yych = *++YYCURSOR;
+    goto yy1026;
+yy1028:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1027;
+    if (yych == 'l') goto yy1027;
+    goto yy1021;
+}
+#line 435 "strict_cpp.re"
+
     }
 }
Modified: branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc
==============================================================================
--- branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc	(original)
+++ branches/CMake/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -1,6994 +1,13991 @@
-/* Generated by re2c 0.13.1 on Wed Nov 21 11:51:32 2007 */
-#line 1 "strict_cpp.re"
-/*=============================================================================
-    Boost.Wave: A Standard compliant C++ preprocessor library
-
-    Copyright (c) 2001 Daniel C. Nuffer
-    Copyright (c) 2001-2008 Hartmut Kaiser. 
-    Distributed under the Boost Software License, Version 1.0. (See accompanying 
-    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-    This is a strict lexer conforming to the Standard as close as possible.
-    It does not allow the '$' to be part of identifiers. If you need the '$'
-    character in identifiers please include the lexer definition provided
-    in the cpp.re file.
-    
-    TODO: 
-        handle errors better.
-=============================================================================*/
-
-#line 40 "strict_cpp.re"
-
-
-
-#line 25 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-        /* table 1 .. 8: 0 */
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,  58,  32,  58,  58,  64,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-         58,  58,  50,  58,  58,  58,  58,  56, 
-         58,  58, 154,  58,  58,  58,  58,  58, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  58,  58,  58,  58,  42,  56, 
-         58,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  58,  57,  58,  58,  62, 
-         58,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  62,  62,  62,  62,  62, 
-         62,  62,  62,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-         58,  58,  58,  58,  58,  58,  58,  58, 
-        /* table 9 .. 12: 256 */
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,  48,   0,  48,  48,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-         48,  32,   0,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         96,  96,  96,  96,  96,  96,  96,  96, 
-         96,  96,  32,  32,  32,  32,  32, 128, 
-         32,  96,  96,  96,  96,  96,  96,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,   0,  32,  32,  32, 
-         32,  96,  96,  96,  96,  96,  96,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-         32,  32,  32,  32,  32,  32,  32,  32, 
-    };
-
-    if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
-    yych = *YYCURSOR;
-    switch(yych) {
-    case 0x00:    goto yy88;
-    case 0x01:
-    case 0x02:
-    case 0x03:
-    case 0x04:
-    case 0x05:
-    case 0x06:
-    case 0x07:
-    case 0x08:
-    case 0x0E:
-    case 0x0F:
-    case 0x10:
-    case 0x11:
-    case 0x12:
-    case 0x13:
-    case 0x14:
-    case 0x15:
-    case 0x16:
-    case 0x17:
-    case 0x18:
-    case 0x19:
-    case 0x1A:
-    case 0x1B:
-    case 0x1C:
-    case 0x1D:
-    case 0x1E:
-    case 0x1F:    goto yy91;
-    case 0x09:
-    case 0x0B:
-    case 0x0C:    goto yy82;
-    case 0x0A:    goto yy85;
-    case 0x0D:    goto yy87;
-    case ' ':    goto yy84;
-    case '!':    goto yy68;
-    case '"':    goto yy81;
-    case '#':    goto yy45;
-    case '%':    goto yy37;
-    case '&':    goto yy62;
-    case '\'':    goto yy80;
-    case '(':    goto yy47;
-    case ')':    goto yy49;
-    case '*':    goto yy57;
-    case '+':    goto yy53;
-    case ',':    goto yy74;
-    case '-':    goto yy55;
-    case '.':    goto yy4;
-    case '/':    goto yy2;
-    case '0':
-    case '1':
-    case '2':
-    case '3':
-    case '4':
-    case '5':
-    case '6':
-    case '7':
-    case '8':
-    case '9':    goto yy6;
-    case ':':    goto yy43;
-    case ';':    goto yy51;
-    case '<':    goto yy33;
-    case '=':    goto yy70;
-    case '>':    goto yy72;
-    case '?':    goto yy31;
-    case 'A':
-    case 'B':
-    case 'C':
-    case 'D':
-    case 'E':
-    case 'F':
-    case 'G':
-    case 'H':
-    case 'I':
-    case 'J':
-    case 'K':
-    case 'M':
-    case 'N':
-    case 'O':
-    case 'P':
-    case 'Q':
-    case 'R':
-    case 'S':
-    case 'T':
-    case 'U':
-    case 'V':
-    case 'W':
-    case 'X':
-    case 'Y':
-    case 'Z':
-    case 'h':
-    case 'j':
-    case 'k':
-    case 'q':
-    case 'y':
-    case 'z':    goto yy76;
-    case 'L':    goto yy77;
-    case '[':    goto yy39;
-    case '\\':    goto yy78;
-    case ']':    goto yy41;
-    case '^':    goto yy59;
-    case '_':    goto yy28;
-    case 'a':    goto yy8;
-    case 'b':    goto yy10;
-    case 'c':    goto yy11;
-    case 'd':    goto yy12;
-    case 'e':    goto yy13;
-    case 'f':    goto yy14;
-    case 'g':    goto yy15;
-    case 'i':    goto yy16;
-    case 'l':    goto yy17;
-    case 'm':    goto yy18;
-    case 'n':    goto yy19;
-    case 'o':    goto yy20;
-    case 'p':    goto yy21;
-    case 'r':    goto yy22;
-    case 's':    goto yy23;
-    case 't':    goto yy24;
-    case 'u':    goto yy25;
-    case 'v':    goto yy26;
-    case 'w':    goto yy27;
-    case 'x':    goto yy61;
-    case '{':    goto yy29;
-    case '|':    goto yy64;
-    case '}':    goto yy35;
-    case '~':    goto yy66;
-    default:    goto yy90;
-    }
-yy2:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '.') {
-        if(yych == '*') goto yy922;
-    } else {
-        if(yych <= '/') goto yy920;
-        if(yych == '=') goto yy918;
-    }
-#line 178 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DIVIDE); }
-#line 237 "strict_cpp_re.inc"
-yy4:
-    yyaccept = 0;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '-') {
-        if(yych == '*') goto yy912;
-    } else {
-        if(yych <= '.') goto yy914;
-        if(yych <= '/') goto yy5;
-        if(yych <= '9') goto yy915;
-    }
-yy5:
-#line 164 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DOT); }
-#line 251 "strict_cpp_re.inc"
-yy6:
-    ++YYCURSOR;
-yy7:
-#line 45 "strict_cpp.re"
-    { goto pp_number; }
-#line 257 "strict_cpp_re.inc"
-yy8:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') {
-        if(yych == 'n') goto yy898;
-        goto yy195;
-    } else {
-        if(yych <= 's') goto yy899;
-        if(yych == 'u') goto yy900;
-        goto yy195;
-    }
-yy9:
-#line 243 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_IDENTIFIER); }
-#line 272 "strict_cpp_re.inc"
-yy10:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'n') {
-        if(yych == 'i') goto yy880;
-        goto yy195;
-    } else {
-        if(yych <= 'o') goto yy881;
-        if(yych == 'r') goto yy882;
-        goto yy195;
-    }
-yy11:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy842;
-    case 'h':    goto yy843;
-    case 'l':    goto yy844;
-    case 'o':    goto yy845;
-    default:    goto yy195;
-    }
-yy12:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'n') {
-        if(yych == 'e') goto yy811;
-        goto yy195;
-    } else {
-        if(yych <= 'o') goto yy812;
-        if(yych == 'y') goto yy814;
-        goto yy195;
-    }
-yy13:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'm') {
-        if(yych == 'l') goto yy786;
-        goto yy195;
-    } else {
-        if(yych <= 'n') goto yy787;
-        if(yych == 'x') goto yy788;
-        goto yy195;
-    }
-yy14:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy767;
-    case 'l':    goto yy768;
-    case 'o':    goto yy769;
-    case 'r':    goto yy770;
-    default:    goto yy195;
-    }
-yy15:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy763;
-    goto yy195;
-yy16:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'l') {
-        if(yych == 'f') goto yy747;
-        goto yy195;
-    } else {
-        if(yych <= 'm') goto yy749;
-        if(yych <= 'n') goto yy750;
-        goto yy195;
-    }
-yy17:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy743;
-    goto yy195;
-yy18:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy736;
-    goto yy195;
-yy19:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'd') {
-        if(yych == 'a') goto yy717;
-        goto yy195;
-    } else {
-        if(yych <= 'e') goto yy718;
-        if(yych == 'o') goto yy719;
-        goto yy195;
-    }
-yy20:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy703;
-    if(yych == 'r') goto yy704;
-    goto yy195;
-yy21:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy682;
-    if(yych == 'u') goto yy683;
-    goto yy195;
-yy22:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy654;
-    goto yy195;
-yy23:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 's') {
-        if(yych <= 'g') goto yy195;
-        if(yych <= 'h') goto yy615;
-        if(yych <= 'i') goto yy616;
-        goto yy195;
-    } else {
-        if(yych <= 't') goto yy617;
-        if(yych == 'w') goto yy618;
-        goto yy195;
-    }
-yy24:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych == 'e') goto yy578;
-        if(yych <= 'g') goto yy195;
-        goto yy579;
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'q') goto yy195;
-            goto yy580;
-        } else {
-            if(yych == 'y') goto yy581;
-            goto yy195;
-        }
-    }
-yy25:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy561;
-    if(yych == 's') goto yy562;
-    goto yy195;
-yy26:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy543;
-    if(yych == 'o') goto yy544;
-    goto yy195;
-yy27:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'c') goto yy531;
-    if(yych == 'h') goto yy532;
-    goto yy195;
-yy28:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case '_':    goto yy442;
-    case 'a':    goto yy443;
-    case 'b':    goto yy444;
-    case 'c':    goto yy445;
-    case 'd':    goto yy446;
-    case 'f':    goto yy447;
-    case 'i':    goto yy448;
-    case 's':    goto yy449;
-    default:    goto yy195;
-    }
-yy29:
-    ++YYCURSOR;
-#line 128 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE); }
-#line 445 "strict_cpp_re.inc"
-yy31:
-    yyaccept = 2;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '?') goto yy407;
-yy32:
-#line 153 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_QUESTION_MARK); }
-#line 453 "strict_cpp_re.inc"
-yy33:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= ':') {
-        if(yych == '%') goto yy403;
-        if(yych >= ':') goto yy401;
-    } else {
-        if(yych <= ';') goto yy34;
-        if(yych <= '<') goto yy399;
-        if(yych <= '=') goto yy397;
-    }
-yy34:
-#line 194 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LESS); }
-#line 467 "strict_cpp_re.inc"
-yy35:
-    ++YYCURSOR;
-#line 131 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE); }
-#line 472 "strict_cpp_re.inc"
-yy37:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') {
-        if(yych == ':') goto yy388;
-    } else {
-        if(yych <= '=') goto yy390;
-        if(yych <= '>') goto yy392;
-    }
-#line 179 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PERCENT); }
-#line 483 "strict_cpp_re.inc"
-yy39:
-    ++YYCURSOR;
-#line 134 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET); }
-#line 488 "strict_cpp_re.inc"
-yy41:
-    ++YYCURSOR;
-#line 137 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
-#line 493 "strict_cpp_re.inc"
-yy43:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == ':') goto yy384;
-    if(yych == '>') goto yy386;
-#line 151 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_COLON); }
-#line 500 "strict_cpp_re.inc"
-yy45:
-    yyaccept = 3;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'c') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '#') goto yy272;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych == '?') goto yy271;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'i') {
-                if(yych <= 'e') goto yy261;
-                if(yych >= 'i') goto yy261;
-            } else {
-                if(yych == 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy46;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy46:
-#line 140 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND); }
-#line 541 "strict_cpp_re.inc"
-yy47:
-    ++YYCURSOR;
-#line 148 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTPAREN); }
-#line 546 "strict_cpp_re.inc"
-yy49:
-    ++YYCURSOR;
-#line 149 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTPAREN); }
-#line 551 "strict_cpp_re.inc"
-yy51:
-    ++YYCURSOR;
-#line 150 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SEMICOLON); }
-#line 556 "strict_cpp_re.inc"
-yy53:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '+') goto yy256;
-    if(yych == '=') goto yy258;
-#line 175 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PLUS); }
-#line 563 "strict_cpp_re.inc"
-yy55:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') {
-        if(yych == '-') goto yy250;
-    } else {
-        if(yych <= '=') goto yy252;
-        if(yych <= '>') goto yy248;
-    }
-#line 176 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MINUS); }
-#line 574 "strict_cpp_re.inc"
-yy57:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy246;
-#line 177 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STAR); }
-#line 580 "strict_cpp_re.inc"
-yy59:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy244;
-#line 180 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_XOR); }
-#line 586 "strict_cpp_re.inc"
-yy61:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy237;
-    goto yy195;
-yy62:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '&') goto yy233;
-    if(yych == '=') goto yy235;
-#line 183 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_AND); }
-#line 598 "strict_cpp_re.inc"
-yy64:
-    yyaccept = 4;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '>') {
-        if(yych == '=') goto yy228;
-    } else {
-        if(yych <= '?') goto yy225;
-        if(yych == '|') goto yy226;
-    }
-yy65:
-#line 185 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OR); }
-#line 611 "strict_cpp_re.inc"
-yy66:
-    ++YYCURSOR;
-#line 188 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_COMPL); }
-#line 616 "strict_cpp_re.inc"
-yy68:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy223;
-#line 191 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_NOT); }
-#line 622 "strict_cpp_re.inc"
-yy70:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy221;
-#line 193 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ASSIGN); }
-#line 628 "strict_cpp_re.inc"
-yy72:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) <= '<') goto yy73;
-    if(yych <= '=') goto yy215;
-    if(yych <= '>') goto yy217;
-yy73:
-#line 195 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_GREATER); }
-#line 637 "strict_cpp_re.inc"
-yy74:
-    ++YYCURSOR;
-#line 227 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_COMMA); }
-#line 642 "strict_cpp_re.inc"
-yy76:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    goto yy195;
-yy77:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych <= '\'') {
-        if(yych == '"') goto yy96;
-        if(yych <= '&') goto yy9;
-        goto yy214;
-    } else {
-        if(yych <= '?') {
-            if(yych <= '>') goto yy9;
-            goto yy197;
-        } else {
-            if(yych == '\\') goto yy196;
-            goto yy9;
-        }
-    }
-yy78:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'U') goto yy186;
-    if(yych == 'u') goto yy185;
-yy79:
-#line 299 "strict_cpp.re"
-    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
-#line 674 "strict_cpp_re.inc"
-yy80:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 0x0C) {
-        if(yych == 0x09) goto yy142;
-        if(yych <= 0x0A) goto yy79;
-        goto yy142;
-    } else {
-        if(yych <= 0x1F) goto yy79;
-        if(yych == '\'') goto yy79;
-        goto yy142;
-    }
-yy81:
-    yyaccept = 5;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 0x0A) {
-        if(yych == 0x09) goto yy97;
-        goto yy79;
-    } else {
-        if(yych <= 0x0C) goto yy97;
-        if(yych <= 0x1F) goto yy79;
-        goto yy97;
-    }
-yy82:
-    ++YYCURSOR;
-    yych = *YYCURSOR;
-    goto yy95;
-yy83:
-#line 279 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SPACE); }
-#line 705 "strict_cpp_re.inc"
-yy84:
-    yych = *++YYCURSOR;
-    goto yy95;
-yy85:
-    ++YYCURSOR;
-yy86:
-#line 282 "strict_cpp.re"
-    {
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_NEWLINE);
-    }
-#line 718 "strict_cpp_re.inc"
-yy87:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy93;
-    goto yy86;
-yy88:
-    ++YYCURSOR;
-#line 289 "strict_cpp.re"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        BOOST_WAVE_RET(T_EOF);
-    }
-#line 735 "strict_cpp_re.inc"
-yy90:
-    yych = *++YYCURSOR;
-    goto yy79;
-yy91:
-    ++YYCURSOR;
-#line 302 "strict_cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 748 "strict_cpp_re.inc"
-yy93:
-    yych = *++YYCURSOR;
-    goto yy86;
-yy94:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy95:
-    if(yybm[256+yych] & 16) {
-        goto yy94;
-    }
-    goto yy83;
-yy96:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy97:
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy98:
-    YYCURSOR = YYMARKER;
-    if(yyaccept <= 51) {
-        if(yyaccept <= 25) {
-            if(yyaccept <= 12) {
-                if(yyaccept <= 6) {
-                    if(yyaccept <= 3) {
-                        if(yyaccept <= 1) {
-                            if(yyaccept <= 0) {
-                                goto yy5;
-                            } else {
-                                goto yy9;
-                            }
-                        } else {
-                            if(yyaccept <= 2) {
-                                goto yy32;
-                            } else {
-                                goto yy46;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 5) {
-                            if(yyaccept <= 4) {
-                                goto yy65;
-                            } else {
-                                goto yy79;
-                            }
-                        } else {
-                            goto yy102;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 9) {
-                        if(yyaccept <= 8) {
-                            if(yyaccept <= 7) {
-                                goto yy152;
-                            } else {
-                                goto yy239;
-                            }
-                        } else {
-                            goto yy243;
-                        }
-                    } else {
-                        if(yyaccept <= 11) {
-                            if(yyaccept <= 10) {
-                                goto yy279;
-                            } else {
-                                goto yy294;
-                            }
-                        } else {
-                            goto yy389;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 19) {
-                    if(yyaccept <= 16) {
-                        if(yyaccept <= 14) {
-                            if(yyaccept <= 13) {
-                                goto yy417;
-                            } else {
-                                goto yy421;
-                            }
-                        } else {
-                            if(yyaccept <= 15) {
-                                goto yy425;
-                            } else {
-                                goto yy456;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 18) {
-                            if(yyaccept <= 17) {
-                                goto yy462;
-                            } else {
-                                goto yy470;
-                            }
-                        } else {
-                            goto yy478;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 22) {
-                        if(yyaccept <= 21) {
-                            if(yyaccept <= 20) {
-                                goto yy483;
-                            } else {
-                                goto yy488;
-                            }
-                        } else {
-                            goto yy491;
-                        }
-                    } else {
-                        if(yyaccept <= 24) {
-                            if(yyaccept <= 23) {
-                                goto yy501;
-                            } else {
-                                goto yy507;
-                            }
-                        } else {
-                            goto yy510;
-                        }
-                    }
-                }
-            }
-        } else {
-            if(yyaccept <= 38) {
-                if(yyaccept <= 32) {
-                    if(yyaccept <= 29) {
-                        if(yyaccept <= 27) {
-                            if(yyaccept <= 26) {
-                                goto yy517;
-                            } else {
-                                goto yy524;
-                            }
-                        } else {
-                            if(yyaccept <= 28) {
-                                goto yy526;
-                            } else {
-                                goto yy528;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 31) {
-                            if(yyaccept <= 30) {
-                                goto yy530;
-                            } else {
-                                goto yy536;
-                            }
-                        } else {
-                            goto yy542;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 35) {
-                        if(yyaccept <= 34) {
-                            if(yyaccept <= 33) {
-                                goto yy552;
-                            } else {
-                                goto yy554;
-                            }
-                        } else {
-                            goto yy560;
-                        }
-                    } else {
-                        if(yyaccept <= 37) {
-                            if(yyaccept <= 36) {
-                                goto yy566;
-                            } else {
-                                goto yy574;
-                            }
-                        } else {
-                            goto yy577;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 45) {
-                    if(yyaccept <= 42) {
-                        if(yyaccept <= 40) {
-                            if(yyaccept <= 39) {
-                                goto yy590;
-                            } else {
-                                goto yy592;
-                            }
-                        } else {
-                            if(yyaccept <= 41) {
-                                goto yy595;
-                            } else {
-                                goto yy598;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 44) {
-                            if(yyaccept <= 43) {
-                                goto yy600;
-                            } else {
-                                goto yy605;
-                            }
-                        } else {
-                            goto yy607;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 48) {
-                        if(yyaccept <= 47) {
-                            if(yyaccept <= 46) {
-                                goto yy614;
-                            } else {
-                                goto yy623;
-                            }
-                        } else {
-                            goto yy629;
-                        }
-                    } else {
-                        if(yyaccept <= 50) {
-                            if(yyaccept <= 49) {
-                                goto yy633;
-                            } else {
-                                goto yy639;
-                            }
-                        } else {
-                            goto yy645;
-                        }
-                    }
-                }
-            }
-        }
-    } else {
-        if(yyaccept <= 77) {
-            if(yyaccept <= 64) {
-                if(yyaccept <= 58) {
-                    if(yyaccept <= 55) {
-                        if(yyaccept <= 53) {
-                            if(yyaccept <= 52) {
-                                goto yy649;
-                            } else {
-                                goto yy653;
-                            }
-                        } else {
-                            if(yyaccept <= 54) {
-                                goto yy661;
-                            } else {
-                                goto yy675;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 57) {
-                            if(yyaccept <= 56) {
-                                goto yy681;
-                            } else {
-                                goto yy688;
-                            }
-                        } else {
-                            goto yy697;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 61) {
-                        if(yyaccept <= 60) {
-                            if(yyaccept <= 59) {
-                                goto yy702;
-                            } else {
-                                goto yy705;
-                            }
-                        } else {
-                            goto yy709;
-                        }
-                    } else {
-                        if(yyaccept <= 63) {
-                            if(yyaccept <= 62) {
-                                goto yy716;
-                            } else {
-                                goto yy721;
-                            }
-                        } else {
-                            goto yy725;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 71) {
-                    if(yyaccept <= 68) {
-                        if(yyaccept <= 66) {
-                            if(yyaccept <= 65) {
-                                goto yy727;
-                            } else {
-                                goto yy735;
-                            }
-                        } else {
-                            if(yyaccept <= 67) {
-                                goto yy742;
-                            } else {
-                                goto yy746;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 70) {
-                            if(yyaccept <= 69) {
-                                goto yy748;
-                            } else {
-                                goto yy753;
-                            }
-                        } else {
-                            goto yy757;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 74) {
-                        if(yyaccept <= 73) {
-                            if(yyaccept <= 72) {
-                                goto yy762;
-                            } else {
-                                goto yy766;
-                            }
-                        } else {
-                            goto yy775;
-                        }
-                    } else {
-                        if(yyaccept <= 76) {
-                            if(yyaccept <= 75) {
-                                goto yy777;
-                            } else {
-                                goto yy781;
-                            }
-                        } else {
-                            goto yy785;
-                        }
-                    }
-                }
-            }
-        } else {
-            if(yyaccept <= 90) {
-                if(yyaccept <= 84) {
-                    if(yyaccept <= 81) {
-                        if(yyaccept <= 79) {
-                            if(yyaccept <= 78) {
-                                goto yy794;
-                            } else {
-                                goto yy799;
-                            }
-                        } else {
-                            if(yyaccept <= 80) {
-                                goto yy804;
-                            } else {
-                                goto yy807;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 83) {
-                            if(yyaccept <= 82) {
-                                goto yy810;
-                            } else {
-                                goto yy813;
-                            }
-                        } else {
-                            goto yy825;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 87) {
-                        if(yyaccept <= 86) {
-                            if(yyaccept <= 85) {
-                                goto yy830;
-                            } else {
-                                goto yy836;
-                            }
-                        } else {
-                            goto yy841;
-                        }
-                    } else {
-                        if(yyaccept <= 89) {
-                            if(yyaccept <= 88) {
-                                goto yy850;
-                            } else {
-                                goto yy857;
-                            }
-                        } else {
-                            goto yy859;
-                        }
-                    }
-                }
-            } else {
-                if(yyaccept <= 97) {
-                    if(yyaccept <= 94) {
-                        if(yyaccept <= 92) {
-                            if(yyaccept <= 91) {
-                                goto yy865;
-                            } else {
-                                goto yy869;
-                            }
-                        } else {
-                            if(yyaccept <= 93) {
-                                goto yy872;
-                            } else {
-                                goto yy877;
-                            }
-                        }
-                    } else {
-                        if(yyaccept <= 96) {
-                            if(yyaccept <= 95) {
-                                goto yy879;
-                            } else {
-                                goto yy886;
-                            }
-                        } else {
-                            goto yy889;
-                        }
-                    }
-                } else {
-                    if(yyaccept <= 100) {
-                        if(yyaccept <= 99) {
-                            if(yyaccept <= 98) {
-                                goto yy894;
-                            } else {
-                                goto yy897;
-                            }
-                        } else {
-                            goto yy903;
-                        }
-                    } else {
-                        if(yyaccept <= 102) {
-                            if(yyaccept <= 101) {
-                                goto yy905;
-                            } else {
-                                goto yy907;
-                            }
-                        } else {
-                            goto yy911;
-                        }
-                    }
-                }
-            }
-        }
-    }
-yy99:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy112;
-yy100:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '`') {
-        if(yych <= '7') {
-            if(yych <= '&') {
-                if(yych == '"') goto yy96;
-                goto yy98;
-            } else {
-                if(yych <= '\'') goto yy96;
-                if(yych <= '/') goto yy98;
-                goto yy107;
-            }
-        } else {
-            if(yych <= 'T') {
-                if(yych == '?') goto yy105;
-                goto yy98;
-            } else {
-                if(yych <= 'U') goto yy104;
-                if(yych == '\\') goto yy96;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'f') {
-                if(yych <= 'b') goto yy96;
-                if(yych <= 'e') goto yy98;
-                goto yy96;
-            } else {
-                if(yych == 'n') goto yy96;
-                if(yych <= 'q') goto yy98;
-                goto yy96;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 's') goto yy98;
-                if(yych <= 't') goto yy96;
-                goto yy103;
-            } else {
-                if(yych <= 'v') goto yy96;
-                if(yych == 'x') goto yy106;
-                goto yy98;
-            }
-        }
-    }
-yy101:
-    ++YYCURSOR;
-yy102:
-#line 249 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STRINGLIT); }
-#line 1250 "strict_cpp_re.inc"
-yy103:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy138;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy138;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy138;
-        goto yy98;
-    }
-yy104:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy131;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy131;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy131;
-        goto yy98;
-    }
-yy105:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy111;
-    goto yy100;
-yy106:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 64) {
-        goto yy109;
-    }
-    goto yy98;
-yy107:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '"') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '!') goto yy96;
-            goto yy101;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy96;
-            if(yych >= '8') goto yy96;
-        } else {
-            if(yych <= '?') goto yy99;
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy109:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 64) {
-        goto yy109;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '?') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '>') goto yy96;
-            goto yy99;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy111:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych >= '\\') goto yy100;
-yy112:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 128) {
-        goto yy112;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '/') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '.') goto yy96;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy114:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 1) {
-        goto yy114;
-    }
-    if(yych <= '7') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy118;
-                if(yych <= '/') goto yy96;
-                goto yy107;
-            }
-        }
-    } else {
-        if(yych <= 'U') {
-            if(yych == '?') goto yy119;
-            if(yych <= 'T') goto yy96;
-            goto yy117;
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 't') goto yy96;
-            } else {
-                if(yych == 'x') goto yy109;
-                goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-                goto yy128;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-            goto yy128;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych <= 'f') goto yy128;
-                goto yy96;
-            }
-        }
-    }
-yy117:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-                goto yy121;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-            goto yy121;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych <= 'f') goto yy121;
-                goto yy96;
-            }
-        }
-    }
-yy118:
-    yyaccept = 6;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy102;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy119:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych >= '\\') goto yy100;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 128) {
-        goto yy112;
-    }
-    if(yych <= '!') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy96;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy96;
-            if(yych <= 0x1F) goto yy98;
-            goto yy96;
-        }
-    } else {
-        if(yych <= '/') {
-            if(yych <= '"') goto yy101;
-            if(yych <= '.') goto yy96;
-            goto yy114;
-        } else {
-            if(yych == '\\') goto yy100;
-            goto yy96;
-        }
-    }
-yy121:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy128:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy96;
-            if(yych <= 0x0A) goto yy98;
-            goto yy96;
-        } else {
-            if(yych <= '!') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy96;
-            } else {
-                if(yych <= '"') goto yy101;
-                if(yych <= '/') goto yy96;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy99;
-            if(yych <= '@') goto yy96;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy96;
-                goto yy100;
-            } else {
-                if(yych <= '`') goto yy96;
-                if(yych >= 'g') goto yy96;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[256+yych] & 32) {
-        goto yy96;
-    }
-    if(yych <= '!') goto yy98;
-    if(yych <= '"') goto yy101;
-    if(yych <= '[') goto yy99;
-    goto yy100;
-yy131:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy132;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy132:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy133;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy133:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy134;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy134:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy135;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy135:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy136;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy136:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy137;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy137:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy96;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy96;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy96;
-        goto yy98;
-    }
-yy138:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy139;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy139:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy140;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy140:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy96;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy96;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy96;
-        goto yy98;
-    }
-yy141:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy142:
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-yy143:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy156;
-yy144:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '`') {
-        if(yych <= '7') {
-            if(yych <= '&') {
-                if(yych == '"') goto yy141;
-                goto yy98;
-            } else {
-                if(yych <= '\'') goto yy141;
-                if(yych <= '/') goto yy98;
-                goto yy149;
-            }
-        } else {
-            if(yych <= 'T') {
-                if(yych == '?') goto yy147;
-                goto yy98;
-            } else {
-                if(yych <= 'U') goto yy146;
-                if(yych == '\\') goto yy141;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'r') {
-            if(yych <= 'f') {
-                if(yych <= 'b') goto yy141;
-                if(yych <= 'e') goto yy98;
-                goto yy141;
-            } else {
-                if(yych == 'n') goto yy141;
-                if(yych <= 'q') goto yy98;
-                goto yy141;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 's') goto yy98;
-                if(yych <= 't') goto yy141;
-            } else {
-                if(yych <= 'v') goto yy141;
-                if(yych == 'x') goto yy148;
-                goto yy98;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy182;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy182;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy182;
-        goto yy98;
-    }
-yy146:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy175;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy175;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy175;
-        goto yy98;
-    }
-yy147:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy155;
-    goto yy144;
-yy148:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy153;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy153;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy153;
-        goto yy98;
-    }
-yy149:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy141;
-            if(yych >= '8') goto yy141;
-        } else {
-            if(yych <= '?') goto yy143;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy151:
-    ++YYCURSOR;
-yy152:
-#line 246 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CHARLIT); }
-#line 2097 "strict_cpp_re.inc"
-yy153:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy153;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy153;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy153;
-                goto yy141;
-            }
-        }
-    }
-yy155:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-yy156:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych != '/') goto yy141;
-        } else {
-            if(yych <= '?') goto yy156;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-yy158:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '>') {
-        if(yych <= 0x1F) {
-            if(yych <= 0x09) {
-                if(yych <= 0x08) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= 0x0A) goto yy98;
-                if(yych <= 0x0C) goto yy141;
-                goto yy98;
-            }
-        } else {
-            if(yych <= '\'') {
-                if(yych <= '&') goto yy141;
-                goto yy162;
-            } else {
-                if(yych <= '/') goto yy141;
-                if(yych <= '7') goto yy149;
-                goto yy141;
-            }
-        }
-    } else {
-        if(yych <= '\\') {
-            if(yych <= 'T') {
-                if(yych <= '?') goto yy163;
-                goto yy141;
-            } else {
-                if(yych <= 'U') goto yy161;
-                if(yych <= '[') goto yy141;
-                goto yy158;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 't') goto yy141;
-            } else {
-                if(yych == 'x') goto yy153;
-                goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy172;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy172;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy172;
-                goto yy141;
-            }
-        }
-    }
-yy161:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-                goto yy165;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-            goto yy165;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych <= 'f') goto yy165;
-                goto yy141;
-            }
-        }
-    }
-yy162:
-    yyaccept = 7;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy152;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy163:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych >= '\\') goto yy144;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '\'') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy141;
-            goto yy98;
-        } else {
-            if(yych <= 0x0C) goto yy141;
-            if(yych <= 0x1F) goto yy98;
-            if(yych <= '&') goto yy141;
-            goto yy151;
-        }
-    } else {
-        if(yych <= '>') {
-            if(yych == '/') goto yy158;
-            goto yy141;
-        } else {
-            if(yych <= '?') goto yy156;
-            if(yych == '\\') goto yy144;
-            goto yy141;
-        }
-    }
-yy165:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy172:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych <= 0x0C) {
-            if(yych == 0x09) goto yy141;
-            if(yych <= 0x0A) goto yy98;
-            goto yy141;
-        } else {
-            if(yych <= '&') {
-                if(yych <= 0x1F) goto yy98;
-                goto yy141;
-            } else {
-                if(yych <= '\'') goto yy151;
-                if(yych <= '/') goto yy141;
-            }
-        }
-    } else {
-        if(yych <= 'F') {
-            if(yych == '?') goto yy143;
-            if(yych <= '@') goto yy141;
-        } else {
-            if(yych <= '\\') {
-                if(yych <= '[') goto yy141;
-                goto yy144;
-            } else {
-                if(yych <= '`') goto yy141;
-                if(yych >= 'g') goto yy141;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 2) {
-        goto yy141;
-    }
-    if(yych <= '&') goto yy98;
-    if(yych <= '\'') goto yy151;
-    if(yych <= '[') goto yy143;
-    goto yy144;
-yy175:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy176;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy176:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy177;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy177:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy178;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy178:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy179;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy179:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy180;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy180:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy181;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy181:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy141;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy141;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy141;
-        goto yy98;
-    }
-yy182:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy183;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy183:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy184;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy184:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy141;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy141;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy141;
-        goto yy98;
-    }
-yy185:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy211;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy211;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy211;
-        goto yy98;
-    }
-yy186:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy187;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy187:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy188;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy188:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy189;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy189:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy190;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy190:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy191;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy191:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy192;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy192:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy193;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy193:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy194:
-    yyaccept = 1;
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy195:
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych != '\\') goto yy9;
-yy196:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == 'U') goto yy200;
-    if(yych == 'u') goto yy199;
-    goto yy98;
-yy197:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych != '?') goto yy98;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '/') goto yy196;
-    goto yy98;
-yy199:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy208;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy208;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy208;
-        goto yy98;
-    }
-yy200:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy201;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy201:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy202;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy202:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy203;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy203:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy204;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy204:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy205;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy205:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy206;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy206:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy207;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy207:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy208:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy209;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy209:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy210;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy210:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy211:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy212;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy212:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych >= ':') goto yy98;
-    } else {
-        if(yych <= 'F') goto yy213;
-        if(yych <= '`') goto yy98;
-        if(yych >= 'g') goto yy98;
-    }
-yy213:
-    yych = *++YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy98;
-        if(yych <= '9') goto yy194;
-        goto yy98;
-    } else {
-        if(yych <= 'F') goto yy194;
-        if(yych <= '`') goto yy98;
-        if(yych <= 'f') goto yy194;
-        goto yy98;
-    }
-yy214:
-    yych = *++YYCURSOR;
-    if(yych == '\'') goto yy98;
-    goto yy142;
-yy215:
-    ++YYCURSOR;
-#line 217 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_GREATEREQUAL); }
-#line 3027 "strict_cpp_re.inc"
-yy217:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy219;
-#line 210 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
-#line 3033 "strict_cpp_re.inc"
-yy219:
-    ++YYCURSOR;
-#line 211 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
-#line 3038 "strict_cpp_re.inc"
-yy221:
-    ++YYCURSOR;
-#line 213 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_EQUAL); }
-#line 3043 "strict_cpp_re.inc"
-yy223:
-    ++YYCURSOR;
-#line 214 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_NOTEQUAL); }
-#line 3048 "strict_cpp_re.inc"
-yy225:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy230;
-    goto yy98;
-yy226:
-    ++YYCURSOR;
-#line 220 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OROR); }
-#line 3057 "strict_cpp_re.inc"
-yy228:
-    ++YYCURSOR;
-#line 206 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ORASSIGN); }
-#line 3062 "strict_cpp_re.inc"
-yy230:
-    yych = *++YYCURSOR;
-    if(yych != '!') goto yy98;
-    ++YYCURSOR;
-#line 222 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3069 "strict_cpp_re.inc"
-yy233:
-    ++YYCURSOR;
-#line 218 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ANDAND); }
-#line 3074 "strict_cpp_re.inc"
-yy235:
-    ++YYCURSOR;
-#line 204 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ANDASSIGN); }
-#line 3079 "strict_cpp_re.inc"
-yy237:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 8;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy239;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy240;
-            if(yych <= '`') goto yy239;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy239:
-#line 182 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
-#line 3106 "strict_cpp_re.inc"
-yy240:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 9;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy243:
-#line 202 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
-#line 3124 "strict_cpp_re.inc"
-yy244:
-    ++YYCURSOR;
-#line 201 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_XORASSIGN); }
-#line 3129 "strict_cpp_re.inc"
-yy246:
-    ++YYCURSOR;
-#line 198 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STARASSIGN); }
-#line 3134 "strict_cpp_re.inc"
-yy248:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '*') goto yy254;
-#line 238 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ARROW); }
-#line 3140 "strict_cpp_re.inc"
-yy250:
-    ++YYCURSOR;
-#line 226 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MINUSMINUS); }
-#line 3145 "strict_cpp_re.inc"
-yy252:
-    ++YYCURSOR;
-#line 197 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MINUSASSIGN); }
-#line 3150 "strict_cpp_re.inc"
-yy254:
-    ++YYCURSOR;
-#line 229 "strict_cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_ARROW);
-            }
-            else {
-                BOOST_WAVE_RET(T_ARROWSTAR); 
-            }
-        }
-#line 3163 "strict_cpp_re.inc"
-yy256:
-    ++YYCURSOR;
-#line 225 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PLUSPLUS); }
-#line 3168 "strict_cpp_re.inc"
-yy258:
-    ++YYCURSOR;
-#line 196 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PLUSASSIGN); }
-#line 3173 "strict_cpp_re.inc"
-yy260:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
-    yych = *YYCURSOR;
-yy261:
-    if(yych <= 'h') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy260;
-                goto yy98;
-            } else {
-                if(yych <= 0x0C) goto yy260;
-                if(yych <= 0x1F) goto yy98;
-                goto yy260;
-            }
-        } else {
-            if(yych <= 'c') {
-                if(yych != '/') goto yy98;
-            } else {
-                if(yych <= 'd') goto yy269;
-                if(yych <= 'e') goto yy263;
-                goto yy98;
-            }
-        }
-    } else {
-        if(yych <= 'q') {
-            if(yych <= 'l') {
-                if(yych <= 'i') goto yy270;
-                if(yych <= 'k') goto yy98;
-                goto yy267;
-            } else {
-                if(yych == 'p') goto yy266;
-                goto yy98;
-            }
-        } else {
-            if(yych <= 'u') {
-                if(yych <= 'r') goto yy264;
-                if(yych <= 't') goto yy98;
-                goto yy268;
-            } else {
-                if(yych == 'w') goto yy265;
-                goto yy98;
-            }
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '*') goto yy377;
-    goto yy98;
-yy263:
-    yych = *++YYCURSOR;
-    if(yych <= 'm') {
-        if(yych == 'l') goto yy353;
-        goto yy98;
-    } else {
-        if(yych <= 'n') goto yy354;
-        if(yych == 'r') goto yy355;
-        goto yy98;
-    }
-yy264:
-    yych = *++YYCURSOR;
-    if(yych == 'e') goto yy347;
-    goto yy98;
-yy265:
-    yych = *++YYCURSOR;
-    if(yych == 'a') goto yy340;
-    goto yy98;
-yy266:
-    yych = *++YYCURSOR;
-    if(yych == 'r') goto yy334;
-    goto yy98;
-yy267:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy330;
-    goto yy98;
-yy268:
-    yych = *++YYCURSOR;
-    if(yych == 'n') goto yy325;
-    goto yy98;
-yy269:
-    yych = *++YYCURSOR;
-    if(yych == 'e') goto yy319;
-    goto yy98;
-yy270:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy278;
-    if(yych == 'n') goto yy277;
-    goto yy98;
-yy271:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy274;
-    goto yy98;
-yy272:
-    ++YYCURSOR;
-#line 143 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND); }
-#line 3271 "strict_cpp_re.inc"
-yy274:
-    yych = *++YYCURSOR;
-    if(yych != '=') goto yy98;
-    ++YYCURSOR;
-#line 144 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3278 "strict_cpp_re.inc"
-yy277:
-    yych = *++YYCURSOR;
-    if(yych == 'c') goto yy289;
-    goto yy98;
-yy278:
-    yyaccept = 10;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy281;
-    if(yych == 'n') goto yy280;
-yy279:
-#line 261 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_IF); }
-#line 3291 "strict_cpp_re.inc"
-yy280:
-    yych = *++YYCURSOR;
-    if(yych == 'd') goto yy285;
-    goto yy98;
-yy281:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 262 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_IFDEF); }
-#line 3304 "strict_cpp_re.inc"
-yy285:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 263 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_IFNDEF); }
-#line 3313 "strict_cpp_re.inc"
-yy289:
-    yych = *++YYCURSOR;
-    if(yych != 'l') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'u') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'd') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yyaccept = 11;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '_') goto yy295;
-    goto yy297;
-yy294:
-#line 259 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_INCLUDE); }
-#line 3330 "strict_cpp_re.inc"
-yy295:
-    yych = *++YYCURSOR;
-    if(yych == 'n') goto yy316;
-    goto yy98;
-yy296:
-    yyaccept = 11;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-yy297:
-    if(yych <= ' ') {
-        if(yych <= 0x0A) {
-            if(yych == 0x09) goto yy296;
-            goto yy294;
-        } else {
-            if(yych <= 0x0C) goto yy296;
-            if(yych <= 0x1F) goto yy294;
-            goto yy296;
-        }
-    } else {
-        if(yych <= '.') {
-            if(yych == '"') goto yy300;
-            goto yy294;
-        } else {
-            if(yych <= '/') goto yy298;
-            if(yych == '<') goto yy299;
-            goto yy294;
-        }
-    }
-yy298:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '*') goto yy309;
-    goto yy98;
-yy299:
-    yych = *++YYCURSOR;
-    if(yych == '>') goto yy98;
-    goto yy306;
-yy300:
-    yych = *++YYCURSOR;
-    if(yych == '"') goto yy98;
-    goto yy302;
-yy301:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy302:
-    if(yybm[0+yych] & 8) {
-        goto yy301;
-    }
-    if(yych <= '!') goto yy98;
-    ++YYCURSOR;
-#line 256 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_QHEADER); }
-#line 3386 "strict_cpp_re.inc"
-yy305:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-yy306:
-    if(yybm[0+yych] & 16) {
-        goto yy305;
-    }
-    if(yych <= '=') goto yy98;
-    ++YYCURSOR;
-#line 253 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_HHEADER); }
-#line 3399 "strict_cpp_re.inc"
-yy309:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-    goto yy313;
-yy311:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-yy313:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy313;
-    }
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy309;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '/') goto yy296;
-        goto yy309;
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy309;
-    }
-    if(yych == 0x0D) goto yy311;
-    if(yych <= ')') goto yy98;
-    goto yy313;
-yy316:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'x') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych == 't') goto yy296;
-    goto yy98;
-yy319:
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 267 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_DEFINE); }
-#line 3463 "strict_cpp_re.inc"
-yy325:
-    yych = *++YYCURSOR;
-    if(yych != 'd') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'f') goto yy98;
-    ++YYCURSOR;
-#line 268 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_UNDEF); }
-#line 3474 "strict_cpp_re.inc"
-yy330:
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 269 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_LINE); }
-#line 3483 "strict_cpp_re.inc"
-yy334:
-    yych = *++YYCURSOR;
-    if(yych != 'a') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'm') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'a') goto yy98;
-    ++YYCURSOR;
-#line 271 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_PRAGMA); }
-#line 3496 "strict_cpp_re.inc"
-yy340:
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    ++YYCURSOR;
-#line 273 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_WARNING); }
-#line 3511 "strict_cpp_re.inc"
-yy347:
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    ++YYCURSOR;
-#line 275 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
-#line 3524 "strict_cpp_re.inc"
-yy353:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy371;
-    if(yych == 's') goto yy372;
-    goto yy98;
-yy354:
-    yych = *++YYCURSOR;
-    if(yych == 'd') goto yy360;
-    goto yy98;
-yy355:
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'r') goto yy98;
-    ++YYCURSOR;
-#line 270 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_ERROR); }
-#line 3544 "strict_cpp_re.inc"
-yy360:
-    yych = *++YYCURSOR;
-    if(yych == 'i') goto yy361;
-    if(yych == 'r') goto yy362;
-    goto yy98;
-yy361:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy369;
-    goto yy98;
-yy362:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'g') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'i') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'o') goto yy98;
-    yych = *++YYCURSOR;
-    if(yych != 'n') goto yy98;
-    ++YYCURSOR;
-#line 276 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
-#line 3568 "strict_cpp_re.inc"
-yy369:
-    ++YYCURSOR;
-#line 266 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_ENDIF); }
-#line 3573 "strict_cpp_re.inc"
-yy371:
-    yych = *++YYCURSOR;
-    if(yych == 'f') goto yy375;
-    goto yy98;
-yy372:
-    yych = *++YYCURSOR;
-    if(yych != 'e') goto yy98;
-    ++YYCURSOR;
-#line 264 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_ELSE); }
-#line 3584 "strict_cpp_re.inc"
-yy375:
-    ++YYCURSOR;
-#line 265 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_ELIF); }
-#line 3589 "strict_cpp_re.inc"
-yy377:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '*') goto yy381;
-        goto yy377;
-    }
-yy379:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        goto yy379;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych != '*') goto yy377;
-    }
-yy381:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x1F) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        if(yych >= 0x0E) goto yy98;
-    } else {
-        if(yych <= '*') {
-            if(yych <= ')') goto yy377;
-            goto yy381;
-        } else {
-            if(yych == '/') goto yy260;
-            goto yy377;
-        }
-    }
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= 0x0D) {
-        if(yych <= 0x08) goto yy98;
-        if(yych <= 0x0C) goto yy377;
-        goto yy379;
-    } else {
-        if(yych <= 0x1F) goto yy98;
-        if(yych == '*') goto yy381;
-        goto yy377;
-    }
-yy384:
-    ++YYCURSOR;
-#line 155 "strict_cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_COLON);
-            }
-            else {
-                BOOST_WAVE_RET(T_COLON_COLON); 
-            }
-        }
-#line 3655 "strict_cpp_re.inc"
-yy386:
-    ++YYCURSOR;
-#line 139 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
-#line 3660 "strict_cpp_re.inc"
-yy388:
-    yyaccept = 12;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'e') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '%') goto yy394;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych >= 'd') goto yy261;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'k') {
-                if(yych == 'i') goto yy261;
-            } else {
-                if(yych <= 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy389;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy389:
-#line 141 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_ALT); }
-#line 3700 "strict_cpp_re.inc"
-yy390:
-    ++YYCURSOR;
-#line 200 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
-#line 3705 "strict_cpp_re.inc"
-yy392:
-    ++YYCURSOR;
-#line 133 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
-#line 3710 "strict_cpp_re.inc"
-yy394:
-    yych = *++YYCURSOR;
-    if(yych != ':') goto yy98;
-    ++YYCURSOR;
-#line 147 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
-#line 3717 "strict_cpp_re.inc"
-yy397:
-    ++YYCURSOR;
-#line 216 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LESSEQUAL); }
-#line 3722 "strict_cpp_re.inc"
-yy399:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy405;
-#line 209 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTLEFT); }
-#line 3728 "strict_cpp_re.inc"
-yy401:
-    ++YYCURSOR;
-#line 136 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
-#line 3733 "strict_cpp_re.inc"
-yy403:
-    ++YYCURSOR;
-#line 130 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
-#line 3738 "strict_cpp_re.inc"
-yy405:
-    ++YYCURSOR;
-#line 212 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
-#line 3743 "strict_cpp_re.inc"
-yy407:
-    yych = *++YYCURSOR;
-    switch(yych) {
-    case '!':    goto yy420;
-    case '\'':    goto yy418;
-    case '(':    goto yy412;
-    case ')':    goto yy414;
-    case '-':    goto yy422;
-    case '/':    goto yy424;
-    case '<':    goto yy408;
-    case '=':    goto yy416;
-    case '>':    goto yy410;
-    default:    goto yy98;
-    }
-yy408:
-    ++YYCURSOR;
-#line 129 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
-#line 3762 "strict_cpp_re.inc"
-yy410:
-    ++YYCURSOR;
-#line 132 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
-#line 3767 "strict_cpp_re.inc"
-yy412:
-    ++YYCURSOR;
-#line 135 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
-#line 3772 "strict_cpp_re.inc"
-yy414:
-    ++YYCURSOR;
-#line 138 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
-#line 3777 "strict_cpp_re.inc"
-yy416:
-    yyaccept = 13;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'c') {
-        if(yych <= ' ') {
-            if(yych <= 0x0A) {
-                if(yych == 0x09) goto yy261;
-            } else {
-                if(yych <= 0x0C) goto yy261;
-                if(yych >= ' ') goto yy261;
-            }
-        } else {
-            if(yych <= '.') {
-                if(yych == '#') goto yy437;
-            } else {
-                if(yych <= '/') goto yy261;
-                if(yych == '?') goto yy436;
-            }
-        }
-    } else {
-        if(yych <= 'p') {
-            if(yych <= 'i') {
-                if(yych <= 'e') goto yy261;
-                if(yych >= 'i') goto yy261;
-            } else {
-                if(yych == 'l') goto yy261;
-                if(yych >= 'p') goto yy261;
-            }
-        } else {
-            if(yych <= 't') {
-                if(yych == 'r') goto yy261;
-            } else {
-                if(yych == 'v') goto yy417;
-                if(yych <= 'w') goto yy261;
-            }
-        }
-    }
-yy417:
-#line 142 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
-#line 3818 "strict_cpp_re.inc"
-yy418:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '=') goto yy434;
-#line 181 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
-#line 3824 "strict_cpp_re.inc"
-yy420:
-    yyaccept = 14;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '>') {
-        if(yych == '=') goto yy429;
-    } else {
-        if(yych <= '?') goto yy426;
-        if(yych == '|') goto yy427;
-    }
-yy421:
-#line 187 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
-#line 3837 "strict_cpp_re.inc"
-yy422:
-    ++YYCURSOR;
-#line 189 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
-#line 3842 "strict_cpp_re.inc"
-yy424:
-    yyaccept = 15;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'U') goto yy186;
-    if(yych == 'u') goto yy185;
-yy425:
-#line 239 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
-#line 3851 "strict_cpp_re.inc"
-yy426:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy431;
-    goto yy98;
-yy427:
-    ++YYCURSOR;
-#line 221 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3860 "strict_cpp_re.inc"
-yy429:
-    ++YYCURSOR;
-#line 208 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
-#line 3865 "strict_cpp_re.inc"
-yy431:
-    yych = *++YYCURSOR;
-    if(yych != '!') goto yy98;
-    ++YYCURSOR;
-#line 224 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
-#line 3872 "strict_cpp_re.inc"
-yy434:
-    ++YYCURSOR;
-#line 203 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
-#line 3877 "strict_cpp_re.inc"
-yy436:
-    yych = *++YYCURSOR;
-    if(yych == '?') goto yy439;
-    goto yy98;
-yy437:
-    ++YYCURSOR;
-#line 145 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3886 "strict_cpp_re.inc"
-yy439:
-    yych = *++YYCURSOR;
-    if(yych != '=') goto yy98;
-    ++YYCURSOR;
-#line 146 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
-#line 3893 "strict_cpp_re.inc"
-yy442:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case 'a':    goto yy443;
-    case 'b':    goto yy444;
-    case 'c':    goto yy445;
-    case 'd':    goto yy446;
-    case 'e':    goto yy495;
-    case 'f':    goto yy493;
-    case 'i':    goto yy492;
-    case 'l':    goto yy496;
-    case 's':    goto yy449;
-    case 't':    goto yy494;
-    default:    goto yy195;
-    }
-yy443:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy489;
-    goto yy195;
-yy444:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy484;
-    goto yy195;
-yy445:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy479;
-    goto yy195;
-yy446:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy471;
-    goto yy195;
-yy447:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy463;
-    goto yy195;
-yy448:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy457;
-    goto yy195;
-yy449:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 16;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy456:
-#line 120 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
-#line 3969 "strict_cpp_re.inc"
-yy457:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-yy458:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 17;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy462:
-#line 125 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
-#line 3994 "strict_cpp_re.inc"
-yy463:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 18;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy470:
-#line 119 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
-#line 4024 "strict_cpp_re.inc"
-yy471:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 19;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy478:
-#line 117 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
-#line 4054 "strict_cpp_re.inc"
-yy479:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 20;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy483:
-#line 118 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
-#line 4075 "strict_cpp_re.inc"
-yy484:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 21;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy488:
-#line 116 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
-#line 4096 "strict_cpp_re.inc"
-yy489:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 22;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy491:
-#line 126 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
-#line 4111 "strict_cpp_re.inc"
-yy492:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy518;
-    goto yy195;
-yy493:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy463;
-    if(yych == 'i') goto yy511;
-    goto yy195;
-yy494:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy508;
-    goto yy195;
-yy495:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'x') goto yy502;
-    goto yy195;
-yy496:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'v') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 23;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy501:
-#line 124 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
-#line 4156 "strict_cpp_re.inc"
-yy502:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 24;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy507:
-#line 122 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
-#line 4180 "strict_cpp_re.inc"
-yy508:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'y') goto yy195;
-    yyaccept = 25;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy510:
-#line 121 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
-#line 4195 "strict_cpp_re.inc"
-yy511:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'y') goto yy195;
-    yyaccept = 26;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy517:
-#line 123 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
-#line 4222 "strict_cpp_re.inc"
-yy518:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy458;
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    switch(yych) {
-    case '1':    goto yy520;
-    case '3':    goto yy521;
-    case '6':    goto yy522;
-    case '8':    goto yy523;
-    default:    goto yy195;
-    }
-yy520:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '6') goto yy529;
-    goto yy195;
-yy521:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '2') goto yy527;
-    goto yy195;
-yy522:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == '4') goto yy525;
-    goto yy195;
-yy523:
-    yyaccept = 27;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy524:
-#line 112 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
-#line 4263 "strict_cpp_re.inc"
-yy525:
-    yyaccept = 28;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy526:
-#line 115 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
-#line 4275 "strict_cpp_re.inc"
-yy527:
-    yyaccept = 29;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy528:
-#line 114 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
-#line 4287 "strict_cpp_re.inc"
-yy529:
-    yyaccept = 30;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy530:
-#line 113 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
-#line 4299 "strict_cpp_re.inc"
-yy531:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'h') goto yy537;
-    goto yy195;
-yy532:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 31;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy536:
-#line 110 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_WHILE); }
-#line 4325 "strict_cpp_re.inc"
-yy537:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 32;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy542:
-#line 109 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_WCHART); }
-#line 4349 "strict_cpp_re.inc"
-yy543:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy555;
-    goto yy195;
-yy544:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy545;
-    if(yych == 'l') goto yy546;
-    goto yy195;
-yy545:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy553;
-    goto yy195;
-yy546:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 33;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy552:
-#line 108 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_VOLATILE); }
-#line 4392 "strict_cpp_re.inc"
-yy553:
-    yyaccept = 34;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy554:
-#line 107 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_VOID); }
-#line 4404 "strict_cpp_re.inc"
-yy555:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 35;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy560:
-#line 106 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_VIRTUAL); }
-#line 4428 "strict_cpp_re.inc"
-yy561:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy567;
-    if(yych == 's') goto yy568;
-    goto yy195;
-yy562:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 36;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy566:
-#line 105 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_USING); }
-#line 4455 "strict_cpp_re.inc"
-yy567:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy575;
-    goto yy195;
-yy568:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 37;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy574:
-#line 104 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_UNSIGNED); }
-#line 4487 "strict_cpp_re.inc"
-yy575:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 38;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy577:
-#line 103 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_UNION); }
-#line 4502 "strict_cpp_re.inc"
-yy578:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy608;
-    goto yy195;
-yy579:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy601;
-    if(yych == 'r') goto yy602;
-    goto yy195;
-yy580:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy596;
-    if(yych == 'y') goto yy597;
-    goto yy195;
-yy581:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych != 'd') goto yy195;
-    } else {
-        if(yych <= 'i') goto yy585;
-        if(yych == 'n') goto yy586;
-        goto yy195;
-    }
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy593;
-    goto yy195;
-yy585:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy591;
-    goto yy195;
-yy586:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 39;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy590:
-#line 102 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TYPENAME); }
-#line 4565 "strict_cpp_re.inc"
-yy591:
-    yyaccept = 40;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy592:
-#line 101 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TYPEID); }
-#line 4577 "strict_cpp_re.inc"
-yy593:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'f') goto yy195;
-    yyaccept = 41;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy595:
-#line 100 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TYPEDEF); }
-#line 4592 "strict_cpp_re.inc"
-yy596:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy599;
-    goto yy195;
-yy597:
-    yyaccept = 42;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy598:
-#line 99 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TRY); }
-#line 4609 "strict_cpp_re.inc"
-yy599:
-    yyaccept = 43;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy600:
-#line 98 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TRUE); }
-#line 4621 "strict_cpp_re.inc"
-yy601:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy606;
-    goto yy195;
-yy602:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'w') goto yy195;
-    yyaccept = 44;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy605:
-#line 97 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_THROW); }
-#line 4644 "strict_cpp_re.inc"
-yy606:
-    yyaccept = 45;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy607:
-#line 96 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_THIS); }
-#line 4656 "strict_cpp_re.inc"
-yy608:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 46;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy614:
-#line 95 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_TEMPLATE); }
-#line 4683 "strict_cpp_re.inc"
-yy615:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy650;
-    goto yy195;
-yy616:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'g') goto yy640;
-    if(yych == 'z') goto yy641;
-    goto yy195;
-yy617:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy624;
-    if(yych == 'r') goto yy625;
-    goto yy195;
-yy618:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'h') goto yy195;
-    yyaccept = 47;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy623:
-#line 94 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SWITCH); }
-#line 4724 "strict_cpp_re.inc"
-yy624:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy630;
-    goto yy195;
-yy625:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 48;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy629:
-#line 93 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STRUCT); }
-#line 4750 "strict_cpp_re.inc"
-yy630:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 49;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy633;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy634;
-            if(yych <= '`') goto yy633;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy633:
-#line 91 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STATIC); }
-#line 4780 "strict_cpp_re.inc"
-yy634:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 50;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy639:
-#line 92 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_STATICCAST); }
-#line 4804 "strict_cpp_re.inc"
-yy640:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy646;
-    goto yy195;
-yy641:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'f') goto yy195;
-    yyaccept = 51;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy645:
-#line 90 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SIZEOF); }
-#line 4830 "strict_cpp_re.inc"
-yy646:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 52;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy649:
-#line 89 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SIGNED); }
-#line 4848 "strict_cpp_re.inc"
-yy650:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 53;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy653:
-#line 88 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_SHORT); }
-#line 4866 "strict_cpp_re.inc"
-yy654:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'h') {
-        if(yych != 'g') goto yy195;
-    } else {
-        if(yych <= 'i') goto yy656;
-        if(yych == 't') goto yy657;
-        goto yy195;
-    }
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy676;
-    goto yy195;
-yy656:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy662;
-    goto yy195;
-yy657:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 54;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy661:
-#line 87 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_RETURN); }
-#line 4906 "strict_cpp_re.inc"
-yy662:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 55;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy675:
-#line 86 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
-#line 4954 "strict_cpp_re.inc"
-yy676:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 56;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy681:
-#line 85 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_REGISTER); }
-#line 4978 "strict_cpp_re.inc"
-yy682:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy689;
-    if(yych == 'o') goto yy690;
-    goto yy195;
-yy683:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 57;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy688:
-#line 84 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PUBLIC); }
-#line 5008 "strict_cpp_re.inc"
-yy689:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'v') goto yy698;
-    goto yy195;
-yy690:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 58;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy697:
-#line 83 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PROTECTED); }
-#line 5043 "strict_cpp_re.inc"
-yy698:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 59;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy702:
-#line 82 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PRIVATE); }
-#line 5064 "strict_cpp_re.inc"
-yy703:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy710;
-    goto yy195;
-yy704:
-    yyaccept = 60;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy705;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy706;
-            if(yych <= '`') goto yy705;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy705:
-#line 223 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
-#line 5093 "strict_cpp_re.inc"
-yy706:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 61;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy709:
-#line 207 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
-#line 5111 "strict_cpp_re.inc"
-yy710:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 62;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy716:
-#line 81 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_OPERATOR); }
-#line 5138 "strict_cpp_re.inc"
-yy717:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy728;
-    goto yy195;
-yy718:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'w') goto yy726;
-    goto yy195;
-yy719:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 63;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy721;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy722;
-            if(yych <= '`') goto yy721;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy721:
-#line 192 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
-#line 5175 "strict_cpp_re.inc"
-yy722:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 64;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy725:
-#line 215 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
-#line 5193 "strict_cpp_re.inc"
-yy726:
-    yyaccept = 65;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy727:
-#line 80 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_NEW); }
-#line 5205 "strict_cpp_re.inc"
-yy728:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 66;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy735:
-#line 79 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_NAMESPACE); }
-#line 5235 "strict_cpp_re.inc"
-yy736:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 67;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy742:
-#line 78 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_MUTABLE); }
-#line 5262 "strict_cpp_re.inc"
-yy743:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'g') goto yy195;
-    yyaccept = 68;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy746:
-#line 77 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LONG); }
-#line 5280 "strict_cpp_re.inc"
-yy747:
-    yyaccept = 69;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy748:
-#line 73 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_IF); }
-#line 5292 "strict_cpp_re.inc"
-yy749:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy758;
-    goto yy195;
-yy750:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy751;
-    if(yych == 't') goto yy752;
-    goto yy195;
-yy751:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy754;
-    goto yy195;
-yy752:
-    yyaccept = 70;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy753:
-#line 76 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_INT); }
-#line 5320 "strict_cpp_re.inc"
-yy754:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 71;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy757:
-#line 75 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_INLINE); }
-#line 5338 "strict_cpp_re.inc"
-yy758:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 72;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy762:
-#line 74 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
-#line 5359 "strict_cpp_re.inc"
-yy763:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 73;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy766:
-#line 72 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_GOTO); }
-#line 5377 "strict_cpp_re.inc"
-yy767:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy782;
-    goto yy195;
-yy768:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy778;
-    goto yy195;
-yy769:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'r') goto yy776;
-    goto yy195;
-yy770:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 74;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy775:
-#line 71 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_FRIEND); }
-#line 5416 "strict_cpp_re.inc"
-yy776:
-    yyaccept = 75;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy777:
-#line 70 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_FOR); }
-#line 5428 "strict_cpp_re.inc"
-yy778:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 76;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy781:
-#line 69 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_FLOAT); }
-#line 5446 "strict_cpp_re.inc"
-yy782:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 77;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy785:
-#line 68 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_FALSE); }
-#line 5464 "strict_cpp_re.inc"
-yy786:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 's') goto yy808;
-    goto yy195;
-yy787:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'u') goto yy805;
-    goto yy195;
-yy788:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'p') goto yy789;
-    if(yych == 't') goto yy790;
-    goto yy195;
-yy789:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'l') goto yy795;
-    if(yych == 'o') goto yy796;
-    goto yy195;
-yy790:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 78;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy794:
-#line 67 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_EXTERN); }
-#line 5507 "strict_cpp_re.inc"
-yy795:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'i') goto yy800;
-    goto yy195;
-yy796:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 79;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy799:
-#line 66 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_EXPORT); }
-#line 5530 "strict_cpp_re.inc"
-yy800:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 80;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy804:
-#line 65 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_EXPLICIT); }
-#line 5551 "strict_cpp_re.inc"
-yy805:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 81;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy807:
-#line 64 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ENUM); }
-#line 5566 "strict_cpp_re.inc"
-yy808:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 82;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy810:
-#line 63 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ELSE); }
-#line 5581 "strict_cpp_re.inc"
-yy811:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'f') goto yy831;
-    if(yych == 'l') goto yy832;
-    goto yy195;
-yy812:
-    yyaccept = 83;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= '[') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy813;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych <= '@') goto yy813;
-            if(yych <= 'Z') goto yy194;
-        }
-    } else {
-        if(yych <= '`') {
-            if(yych <= '\\') goto yy196;
-            if(yych == '_') goto yy194;
-        } else {
-            if(yych == 'u') goto yy826;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy813:
-#line 60 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DO); }
-#line 5612 "strict_cpp_re.inc"
-yy814:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'm') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != '_') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 84;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy825:
-#line 62 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DYNAMICCAST); }
-#line 5654 "strict_cpp_re.inc"
-yy826:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'b') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 85;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy830:
-#line 61 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DOUBLE); }
-#line 5675 "strict_cpp_re.inc"
-yy831:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy837;
-    goto yy195;
-yy832:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 86;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy836:
-#line 59 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DELETE); }
-#line 5701 "strict_cpp_re.inc"
-yy837:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 87;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy841:
-#line 58 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DEFAULT); }
-#line 5722 "strict_cpp_re.inc"
-yy842:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') goto yy195;
-    if(yych <= 's') goto yy873;
-    if(yych <= 't') goto yy874;
-    goto yy195;
-yy843:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy870;
-    goto yy195;
-yy844:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy866;
-    goto yy195;
-yy845:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'l') goto yy195;
-    if(yych <= 'm') goto yy847;
-    if(yych >= 'o') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'r') goto yy195;
-    if(yych <= 's') goto yy851;
-    if(yych <= 't') goto yy852;
-    goto yy195;
-yy847:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'p') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 88;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy850:
-#line 190 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
-#line 5769 "strict_cpp_re.inc"
-yy851:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy858;
-    goto yy195;
-yy852:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'i') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'n') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'u') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 89;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy857:
-#line 57 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CONTINUE); }
-#line 5798 "strict_cpp_re.inc"
-yy858:
-    yyaccept = 90;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy859;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy860;
-            if(yych <= '`') goto yy859;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy859:
-#line 55 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CONST); }
-#line 5822 "strict_cpp_re.inc"
-yy860:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 91;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy865:
-#line 56 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CONSTCAST); }
-#line 5846 "strict_cpp_re.inc"
-yy866:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 's') goto yy195;
-    yyaccept = 92;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy869:
-#line 54 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CLASS); }
-#line 5864 "strict_cpp_re.inc"
-yy870:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 93;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy872:
-#line 53 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CHAR); }
-#line 5879 "strict_cpp_re.inc"
-yy873:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'e') goto yy878;
-    goto yy195;
-yy874:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'c') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'h') goto yy195;
-    yyaccept = 94;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy877:
-#line 52 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CATCH); }
-#line 5902 "strict_cpp_re.inc"
-yy878:
-    yyaccept = 95;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy879:
-#line 51 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CASE); }
-#line 5914 "strict_cpp_re.inc"
-yy880:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 't') goto yy890;
-    goto yy195;
-yy881:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'o') goto yy887;
-    goto yy195;
-yy882:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'a') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'k') goto yy195;
-    yyaccept = 96;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy886:
-#line 50 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_BREAK); }
-#line 5945 "strict_cpp_re.inc"
-yy887:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'l') goto yy195;
-    yyaccept = 97;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy889:
-#line 49 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_BOOL); }
-#line 5960 "strict_cpp_re.inc"
-yy890:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'a') goto yy891;
-    if(yych == 'o') goto yy892;
-    goto yy195;
-yy891:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'n') goto yy895;
-    goto yy195;
-yy892:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'r') goto yy195;
-    yyaccept = 98;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy894:
-#line 186 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
-#line 5986 "strict_cpp_re.inc"
-yy895:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'd') goto yy195;
-    yyaccept = 99;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy897:
-#line 184 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
-#line 6001 "strict_cpp_re.inc"
-yy898:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'd') goto yy906;
-    goto yy195;
-yy899:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych == 'm') goto yy904;
-    goto yy195;
-yy900:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 't') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'o') goto yy195;
-    yyaccept = 100;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy903:
-#line 48 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_AUTO); }
-#line 6029 "strict_cpp_re.inc"
-yy904:
-    yyaccept = 101;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy905:
-#line 47 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ASM); }
-#line 6041 "strict_cpp_re.inc"
-yy906:
-    yyaccept = 102;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych <= 'Z') {
-        if(yych <= '>') {
-            if(yych <= '/') goto yy907;
-            if(yych <= '9') goto yy194;
-        } else {
-            if(yych <= '?') goto yy197;
-            if(yych >= 'A') goto yy194;
-        }
-    } else {
-        if(yych <= '^') {
-            if(yych == '\\') goto yy196;
-        } else {
-            if(yych <= '_') goto yy908;
-            if(yych <= '`') goto yy907;
-            if(yych <= 'z') goto yy194;
-        }
-    }
-yy907:
-#line 219 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
-#line 6065 "strict_cpp_re.inc"
-yy908:
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'e') goto yy195;
-    yyaccept = 1;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yych != 'q') goto yy195;
-    yyaccept = 103;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 4) {
-        goto yy194;
-    }
-    if(yych == '?') goto yy197;
-    if(yych == '\\') goto yy196;
-yy911:
-#line 205 "strict_cpp.re"
-    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
-#line 6083 "strict_cpp_re.inc"
-yy912:
-    ++YYCURSOR;
-#line 166 "strict_cpp.re"
-    { 
-            if (s->act_in_c99_mode) {
-                --YYCURSOR;
-                BOOST_WAVE_RET(T_DOT);
-            }
-            else {
-                BOOST_WAVE_RET(T_DOTSTAR); 
-            }
-        }
-#line 6096 "strict_cpp_re.inc"
-yy914:
-    yych = *++YYCURSOR;
-    if(yych == '.') goto yy916;
-    goto yy98;
-yy915:
-    yych = *++YYCURSOR;
-    goto yy7;
-yy916:
-    ++YYCURSOR;
-#line 152 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_ELLIPSIS); }
-#line 6108 "strict_cpp_re.inc"
-yy918:
-    ++YYCURSOR;
-#line 199 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
-#line 6113 "strict_cpp_re.inc"
-yy920:
-    ++YYCURSOR;
-#line 44 "strict_cpp.re"
-    { goto cppcomment; }
-#line 6118 "strict_cpp_re.inc"
-yy922:
-    ++YYCURSOR;
-#line 43 "strict_cpp.re"
-    { goto ccomment; }
-#line 6123 "strict_cpp_re.inc"
-}
-#line 308 "strict_cpp.re"
-
-
-ccomment:
-
-#line 6130 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 0x0C) {
-        if(yych <= 0x08) {
-            if(yych <= 0x00) goto yy933;
-            goto yy935;
-        } else {
-            if(yych == 0x0A) goto yy928;
-            goto yy931;
-        }
-    } else {
-        if(yych <= 0x1F) {
-            if(yych <= 0x0D) goto yy930;
-            goto yy935;
-        } else {
-            if(yych != '*') goto yy932;
-        }
-    }
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == '/') goto yy938;
-yy927:
-#line 323 "strict_cpp.re"
-    { goto ccomment; }
-#line 6156 "strict_cpp_re.inc"
-yy928:
-    ++YYCURSOR;
-yy929:
-#line 315 "strict_cpp.re"
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
-        /*s->tok = cursor; */
-        s->line += count_backslash_newlines(s, cursor) +1;
-        cursor.column = 1;
-        goto ccomment;
-    }
-#line 6168 "strict_cpp_re.inc"
-yy930:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy937;
-    goto yy929;
-yy931:
-    yych = *++YYCURSOR;
-    goto yy927;
-yy932:
-    yych = *++YYCURSOR;
-    goto yy927;
-yy933:
-    ++YYCURSOR;
-#line 326 "strict_cpp.re"
-    {
-        if(cursor == s->eof) 
-        {
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "unterminated 'C' style comment");
-        }
-        else
-        {
-            --YYCURSOR;                   // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character: '\\000' in input stream");
-        }
-    }
-#line 6197 "strict_cpp_re.inc"
-yy935:
-    ++YYCURSOR;
-#line 343 "strict_cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 6207 "strict_cpp_re.inc"
-yy937:
-    yych = *++YYCURSOR;
-    goto yy929;
-yy938:
-    ++YYCURSOR;
-#line 312 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_CCOMMENT); }
-#line 6215 "strict_cpp_re.inc"
-}
-#line 349 "strict_cpp.re"
-
-
-cppcomment:
-
-#line 6222 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 0x0A) {
-        if(yych <= 0x00) goto yy948;
-        if(yych <= 0x08) goto yy950;
-        if(yych <= 0x09) goto yy945;
-    } else {
-        if(yych <= 0x0C) goto yy945;
-        if(yych <= 0x0D) goto yy944;
-        if(yych <= 0x1F) goto yy950;
-        goto yy947;
-    }
-    ++YYCURSOR;
-yy943:
-#line 354 "strict_cpp.re"
-    {
-        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
-        /*s->tok = cursor; */
-        s->line++;
-        cursor.column = 1;
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-#line 6247 "strict_cpp_re.inc"
-yy944:
-    yych = *++YYCURSOR;
-    if(yych == 0x0A) goto yy952;
-    goto yy943;
-yy945:
-    ++YYCURSOR;
-yy946:
-#line 362 "strict_cpp.re"
-    { goto cppcomment; }
-#line 6257 "strict_cpp_re.inc"
-yy947:
-    yych = *++YYCURSOR;
-    goto yy946;
-yy948:
-    ++YYCURSOR;
-#line 365 "strict_cpp.re"
-    {
-        if (s->eof && cursor != s->eof) 
-        {
-            --YYCURSOR;                     // next call returns T_EOF
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-                "invalid character '\\000' in input stream");
-        }
-        
-        --YYCURSOR;                         // next call returns T_EOF
-        if (!s->single_line_only)
-        {
-            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
-                "Unterminated 'C++' style comment");
-        }
-        BOOST_WAVE_RET(T_CPPCOMMENT);
-    }
-#line 6282 "strict_cpp_re.inc"
-yy950:
-    ++YYCURSOR;
-#line 385 "strict_cpp.re"
-    {
-        // flag the error
-        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
-        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
-            "invalid character '\\%03o' in input stream", *--YYCURSOR);
-    }
-#line 6292 "strict_cpp_re.inc"
-yy952:
-    ++YYCURSOR;
-    yych = *YYCURSOR;
-    goto yy943;
-}
-#line 391 "strict_cpp.re"
-
-
-/* this subscanner is called whenever a pp_number has been started */
-pp_number:
-{
-    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
-    marker = uchar_wrapper(s->ptr);
-    limit = uchar_wrapper(s->lim);
-
-    if (s->detect_pp_numbers) {
-    
-#line 6310 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    static const unsigned char yybm[] = {
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,  64,   0, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,   0,   0,   0,   0,   0,   0, 
-          0,  64,  64,  64,  64, 128,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,   0,   0,   0,   0,  64, 
-          0,  64,  64,  64,  64, 128,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,  64,  64,  64,  64,  64, 
-         64,  64,  64,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-    };
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych == '.') goto yy956;
-    if(yych <= '/') goto yy955;
-    if(yych <= '9') goto yy957;
-yy955:
-    YYCURSOR = YYMARKER;
-    goto yy959;
-yy956:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy955;
-    if(yych >= ':') goto yy955;
-yy957:
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 64) {
-        goto yy957;
-    }
-    if(yych <= 'Z') {
-        if(yych == '?') goto yy963;
-        if(yych >= 'A') goto yy960;
-    } else {
-        if(yych <= '\\') {
-            if(yych >= '\\') goto yy962;
-        } else {
-            if(yych == 'e') goto yy960;
-        }
-    }
-yy959:
-#line 403 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_PP_NUMBER); }
-#line 6379 "strict_cpp_re.inc"
-yy960:
-    YYMARKER = ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy960;
-    }
-    if(yych <= '?') {
-        if(yych <= '.') {
-            if(yych == '+') goto yy957;
-            if(yych <= ',') goto yy959;
-            goto yy957;
-        } else {
-            if(yych <= '/') goto yy959;
-            if(yych <= '9') goto yy957;
-            if(yych <= '>') goto yy959;
-            goto yy963;
-        }
-    } else {
-        if(yych <= '\\') {
-            if(yych <= '@') goto yy959;
-            if(yych <= 'Z') goto yy957;
-            if(yych <= '[') goto yy959;
-        } else {
-            if(yych <= '_') {
-                if(yych <= '^') goto yy959;
-                goto yy957;
-            } else {
-                if(yych <= '`') goto yy959;
-                if(yych <= 'z') goto yy957;
-                goto yy959;
-            }
-        }
-    }
-yy962:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == 'U') goto yy966;
-    if(yych == 'u') goto yy965;
-    goto yy955;
-yy963:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych != '?') goto yy955;
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych == '/') goto yy962;
-    goto yy955;
-yy965:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy974;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy974;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy974;
-        goto yy955;
-    }
-yy966:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy967;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy967:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy968;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy968:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy969;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy969:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy970;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy970:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy971;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy971:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy972;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy972:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy973;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy973:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy957;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy957;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy957;
-        goto yy955;
-    }
-yy974:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy975;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy975:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych >= ':') goto yy955;
-    } else {
-        if(yych <= 'F') goto yy976;
-        if(yych <= '`') goto yy955;
-        if(yych >= 'g') goto yy955;
-    }
-yy976:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yych <= '@') {
-        if(yych <= '/') goto yy955;
-        if(yych <= '9') goto yy957;
-        goto yy955;
-    } else {
-        if(yych <= 'F') goto yy957;
-        if(yych <= '`') goto yy955;
-        if(yych <= 'f') goto yy957;
-        goto yy955;
-    }
-}
-#line 404 "strict_cpp.re"
-
-    }
-    else {
-    
-#line 6587 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    unsigned int yyaccept = 0;
-    static const unsigned char yybm[] = {
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-        224, 224, 224, 224, 224, 224, 224, 224, 
-        160, 160,   0,   0,   0,   0,   0,   0, 
-          0, 128, 128, 128, 128, 128, 128,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0, 128, 128, 128, 128, 128, 128,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-          0,   0,   0,   0,   0,   0,   0,   0, 
-    };
-    if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
-    yych = *YYCURSOR;
-    if(yych <= '/') {
-        if(yych == '.') goto yy984;
-    } else {
-        if(yych <= '0') goto yy980;
-        if(yych <= '9') goto yy982;
-    }
-yy979:
-    YYCURSOR = YYMARKER;
-    if(yyaccept <= 0) {
-        goto yy981;
-    } else {
-        goto yy987;
-    }
-yy980:
-    yyaccept = 0;
-    yych = *(YYMARKER = ++YYCURSOR);
-    if(yybm[0+yych] & 64) {
-        goto yy999;
-    }
-    if(yych <= 'E') {
-        if(yych <= '/') {
-            if(yych == '.') goto yy985;
-        } else {
-            if(yych <= '9') goto yy1002;
-            if(yych >= 'E') goto yy995;
-        }
-    } else {
-        if(yych <= 'd') {
-            if(yych == 'X') goto yy1001;
-        } else {
-            if(yych <= 'e') goto yy995;
-            if(yych == 'x') goto yy1001;
-        }
-    }
-yy981:
-#line 411 "strict_cpp.re"
-    { goto integer_suffix; }
-#line 6664 "strict_cpp_re.inc"
-yy982:
-    yyaccept = 0;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 32) {
-        goto yy982;
-    }
-    if(yych <= 'D') {
-        if(yych == '.') goto yy985;
-        goto yy981;
-    } else {
-        if(yych <= 'E') goto yy995;
-        if(yych == 'e') goto yy995;
-        goto yy981;
-    }
-yy984:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy985:
-    yyaccept = 1;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= 'D') {
-            if(yych <= '/') goto yy987;
-            if(yych <= '9') goto yy985;
-        } else {
-            if(yych <= 'E') goto yy988;
-            if(yych <= 'F') goto yy989;
-        }
-    } else {
-        if(yych <= 'e') {
-            if(yych <= 'L') goto yy990;
-            if(yych >= 'e') goto yy988;
-        } else {
-            if(yych <= 'f') goto yy989;
-            if(yych == 'l') goto yy990;
-        }
-    }
-yy987:
-#line 409 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_FLOATLIT); }
-#line 6710 "strict_cpp_re.inc"
-yy988:
-    yych = *++YYCURSOR;
-    if(yych <= ',') {
-        if(yych == '+') goto yy992;
-        goto yy979;
-    } else {
-        if(yych <= '-') goto yy992;
-        if(yych <= '/') goto yy979;
-        if(yych <= '9') goto yy993;
-        goto yy979;
-    }
-yy989:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy991;
-    if(yych == 'l') goto yy991;
-    goto yy987;
-yy990:
-    yych = *++YYCURSOR;
-    if(yych == 'F') goto yy991;
-    if(yych != 'f') goto yy987;
-yy991:
-    yych = *++YYCURSOR;
-    goto yy987;
-yy992:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy993:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= '9') {
-            if(yych <= '/') goto yy987;
-            goto yy993;
-        } else {
-            if(yych == 'F') goto yy989;
-            goto yy987;
-        }
-    } else {
-        if(yych <= 'f') {
-            if(yych <= 'L') goto yy990;
-            if(yych <= 'e') goto yy987;
-            goto yy989;
-        } else {
-            if(yych == 'l') goto yy990;
-            goto yy987;
-        }
-    }
-yy995:
-    yych = *++YYCURSOR;
-    if(yych <= ',') {
-        if(yych != '+') goto yy979;
-    } else {
-        if(yych <= '-') goto yy996;
-        if(yych <= '/') goto yy979;
-        if(yych <= '9') goto yy997;
-        goto yy979;
-    }
-yy996:
-    yych = *++YYCURSOR;
-    if(yych <= '/') goto yy979;
-    if(yych >= ':') goto yy979;
-yy997:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
-    yych = *YYCURSOR;
-    if(yych <= 'K') {
-        if(yych <= '9') {
-            if(yych <= '/') goto yy987;
-            goto yy997;
-        } else {
-            if(yych == 'F') goto yy989;
-            goto yy987;
-        }
-    } else {
-        if(yych <= 'f') {
-            if(yych <= 'L') goto yy990;
-            if(yych <= 'e') goto yy987;
-            goto yy989;
-        } else {
-            if(yych == 'l') goto yy990;
-            goto yy987;
-        }
-    }
-yy999:
-    yyaccept = 0;
-    YYMARKER = ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 64) {
-        goto yy999;
-    }
-    if(yych <= '9') {
-        if(yych == '.') goto yy985;
-        if(yych <= '/') goto yy981;
-        goto yy1002;
-    } else {
-        if(yych <= 'E') {
-            if(yych <= 'D') goto yy981;
-            goto yy995;
-        } else {
-            if(yych == 'e') goto yy995;
-            goto yy981;
-        }
-    }
-yy1001:
-    yych = *++YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy1004;
-    }
-    goto yy979;
-yy1002:
-    ++YYCURSOR;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= '9') {
-        if(yych == '.') goto yy985;
-        if(yych <= '/') goto yy979;
-        goto yy1002;
-    } else {
-        if(yych <= 'E') {
-            if(yych <= 'D') goto yy979;
-            goto yy995;
-        } else {
-            if(yych == 'e') goto yy995;
-            goto yy979;
-        }
-    }
-yy1004:
-    ++YYCURSOR;
-    if(YYLIMIT == YYCURSOR) YYFILL(1);
-    yych = *YYCURSOR;
-    if(yybm[0+yych] & 128) {
-        goto yy1004;
-    }
-    goto yy981;
-}
-#line 412 "strict_cpp.re"
-
-    }
-}
-
-/* this subscanner is called, whenever a Integer was recognized */
-integer_suffix:
-{
-    if (s->enable_ms_extensions) {
-    
-#line 6859 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *(YYMARKER = YYCURSOR);
-    if(yych <= 'h') {
-        if(yych <= 'L') {
-            if(yych >= 'L') goto yy1010;
-        } else {
-            if(yych == 'U') goto yy1009;
-        }
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'i') goto yy1011;
-            if(yych >= 'l') goto yy1010;
-        } else {
-            if(yych == 'u') goto yy1009;
-        }
-    }
-yy1008:
-#line 425 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_INTLIT); }
-#line 6881 "strict_cpp_re.inc"
-yy1009:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy1018;
-    if(yych == 'l') goto yy1018;
-    goto yy1008;
-yy1010:
-    yych = *++YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1017;
-        if(yych <= 'T') goto yy1008;
-        goto yy1016;
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'k') goto yy1008;
-            goto yy1017;
-        } else {
-            if(yych == 'u') goto yy1016;
-            goto yy1008;
-        }
-    }
-yy1011:
-    yych = *++YYCURSOR;
-    if(yych == '6') goto yy1013;
-yy1012:
-    YYCURSOR = YYMARKER;
-    goto yy1008;
-yy1013:
-    yych = *++YYCURSOR;
-    if(yych != '4') goto yy1012;
-yy1014:
-    ++YYCURSOR;
-yy1015:
-#line 422 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6916 "strict_cpp_re.inc"
-yy1016:
-    yych = *++YYCURSOR;
-    goto yy1008;
-yy1017:
-    yych = *++YYCURSOR;
-    if(yych == 'U') goto yy1014;
-    if(yych == 'u') goto yy1014;
-    goto yy1015;
-yy1018:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'L') goto yy1014;
-    if(yych == 'l') goto yy1014;
-    goto yy1008;
-}
-#line 426 "strict_cpp.re"
-
-    }
-    else {
-    
-#line 6936 "strict_cpp_re.inc"
-{
-    YYCTYPE yych;
-    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
-    yych = *YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1023;
-        if(yych >= 'U') goto yy1022;
-    } else {
-        if(yych <= 'l') {
-            if(yych >= 'l') goto yy1023;
-        } else {
-            if(yych == 'u') goto yy1022;
-        }
-    }
-yy1021:
-#line 434 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_INTLIT); }
-#line 6954 "strict_cpp_re.inc"
-yy1022:
-    yych = *++YYCURSOR;
-    if(yych == 'L') goto yy1028;
-    if(yych == 'l') goto yy1028;
-    goto yy1021;
-yy1023:
-    yych = *++YYCURSOR;
-    if(yych <= 'U') {
-        if(yych == 'L') goto yy1025;
-        if(yych <= 'T') goto yy1021;
-    } else {
-        if(yych <= 'l') {
-            if(yych <= 'k') goto yy1021;
-            goto yy1025;
-        } else {
-            if(yych != 'u') goto yy1021;
-        }
-    }
-    yych = *++YYCURSOR;
-    goto yy1021;
-yy1025:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'U') goto yy1027;
-    if(yych == 'u') goto yy1027;
-yy1026:
-#line 431 "strict_cpp.re"
-    { BOOST_WAVE_RET(T_LONGINTLIT); }
-#line 6982 "strict_cpp_re.inc"
-yy1027:
-    yych = *++YYCURSOR;
-    goto yy1026;
-yy1028:
-    ++YYCURSOR;
-    if((yych = *YYCURSOR) == 'L') goto yy1027;
-    if(yych == 'l') goto yy1027;
-    goto yy1021;
-}
-#line 435 "strict_cpp.re"
-
-    }
-}
+<<<<<<< .working
+/* Generated by re2c 0.13.1 on Wed Nov 21 11:51:32 2007 */
+#line 1 "strict_cpp.re"
+/*=============================================================================
+    Boost.Wave: A Standard compliant C++ preprocessor library
+
+    Copyright (c) 2001 Daniel C. Nuffer
+    Copyright (c) 2001-2008 Hartmut Kaiser. 
+    Distributed under the Boost Software License, Version 1.0. (See accompanying 
+    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+    This is a strict lexer conforming to the Standard as close as possible.
+    It does not allow the '$' to be part of identifiers. If you need the '$'
+    character in identifiers please include the lexer definition provided
+    in the cpp.re file.
+    
+    TODO: 
+        handle errors better.
+=============================================================================*/
+
+#line 40 "strict_cpp.re"
+
+
+
+#line 25 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  58,  32,  58,  58,  64,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         58,  58,  50,  58,  58,  58,  58,  56, 
+         58,  58, 154,  58,  58,  58,  58,  58, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  58,  58,  58,  58,  42,  56, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  57,  58,  58,  62, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+        /* table 9 .. 12: 256 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  48,   0,  48,  48,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         48,  32,   0,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         96,  96,  96,  96,  96,  96,  96,  96, 
+         96,  96,  32,  32,  32,  32,  32, 128, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,   0,  32,  32,  32, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+    };
+
+    if((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+    yych = *YYCURSOR;
+    switch(yych) {
+    case 0x00:    goto yy88;
+    case 0x01:
+    case 0x02:
+    case 0x03:
+    case 0x04:
+    case 0x05:
+    case 0x06:
+    case 0x07:
+    case 0x08:
+    case 0x0E:
+    case 0x0F:
+    case 0x10:
+    case 0x11:
+    case 0x12:
+    case 0x13:
+    case 0x14:
+    case 0x15:
+    case 0x16:
+    case 0x17:
+    case 0x18:
+    case 0x19:
+    case 0x1A:
+    case 0x1B:
+    case 0x1C:
+    case 0x1D:
+    case 0x1E:
+    case 0x1F:    goto yy91;
+    case 0x09:
+    case 0x0B:
+    case 0x0C:    goto yy82;
+    case 0x0A:    goto yy85;
+    case 0x0D:    goto yy87;
+    case ' ':    goto yy84;
+    case '!':    goto yy68;
+    case '"':    goto yy81;
+    case '#':    goto yy45;
+    case '%':    goto yy37;
+    case '&':    goto yy62;
+    case '\'':    goto yy80;
+    case '(':    goto yy47;
+    case ')':    goto yy49;
+    case '*':    goto yy57;
+    case '+':    goto yy53;
+    case ',':    goto yy74;
+    case '-':    goto yy55;
+    case '.':    goto yy4;
+    case '/':    goto yy2;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':    goto yy6;
+    case ':':    goto yy43;
+    case ';':    goto yy51;
+    case '<':    goto yy33;
+    case '=':    goto yy70;
+    case '>':    goto yy72;
+    case '?':    goto yy31;
+    case 'A':
+    case 'B':
+    case 'C':
+    case 'D':
+    case 'E':
+    case 'F':
+    case 'G':
+    case 'H':
+    case 'I':
+    case 'J':
+    case 'K':
+    case 'M':
+    case 'N':
+    case 'O':
+    case 'P':
+    case 'Q':
+    case 'R':
+    case 'S':
+    case 'T':
+    case 'U':
+    case 'V':
+    case 'W':
+    case 'X':
+    case 'Y':
+    case 'Z':
+    case 'h':
+    case 'j':
+    case 'k':
+    case 'q':
+    case 'y':
+    case 'z':    goto yy76;
+    case 'L':    goto yy77;
+    case '[':    goto yy39;
+    case '\\':    goto yy78;
+    case ']':    goto yy41;
+    case '^':    goto yy59;
+    case '_':    goto yy28;
+    case 'a':    goto yy8;
+    case 'b':    goto yy10;
+    case 'c':    goto yy11;
+    case 'd':    goto yy12;
+    case 'e':    goto yy13;
+    case 'f':    goto yy14;
+    case 'g':    goto yy15;
+    case 'i':    goto yy16;
+    case 'l':    goto yy17;
+    case 'm':    goto yy18;
+    case 'n':    goto yy19;
+    case 'o':    goto yy20;
+    case 'p':    goto yy21;
+    case 'r':    goto yy22;
+    case 's':    goto yy23;
+    case 't':    goto yy24;
+    case 'u':    goto yy25;
+    case 'v':    goto yy26;
+    case 'w':    goto yy27;
+    case 'x':    goto yy61;
+    case '{':    goto yy29;
+    case '|':    goto yy64;
+    case '}':    goto yy35;
+    case '~':    goto yy66;
+    default:    goto yy90;
+    }
+yy2:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) <= '.') {
+        if(yych == '*') goto yy922;
+    } else {
+        if(yych <= '/') goto yy920;
+        if(yych == '=') goto yy918;
+    }
+#line 178 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDE); }
+#line 237 "strict_cpp_re.inc"
+yy4:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= '-') {
+        if(yych == '*') goto yy912;
+    } else {
+        if(yych <= '.') goto yy914;
+        if(yych <= '/') goto yy5;
+        if(yych <= '9') goto yy915;
+    }
+yy5:
+#line 164 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOT); }
+#line 251 "strict_cpp_re.inc"
+yy6:
+    ++YYCURSOR;
+yy7:
+#line 45 "strict_cpp.re"
+    { goto pp_number; }
+#line 257 "strict_cpp_re.inc"
+yy8:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'r') {
+        if(yych == 'n') goto yy898;
+        goto yy195;
+    } else {
+        if(yych <= 's') goto yy899;
+        if(yych == 'u') goto yy900;
+        goto yy195;
+    }
+yy9:
+#line 243 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IDENTIFIER); }
+#line 272 "strict_cpp_re.inc"
+yy10:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'n') {
+        if(yych == 'i') goto yy880;
+        goto yy195;
+    } else {
+        if(yych <= 'o') goto yy881;
+        if(yych == 'r') goto yy882;
+        goto yy195;
+    }
+yy11:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch(yych) {
+    case 'a':    goto yy842;
+    case 'h':    goto yy843;
+    case 'l':    goto yy844;
+    case 'o':    goto yy845;
+    default:    goto yy195;
+    }
+yy12:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'n') {
+        if(yych == 'e') goto yy811;
+        goto yy195;
+    } else {
+        if(yych <= 'o') goto yy812;
+        if(yych == 'y') goto yy814;
+        goto yy195;
+    }
+yy13:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'm') {
+        if(yych == 'l') goto yy786;
+        goto yy195;
+    } else {
+        if(yych <= 'n') goto yy787;
+        if(yych == 'x') goto yy788;
+        goto yy195;
+    }
+yy14:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch(yych) {
+    case 'a':    goto yy767;
+    case 'l':    goto yy768;
+    case 'o':    goto yy769;
+    case 'r':    goto yy770;
+    default:    goto yy195;
+    }
+yy15:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy763;
+    goto yy195;
+yy16:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'l') {
+        if(yych == 'f') goto yy747;
+        goto yy195;
+    } else {
+        if(yych <= 'm') goto yy749;
+        if(yych <= 'n') goto yy750;
+        goto yy195;
+    }
+yy17:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy743;
+    goto yy195;
+yy18:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'u') goto yy736;
+    goto yy195;
+yy19:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'd') {
+        if(yych == 'a') goto yy717;
+        goto yy195;
+    } else {
+        if(yych <= 'e') goto yy718;
+        if(yych == 'o') goto yy719;
+        goto yy195;
+    }
+yy20:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'p') goto yy703;
+    if(yych == 'r') goto yy704;
+    goto yy195;
+yy21:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'r') goto yy682;
+    if(yych == 'u') goto yy683;
+    goto yy195;
+yy22:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy654;
+    goto yy195;
+yy23:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 's') {
+        if(yych <= 'g') goto yy195;
+        if(yych <= 'h') goto yy615;
+        if(yych <= 'i') goto yy616;
+        goto yy195;
+    } else {
+        if(yych <= 't') goto yy617;
+        if(yych == 'w') goto yy618;
+        goto yy195;
+    }
+yy24:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'h') {
+        if(yych == 'e') goto yy578;
+        if(yych <= 'g') goto yy195;
+        goto yy579;
+    } else {
+        if(yych <= 'r') {
+            if(yych <= 'q') goto yy195;
+            goto yy580;
+        } else {
+            if(yych == 'y') goto yy581;
+            goto yy195;
+        }
+    }
+yy25:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy561;
+    if(yych == 's') goto yy562;
+    goto yy195;
+yy26:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy543;
+    if(yych == 'o') goto yy544;
+    goto yy195;
+yy27:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'c') goto yy531;
+    if(yych == 'h') goto yy532;
+    goto yy195;
+yy28:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch(yych) {
+    case '_':    goto yy442;
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'f':    goto yy447;
+    case 'i':    goto yy448;
+    case 's':    goto yy449;
+    default:    goto yy195;
+    }
+yy29:
+    ++YYCURSOR;
+#line 128 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE); }
+#line 445 "strict_cpp_re.inc"
+yy31:
+    yyaccept = 2;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == '?') goto yy407;
+yy32:
+#line 153 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_QUESTION_MARK); }
+#line 453 "strict_cpp_re.inc"
+yy33:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) <= ':') {
+        if(yych == '%') goto yy403;
+        if(yych >= ':') goto yy401;
+    } else {
+        if(yych <= ';') goto yy34;
+        if(yych <= '<') goto yy399;
+        if(yych <= '=') goto yy397;
+    }
+yy34:
+#line 194 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESS); }
+#line 467 "strict_cpp_re.inc"
+yy35:
+    ++YYCURSOR;
+#line 131 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE); }
+#line 472 "strict_cpp_re.inc"
+yy37:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) <= '<') {
+        if(yych == ':') goto yy388;
+    } else {
+        if(yych <= '=') goto yy390;
+        if(yych <= '>') goto yy392;
+    }
+#line 179 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENT); }
+#line 483 "strict_cpp_re.inc"
+yy39:
+    ++YYCURSOR;
+#line 134 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET); }
+#line 488 "strict_cpp_re.inc"
+yy41:
+    ++YYCURSOR;
+#line 137 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
+#line 493 "strict_cpp_re.inc"
+yy43:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == ':') goto yy384;
+    if(yych == '>') goto yy386;
+#line 151 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COLON); }
+#line 500 "strict_cpp_re.inc"
+yy45:
+    yyaccept = 3;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'c') {
+        if(yych <= ' ') {
+            if(yych <= 0x0A) {
+                if(yych == 0x09) goto yy261;
+            } else {
+                if(yych <= 0x0C) goto yy261;
+                if(yych >= ' ') goto yy261;
+            }
+        } else {
+            if(yych <= '.') {
+                if(yych == '#') goto yy272;
+            } else {
+                if(yych <= '/') goto yy261;
+                if(yych == '?') goto yy271;
+            }
+        }
+    } else {
+        if(yych <= 'p') {
+            if(yych <= 'i') {
+                if(yych <= 'e') goto yy261;
+                if(yych >= 'i') goto yy261;
+            } else {
+                if(yych == 'l') goto yy261;
+                if(yych >= 'p') goto yy261;
+            }
+        } else {
+            if(yych <= 't') {
+                if(yych == 'r') goto yy261;
+            } else {
+                if(yych == 'v') goto yy46;
+                if(yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy46:
+#line 140 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND); }
+#line 541 "strict_cpp_re.inc"
+yy47:
+    ++YYCURSOR;
+#line 148 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTPAREN); }
+#line 546 "strict_cpp_re.inc"
+yy49:
+    ++YYCURSOR;
+#line 149 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTPAREN); }
+#line 551 "strict_cpp_re.inc"
+yy51:
+    ++YYCURSOR;
+#line 150 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SEMICOLON); }
+#line 556 "strict_cpp_re.inc"
+yy53:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '+') goto yy256;
+    if(yych == '=') goto yy258;
+#line 175 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUS); }
+#line 563 "strict_cpp_re.inc"
+yy55:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) <= '<') {
+        if(yych == '-') goto yy250;
+    } else {
+        if(yych <= '=') goto yy252;
+        if(yych <= '>') goto yy248;
+    }
+#line 176 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUS); }
+#line 574 "strict_cpp_re.inc"
+yy57:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy246;
+#line 177 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STAR); }
+#line 580 "strict_cpp_re.inc"
+yy59:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy244;
+#line 180 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR); }
+#line 586 "strict_cpp_re.inc"
+yy61:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy237;
+    goto yy195;
+yy62:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '&') goto yy233;
+    if(yych == '=') goto yy235;
+#line 183 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AND); }
+#line 598 "strict_cpp_re.inc"
+yy64:
+    yyaccept = 4;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= '>') {
+        if(yych == '=') goto yy228;
+    } else {
+        if(yych <= '?') goto yy225;
+        if(yych == '|') goto yy226;
+    }
+yy65:
+#line 185 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR); }
+#line 611 "strict_cpp_re.inc"
+yy66:
+    ++YYCURSOR;
+#line 188 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL); }
+#line 616 "strict_cpp_re.inc"
+yy68:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy223;
+#line 191 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOT); }
+#line 622 "strict_cpp_re.inc"
+yy70:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy221;
+#line 193 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASSIGN); }
+#line 628 "strict_cpp_re.inc"
+yy72:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) <= '<') goto yy73;
+    if(yych <= '=') goto yy215;
+    if(yych <= '>') goto yy217;
+yy73:
+#line 195 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATER); }
+#line 637 "strict_cpp_re.inc"
+yy74:
+    ++YYCURSOR;
+#line 227 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMMA); }
+#line 642 "strict_cpp_re.inc"
+yy76:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    goto yy195;
+yy77:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych <= '\'') {
+        if(yych == '"') goto yy96;
+        if(yych <= '&') goto yy9;
+        goto yy214;
+    } else {
+        if(yych <= '?') {
+            if(yych <= '>') goto yy9;
+            goto yy197;
+        } else {
+            if(yych == '\\') goto yy196;
+            goto yy9;
+        }
+    }
+yy78:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'U') goto yy186;
+    if(yych == 'u') goto yy185;
+yy79:
+#line 299 "strict_cpp.re"
+    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
+#line 674 "strict_cpp_re.inc"
+yy80:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 0x0C) {
+        if(yych == 0x09) goto yy142;
+        if(yych <= 0x0A) goto yy79;
+        goto yy142;
+    } else {
+        if(yych <= 0x1F) goto yy79;
+        if(yych == '\'') goto yy79;
+        goto yy142;
+    }
+yy81:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 0x0A) {
+        if(yych == 0x09) goto yy97;
+        goto yy79;
+    } else {
+        if(yych <= 0x0C) goto yy97;
+        if(yych <= 0x1F) goto yy79;
+        goto yy97;
+    }
+yy82:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy95;
+yy83:
+#line 279 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SPACE); }
+#line 705 "strict_cpp_re.inc"
+yy84:
+    yych = *++YYCURSOR;
+    goto yy95;
+yy85:
+    ++YYCURSOR;
+yy86:
+#line 282 "strict_cpp.re"
+    {
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_NEWLINE);
+    }
+#line 718 "strict_cpp_re.inc"
+yy87:
+    yych = *++YYCURSOR;
+    if(yych == 0x0A) goto yy93;
+    goto yy86;
+yy88:
+    ++YYCURSOR;
+#line 289 "strict_cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        BOOST_WAVE_RET(T_EOF);
+    }
+#line 735 "strict_cpp_re.inc"
+yy90:
+    yych = *++YYCURSOR;
+    goto yy79;
+yy91:
+    ++YYCURSOR;
+#line 302 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 748 "strict_cpp_re.inc"
+yy93:
+    yych = *++YYCURSOR;
+    goto yy86;
+yy94:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy95:
+    if(yybm[256+yych] & 16) {
+        goto yy94;
+    }
+    goto yy83;
+yy96:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy97:
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy99;
+    goto yy100;
+yy98:
+    YYCURSOR = YYMARKER;
+    if(yyaccept <= 51) {
+        if(yyaccept <= 25) {
+            if(yyaccept <= 12) {
+                if(yyaccept <= 6) {
+                    if(yyaccept <= 3) {
+                        if(yyaccept <= 1) {
+                            if(yyaccept <= 0) {
+                                goto yy5;
+                            } else {
+                                goto yy9;
+                            }
+                        } else {
+                            if(yyaccept <= 2) {
+                                goto yy32;
+                            } else {
+                                goto yy46;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 5) {
+                            if(yyaccept <= 4) {
+                                goto yy65;
+                            } else {
+                                goto yy79;
+                            }
+                        } else {
+                            goto yy102;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 9) {
+                        if(yyaccept <= 8) {
+                            if(yyaccept <= 7) {
+                                goto yy152;
+                            } else {
+                                goto yy239;
+                            }
+                        } else {
+                            goto yy243;
+                        }
+                    } else {
+                        if(yyaccept <= 11) {
+                            if(yyaccept <= 10) {
+                                goto yy279;
+                            } else {
+                                goto yy294;
+                            }
+                        } else {
+                            goto yy389;
+                        }
+                    }
+                }
+            } else {
+                if(yyaccept <= 19) {
+                    if(yyaccept <= 16) {
+                        if(yyaccept <= 14) {
+                            if(yyaccept <= 13) {
+                                goto yy417;
+                            } else {
+                                goto yy421;
+                            }
+                        } else {
+                            if(yyaccept <= 15) {
+                                goto yy425;
+                            } else {
+                                goto yy456;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 18) {
+                            if(yyaccept <= 17) {
+                                goto yy462;
+                            } else {
+                                goto yy470;
+                            }
+                        } else {
+                            goto yy478;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 22) {
+                        if(yyaccept <= 21) {
+                            if(yyaccept <= 20) {
+                                goto yy483;
+                            } else {
+                                goto yy488;
+                            }
+                        } else {
+                            goto yy491;
+                        }
+                    } else {
+                        if(yyaccept <= 24) {
+                            if(yyaccept <= 23) {
+                                goto yy501;
+                            } else {
+                                goto yy507;
+                            }
+                        } else {
+                            goto yy510;
+                        }
+                    }
+                }
+            }
+        } else {
+            if(yyaccept <= 38) {
+                if(yyaccept <= 32) {
+                    if(yyaccept <= 29) {
+                        if(yyaccept <= 27) {
+                            if(yyaccept <= 26) {
+                                goto yy517;
+                            } else {
+                                goto yy524;
+                            }
+                        } else {
+                            if(yyaccept <= 28) {
+                                goto yy526;
+                            } else {
+                                goto yy528;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 31) {
+                            if(yyaccept <= 30) {
+                                goto yy530;
+                            } else {
+                                goto yy536;
+                            }
+                        } else {
+                            goto yy542;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 35) {
+                        if(yyaccept <= 34) {
+                            if(yyaccept <= 33) {
+                                goto yy552;
+                            } else {
+                                goto yy554;
+                            }
+                        } else {
+                            goto yy560;
+                        }
+                    } else {
+                        if(yyaccept <= 37) {
+                            if(yyaccept <= 36) {
+                                goto yy566;
+                            } else {
+                                goto yy574;
+                            }
+                        } else {
+                            goto yy577;
+                        }
+                    }
+                }
+            } else {
+                if(yyaccept <= 45) {
+                    if(yyaccept <= 42) {
+                        if(yyaccept <= 40) {
+                            if(yyaccept <= 39) {
+                                goto yy590;
+                            } else {
+                                goto yy592;
+                            }
+                        } else {
+                            if(yyaccept <= 41) {
+                                goto yy595;
+                            } else {
+                                goto yy598;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 44) {
+                            if(yyaccept <= 43) {
+                                goto yy600;
+                            } else {
+                                goto yy605;
+                            }
+                        } else {
+                            goto yy607;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 48) {
+                        if(yyaccept <= 47) {
+                            if(yyaccept <= 46) {
+                                goto yy614;
+                            } else {
+                                goto yy623;
+                            }
+                        } else {
+                            goto yy629;
+                        }
+                    } else {
+                        if(yyaccept <= 50) {
+                            if(yyaccept <= 49) {
+                                goto yy633;
+                            } else {
+                                goto yy639;
+                            }
+                        } else {
+                            goto yy645;
+                        }
+                    }
+                }
+            }
+        }
+    } else {
+        if(yyaccept <= 77) {
+            if(yyaccept <= 64) {
+                if(yyaccept <= 58) {
+                    if(yyaccept <= 55) {
+                        if(yyaccept <= 53) {
+                            if(yyaccept <= 52) {
+                                goto yy649;
+                            } else {
+                                goto yy653;
+                            }
+                        } else {
+                            if(yyaccept <= 54) {
+                                goto yy661;
+                            } else {
+                                goto yy675;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 57) {
+                            if(yyaccept <= 56) {
+                                goto yy681;
+                            } else {
+                                goto yy688;
+                            }
+                        } else {
+                            goto yy697;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 61) {
+                        if(yyaccept <= 60) {
+                            if(yyaccept <= 59) {
+                                goto yy702;
+                            } else {
+                                goto yy705;
+                            }
+                        } else {
+                            goto yy709;
+                        }
+                    } else {
+                        if(yyaccept <= 63) {
+                            if(yyaccept <= 62) {
+                                goto yy716;
+                            } else {
+                                goto yy721;
+                            }
+                        } else {
+                            goto yy725;
+                        }
+                    }
+                }
+            } else {
+                if(yyaccept <= 71) {
+                    if(yyaccept <= 68) {
+                        if(yyaccept <= 66) {
+                            if(yyaccept <= 65) {
+                                goto yy727;
+                            } else {
+                                goto yy735;
+                            }
+                        } else {
+                            if(yyaccept <= 67) {
+                                goto yy742;
+                            } else {
+                                goto yy746;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 70) {
+                            if(yyaccept <= 69) {
+                                goto yy748;
+                            } else {
+                                goto yy753;
+                            }
+                        } else {
+                            goto yy757;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 74) {
+                        if(yyaccept <= 73) {
+                            if(yyaccept <= 72) {
+                                goto yy762;
+                            } else {
+                                goto yy766;
+                            }
+                        } else {
+                            goto yy775;
+                        }
+                    } else {
+                        if(yyaccept <= 76) {
+                            if(yyaccept <= 75) {
+                                goto yy777;
+                            } else {
+                                goto yy781;
+                            }
+                        } else {
+                            goto yy785;
+                        }
+                    }
+                }
+            }
+        } else {
+            if(yyaccept <= 90) {
+                if(yyaccept <= 84) {
+                    if(yyaccept <= 81) {
+                        if(yyaccept <= 79) {
+                            if(yyaccept <= 78) {
+                                goto yy794;
+                            } else {
+                                goto yy799;
+                            }
+                        } else {
+                            if(yyaccept <= 80) {
+                                goto yy804;
+                            } else {
+                                goto yy807;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 83) {
+                            if(yyaccept <= 82) {
+                                goto yy810;
+                            } else {
+                                goto yy813;
+                            }
+                        } else {
+                            goto yy825;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 87) {
+                        if(yyaccept <= 86) {
+                            if(yyaccept <= 85) {
+                                goto yy830;
+                            } else {
+                                goto yy836;
+                            }
+                        } else {
+                            goto yy841;
+                        }
+                    } else {
+                        if(yyaccept <= 89) {
+                            if(yyaccept <= 88) {
+                                goto yy850;
+                            } else {
+                                goto yy857;
+                            }
+                        } else {
+                            goto yy859;
+                        }
+                    }
+                }
+            } else {
+                if(yyaccept <= 97) {
+                    if(yyaccept <= 94) {
+                        if(yyaccept <= 92) {
+                            if(yyaccept <= 91) {
+                                goto yy865;
+                            } else {
+                                goto yy869;
+                            }
+                        } else {
+                            if(yyaccept <= 93) {
+                                goto yy872;
+                            } else {
+                                goto yy877;
+                            }
+                        }
+                    } else {
+                        if(yyaccept <= 96) {
+                            if(yyaccept <= 95) {
+                                goto yy879;
+                            } else {
+                                goto yy886;
+                            }
+                        } else {
+                            goto yy889;
+                        }
+                    }
+                } else {
+                    if(yyaccept <= 100) {
+                        if(yyaccept <= 99) {
+                            if(yyaccept <= 98) {
+                                goto yy894;
+                            } else {
+                                goto yy897;
+                            }
+                        } else {
+                            goto yy903;
+                        }
+                    } else {
+                        if(yyaccept <= 102) {
+                            if(yyaccept <= 101) {
+                                goto yy905;
+                            } else {
+                                goto yy907;
+                            }
+                        } else {
+                            goto yy911;
+                        }
+                    }
+                }
+            }
+        }
+    }
+yy99:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy112;
+yy100:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '`') {
+        if(yych <= '7') {
+            if(yych <= '&') {
+                if(yych == '"') goto yy96;
+                goto yy98;
+            } else {
+                if(yych <= '\'') goto yy96;
+                if(yych <= '/') goto yy98;
+                goto yy107;
+            }
+        } else {
+            if(yych <= 'T') {
+                if(yych == '?') goto yy105;
+                goto yy98;
+            } else {
+                if(yych <= 'U') goto yy104;
+                if(yych == '\\') goto yy96;
+                goto yy98;
+            }
+        }
+    } else {
+        if(yych <= 'r') {
+            if(yych <= 'f') {
+                if(yych <= 'b') goto yy96;
+                if(yych <= 'e') goto yy98;
+                goto yy96;
+            } else {
+                if(yych == 'n') goto yy96;
+                if(yych <= 'q') goto yy98;
+                goto yy96;
+            }
+        } else {
+            if(yych <= 'u') {
+                if(yych <= 's') goto yy98;
+                if(yych <= 't') goto yy96;
+                goto yy103;
+            } else {
+                if(yych <= 'v') goto yy96;
+                if(yych == 'x') goto yy106;
+                goto yy98;
+            }
+        }
+    }
+yy101:
+    ++YYCURSOR;
+yy102:
+#line 249 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRINGLIT); }
+#line 1250 "strict_cpp_re.inc"
+yy103:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy138;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy138;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy138;
+        goto yy98;
+    }
+yy104:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy131;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy131;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy131;
+        goto yy98;
+    }
+yy105:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy111;
+    goto yy100;
+yy106:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    goto yy98;
+yy107:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '"') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy96;
+            if(yych <= 0x1F) goto yy98;
+            if(yych <= '!') goto yy96;
+            goto yy101;
+        }
+    } else {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy96;
+            if(yych >= '8') goto yy96;
+        } else {
+            if(yych <= '?') goto yy99;
+            if(yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy99;
+    goto yy100;
+yy109:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    if(yych <= '!') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy96;
+            if(yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if(yych <= '?') {
+            if(yych <= '"') goto yy101;
+            if(yych <= '>') goto yy96;
+            goto yy99;
+        } else {
+            if(yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy111:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych >= '\\') goto yy100;
+yy112:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if(yych <= '!') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy96;
+            if(yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if(yych <= '/') {
+            if(yych <= '"') goto yy101;
+            if(yych <= '.') goto yy96;
+        } else {
+            if(yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy114:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 1) {
+        goto yy114;
+    }
+    if(yych <= '7') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy118;
+                if(yych <= '/') goto yy96;
+                goto yy107;
+            }
+        }
+    } else {
+        if(yych <= 'U') {
+            if(yych == '?') goto yy119;
+            if(yych <= 'T') goto yy96;
+            goto yy117;
+        } else {
+            if(yych <= 'u') {
+                if(yych <= 't') goto yy96;
+            } else {
+                if(yych == 'x') goto yy109;
+                goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+                goto yy128;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+            goto yy128;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych <= 'f') goto yy128;
+                goto yy96;
+            }
+        }
+    }
+yy117:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+                goto yy121;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+            goto yy121;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych <= 'f') goto yy121;
+                goto yy96;
+            }
+        }
+    }
+yy118:
+    yyaccept = 6;
+    YYMARKER = ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy102;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy99;
+    goto yy100;
+yy119:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych >= '\\') goto yy100;
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if(yych <= '!') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy96;
+            if(yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if(yych <= '/') {
+            if(yych <= '"') goto yy101;
+            if(yych <= '.') goto yy96;
+            goto yy114;
+        } else {
+            if(yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy121:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy99;
+    goto yy100;
+yy128:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy96;
+            if(yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if(yych <= '!') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if(yych <= '"') goto yy101;
+                if(yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy99;
+            if(yych <= '@') goto yy96;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if(yych <= '`') goto yy96;
+                if(yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if(yych <= '!') goto yy98;
+    if(yych <= '"') goto yy101;
+    if(yych <= '[') goto yy99;
+    goto yy100;
+yy131:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy132;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy132:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy133;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy133:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy134;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy134:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy135;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy135:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy136;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy136:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy137;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy137:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy96;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy138:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy139;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy139:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy140;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy140:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy96;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy141:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy142:
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych >= '\\') goto yy144;
+yy143:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy156;
+yy144:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '`') {
+        if(yych <= '7') {
+            if(yych <= '&') {
+                if(yych == '"') goto yy141;
+                goto yy98;
+            } else {
+                if(yych <= '\'') goto yy141;
+                if(yych <= '/') goto yy98;
+                goto yy149;
+            }
+        } else {
+            if(yych <= 'T') {
+                if(yych == '?') goto yy147;
+                goto yy98;
+            } else {
+                if(yych <= 'U') goto yy146;
+                if(yych == '\\') goto yy141;
+                goto yy98;
+            }
+        }
+    } else {
+        if(yych <= 'r') {
+            if(yych <= 'f') {
+                if(yych <= 'b') goto yy141;
+                if(yych <= 'e') goto yy98;
+                goto yy141;
+            } else {
+                if(yych == 'n') goto yy141;
+                if(yych <= 'q') goto yy98;
+                goto yy141;
+            }
+        } else {
+            if(yych <= 'u') {
+                if(yych <= 's') goto yy98;
+                if(yych <= 't') goto yy141;
+            } else {
+                if(yych <= 'v') goto yy141;
+                if(yych == 'x') goto yy148;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy182;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy182;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy182;
+        goto yy98;
+    }
+yy146:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy175;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy175;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy175;
+        goto yy98;
+    }
+yy147:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy155;
+    goto yy144;
+yy148:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy153;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy153;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy153;
+        goto yy98;
+    }
+yy149:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '\'') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy141;
+            if(yych <= 0x1F) goto yy98;
+            if(yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy141;
+            if(yych >= '8') goto yy141;
+        } else {
+            if(yych <= '?') goto yy143;
+            if(yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy143;
+    goto yy144;
+yy151:
+    ++YYCURSOR;
+yy152:
+#line 246 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHARLIT); }
+#line 2097 "strict_cpp_re.inc"
+yy153:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+                goto yy153;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+            goto yy153;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych <= 'f') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+yy155:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych >= '\\') goto yy144;
+yy156:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '\'') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy141;
+            if(yych <= 0x1F) goto yy98;
+            if(yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if(yych <= '>') {
+            if(yych != '/') goto yy141;
+        } else {
+            if(yych <= '?') goto yy156;
+            if(yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy158:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '>') {
+        if(yych <= 0x1F) {
+            if(yych <= 0x09) {
+                if(yych <= 0x08) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= 0x0A) goto yy98;
+                if(yych <= 0x0C) goto yy141;
+                goto yy98;
+            }
+        } else {
+            if(yych <= '\'') {
+                if(yych <= '&') goto yy141;
+                goto yy162;
+            } else {
+                if(yych <= '/') goto yy141;
+                if(yych <= '7') goto yy149;
+                goto yy141;
+            }
+        }
+    } else {
+        if(yych <= '\\') {
+            if(yych <= 'T') {
+                if(yych <= '?') goto yy163;
+                goto yy141;
+            } else {
+                if(yych <= 'U') goto yy161;
+                if(yych <= '[') goto yy141;
+                goto yy158;
+            }
+        } else {
+            if(yych <= 'u') {
+                if(yych <= 't') goto yy141;
+            } else {
+                if(yych == 'x') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+                goto yy172;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+            goto yy172;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych <= 'f') goto yy172;
+                goto yy141;
+            }
+        }
+    }
+yy161:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+                goto yy165;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+            goto yy165;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych <= 'f') goto yy165;
+                goto yy141;
+            }
+        }
+    }
+yy162:
+    yyaccept = 7;
+    YYMARKER = ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy152;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy143;
+    goto yy144;
+yy163:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych >= '\\') goto yy144;
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '\'') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if(yych <= 0x0C) goto yy141;
+            if(yych <= 0x1F) goto yy98;
+            if(yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if(yych <= '>') {
+            if(yych == '/') goto yy158;
+            goto yy141;
+        } else {
+            if(yych <= '?') goto yy156;
+            if(yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy165:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy143;
+    goto yy144;
+yy172:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych <= 0x0C) {
+            if(yych == 0x09) goto yy141;
+            if(yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if(yych <= '&') {
+                if(yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if(yych <= '\'') goto yy151;
+                if(yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if(yych <= 'F') {
+            if(yych == '?') goto yy143;
+            if(yych <= '@') goto yy141;
+        } else {
+            if(yych <= '\\') {
+                if(yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if(yych <= '`') goto yy141;
+                if(yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if(yych <= '&') goto yy98;
+    if(yych <= '\'') goto yy151;
+    if(yych <= '[') goto yy143;
+    goto yy144;
+yy175:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy176;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy176:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy177;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy177:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy178;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy178:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy179;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy179:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy180;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy180:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy181;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy181:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy141;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy182:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy183;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy183:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy184;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy184:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy141;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy185:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy211;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy211;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy211;
+        goto yy98;
+    }
+yy186:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy187;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy187:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy188;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy188:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy189;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy189:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy190;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy190:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy191;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy191:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy192;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy192:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy193;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy193:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy194;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy194:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy195:
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych != '\\') goto yy9;
+yy196:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == 'U') goto yy200;
+    if(yych == 'u') goto yy199;
+    goto yy98;
+yy197:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych != '?') goto yy98;
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == '/') goto yy196;
+    goto yy98;
+yy199:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy208;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy208;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy208;
+        goto yy98;
+    }
+yy200:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy201;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy201:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy202;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy202:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy203;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy203:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy204;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy204:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy205;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy205:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy206;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy206:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy207;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy207:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy194;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy208:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy209;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy209:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy210;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy210:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy194;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy211:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy212;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy212:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych >= ':') goto yy98;
+    } else {
+        if(yych <= 'F') goto yy213;
+        if(yych <= '`') goto yy98;
+        if(yych >= 'g') goto yy98;
+    }
+yy213:
+    yych = *++YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy98;
+        if(yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if(yych <= 'F') goto yy194;
+        if(yych <= '`') goto yy98;
+        if(yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy214:
+    yych = *++YYCURSOR;
+    if(yych == '\'') goto yy98;
+    goto yy142;
+yy215:
+    ++YYCURSOR;
+#line 217 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATEREQUAL); }
+#line 3027 "strict_cpp_re.inc"
+yy217:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy219;
+#line 210 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
+#line 3033 "strict_cpp_re.inc"
+yy219:
+    ++YYCURSOR;
+#line 211 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
+#line 3038 "strict_cpp_re.inc"
+yy221:
+    ++YYCURSOR;
+#line 213 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EQUAL); }
+#line 3043 "strict_cpp_re.inc"
+yy223:
+    ++YYCURSOR;
+#line 214 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOTEQUAL); }
+#line 3048 "strict_cpp_re.inc"
+yy225:
+    yych = *++YYCURSOR;
+    if(yych == '?') goto yy230;
+    goto yy98;
+yy226:
+    ++YYCURSOR;
+#line 220 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR); }
+#line 3057 "strict_cpp_re.inc"
+yy228:
+    ++YYCURSOR;
+#line 206 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN); }
+#line 3062 "strict_cpp_re.inc"
+yy230:
+    yych = *++YYCURSOR;
+    if(yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 222 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3069 "strict_cpp_re.inc"
+yy233:
+    ++YYCURSOR;
+#line 218 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDAND); }
+#line 3074 "strict_cpp_re.inc"
+yy235:
+    ++YYCURSOR;
+#line 204 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDASSIGN); }
+#line 3079 "strict_cpp_re.inc"
+yy237:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 8;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy239;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy240;
+            if(yych <= '`') goto yy239;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy239:
+#line 182 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
+#line 3106 "strict_cpp_re.inc"
+yy240:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'q') goto yy195;
+    yyaccept = 9;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy243:
+#line 202 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
+#line 3124 "strict_cpp_re.inc"
+yy244:
+    ++YYCURSOR;
+#line 201 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN); }
+#line 3129 "strict_cpp_re.inc"
+yy246:
+    ++YYCURSOR;
+#line 198 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STARASSIGN); }
+#line 3134 "strict_cpp_re.inc"
+yy248:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '*') goto yy254;
+#line 238 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ARROW); }
+#line 3140 "strict_cpp_re.inc"
+yy250:
+    ++YYCURSOR;
+#line 226 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSMINUS); }
+#line 3145 "strict_cpp_re.inc"
+yy252:
+    ++YYCURSOR;
+#line 197 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSASSIGN); }
+#line 3150 "strict_cpp_re.inc"
+yy254:
+    ++YYCURSOR;
+#line 229 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_ARROW);
+            }
+            else {
+                BOOST_WAVE_RET(T_ARROWSTAR); 
+            }
+        }
+#line 3163 "strict_cpp_re.inc"
+yy256:
+    ++YYCURSOR;
+#line 225 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSPLUS); }
+#line 3168 "strict_cpp_re.inc"
+yy258:
+    ++YYCURSOR;
+#line 196 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSASSIGN); }
+#line 3173 "strict_cpp_re.inc"
+yy260:
+    ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+    yych = *YYCURSOR;
+yy261:
+    if(yych <= 'h') {
+        if(yych <= ' ') {
+            if(yych <= 0x0A) {
+                if(yych == 0x09) goto yy260;
+                goto yy98;
+            } else {
+                if(yych <= 0x0C) goto yy260;
+                if(yych <= 0x1F) goto yy98;
+                goto yy260;
+            }
+        } else {
+            if(yych <= 'c') {
+                if(yych != '/') goto yy98;
+            } else {
+                if(yych <= 'd') goto yy269;
+                if(yych <= 'e') goto yy263;
+                goto yy98;
+            }
+        }
+    } else {
+        if(yych <= 'q') {
+            if(yych <= 'l') {
+                if(yych <= 'i') goto yy270;
+                if(yych <= 'k') goto yy98;
+                goto yy267;
+            } else {
+                if(yych == 'p') goto yy266;
+                goto yy98;
+            }
+        } else {
+            if(yych <= 'u') {
+                if(yych <= 'r') goto yy264;
+                if(yych <= 't') goto yy98;
+                goto yy268;
+            } else {
+                if(yych == 'w') goto yy265;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == '*') goto yy377;
+    goto yy98;
+yy263:
+    yych = *++YYCURSOR;
+    if(yych <= 'm') {
+        if(yych == 'l') goto yy353;
+        goto yy98;
+    } else {
+        if(yych <= 'n') goto yy354;
+        if(yych == 'r') goto yy355;
+        goto yy98;
+    }
+yy264:
+    yych = *++YYCURSOR;
+    if(yych == 'e') goto yy347;
+    goto yy98;
+yy265:
+    yych = *++YYCURSOR;
+    if(yych == 'a') goto yy340;
+    goto yy98;
+yy266:
+    yych = *++YYCURSOR;
+    if(yych == 'r') goto yy334;
+    goto yy98;
+yy267:
+    yych = *++YYCURSOR;
+    if(yych == 'i') goto yy330;
+    goto yy98;
+yy268:
+    yych = *++YYCURSOR;
+    if(yych == 'n') goto yy325;
+    goto yy98;
+yy269:
+    yych = *++YYCURSOR;
+    if(yych == 'e') goto yy319;
+    goto yy98;
+yy270:
+    yych = *++YYCURSOR;
+    if(yych == 'f') goto yy278;
+    if(yych == 'n') goto yy277;
+    goto yy98;
+yy271:
+    yych = *++YYCURSOR;
+    if(yych == '?') goto yy274;
+    goto yy98;
+yy272:
+    ++YYCURSOR;
+#line 143 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND); }
+#line 3271 "strict_cpp_re.inc"
+yy274:
+    yych = *++YYCURSOR;
+    if(yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 144 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3278 "strict_cpp_re.inc"
+yy277:
+    yych = *++YYCURSOR;
+    if(yych == 'c') goto yy289;
+    goto yy98;
+yy278:
+    yyaccept = 10;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'd') goto yy281;
+    if(yych == 'n') goto yy280;
+yy279:
+#line 261 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IF); }
+#line 3291 "strict_cpp_re.inc"
+yy280:
+    yych = *++YYCURSOR;
+    if(yych == 'd') goto yy285;
+    goto yy98;
+yy281:
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 262 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFDEF); }
+#line 3304 "strict_cpp_re.inc"
+yy285:
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 263 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFNDEF); }
+#line 3313 "strict_cpp_re.inc"
+yy289:
+    yych = *++YYCURSOR;
+    if(yych != 'l') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'u') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yyaccept = 11;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == '_') goto yy295;
+    goto yy297;
+yy294:
+#line 259 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_INCLUDE); }
+#line 3330 "strict_cpp_re.inc"
+yy295:
+    yych = *++YYCURSOR;
+    if(yych == 'n') goto yy316;
+    goto yy98;
+yy296:
+    yyaccept = 11;
+    YYMARKER = ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+yy297:
+    if(yych <= ' ') {
+        if(yych <= 0x0A) {
+            if(yych == 0x09) goto yy296;
+            goto yy294;
+        } else {
+            if(yych <= 0x0C) goto yy296;
+            if(yych <= 0x1F) goto yy294;
+            goto yy296;
+        }
+    } else {
+        if(yych <= '.') {
+            if(yych == '"') goto yy300;
+            goto yy294;
+        } else {
+            if(yych <= '/') goto yy298;
+            if(yych == '<') goto yy299;
+            goto yy294;
+        }
+    }
+yy298:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == '*') goto yy309;
+    goto yy98;
+yy299:
+    yych = *++YYCURSOR;
+    if(yych == '>') goto yy98;
+    goto yy306;
+yy300:
+    yych = *++YYCURSOR;
+    if(yych == '"') goto yy98;
+    goto yy302;
+yy301:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy302:
+    if(yybm[0+yych] & 8) {
+        goto yy301;
+    }
+    if(yych <= '!') goto yy98;
+    ++YYCURSOR;
+#line 256 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_QHEADER); }
+#line 3386 "strict_cpp_re.inc"
+yy305:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy306:
+    if(yybm[0+yych] & 16) {
+        goto yy305;
+    }
+    if(yych <= '=') goto yy98;
+    ++YYCURSOR;
+#line 253 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_HHEADER); }
+#line 3399 "strict_cpp_re.inc"
+yy309:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if(yych == 0x0D) goto yy311;
+    if(yych <= ')') goto yy98;
+    goto yy313;
+yy311:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if(yych == 0x0D) goto yy311;
+    if(yych <= ')') goto yy98;
+yy313:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 128) {
+        goto yy313;
+    }
+    if(yych <= 0x0D) {
+        if(yych <= 0x08) goto yy98;
+        if(yych <= 0x0C) goto yy309;
+    } else {
+        if(yych <= 0x1F) goto yy98;
+        if(yych == '/') goto yy296;
+        goto yy309;
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if(yych == 0x0D) goto yy311;
+    if(yych <= ')') goto yy98;
+    goto yy313;
+yy316:
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'x') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych == 't') goto yy296;
+    goto yy98;
+yy319:
+    yych = *++YYCURSOR;
+    if(yych != 'f') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 267 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_DEFINE); }
+#line 3463 "strict_cpp_re.inc"
+yy325:
+    yych = *++YYCURSOR;
+    if(yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 268 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_UNDEF); }
+#line 3474 "strict_cpp_re.inc"
+yy330:
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 269 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_LINE); }
+#line 3483 "strict_cpp_re.inc"
+yy334:
+    yych = *++YYCURSOR;
+    if(yych != 'a') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'm') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'a') goto yy98;
+    ++YYCURSOR;
+#line 271 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_PRAGMA); }
+#line 3496 "strict_cpp_re.inc"
+yy340:
+    yych = *++YYCURSOR;
+    if(yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'g') goto yy98;
+    ++YYCURSOR;
+#line 273 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_WARNING); }
+#line 3511 "strict_cpp_re.inc"
+yy347:
+    yych = *++YYCURSOR;
+    if(yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 275 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
+#line 3524 "strict_cpp_re.inc"
+yy353:
+    yych = *++YYCURSOR;
+    if(yych == 'i') goto yy371;
+    if(yych == 's') goto yy372;
+    goto yy98;
+yy354:
+    yych = *++YYCURSOR;
+    if(yych == 'd') goto yy360;
+    goto yy98;
+yy355:
+    yych = *++YYCURSOR;
+    if(yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'r') goto yy98;
+    ++YYCURSOR;
+#line 270 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ERROR); }
+#line 3544 "strict_cpp_re.inc"
+yy360:
+    yych = *++YYCURSOR;
+    if(yych == 'i') goto yy361;
+    if(yych == 'r') goto yy362;
+    goto yy98;
+yy361:
+    yych = *++YYCURSOR;
+    if(yych == 'f') goto yy369;
+    goto yy98;
+yy362:
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if(yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 276 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+#line 3568 "strict_cpp_re.inc"
+yy369:
+    ++YYCURSOR;
+#line 266 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ENDIF); }
+#line 3573 "strict_cpp_re.inc"
+yy371:
+    yych = *++YYCURSOR;
+    if(yych == 'f') goto yy375;
+    goto yy98;
+yy372:
+    yych = *++YYCURSOR;
+    if(yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 264 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELSE); }
+#line 3584 "strict_cpp_re.inc"
+yy375:
+    ++YYCURSOR;
+#line 265 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELIF); }
+#line 3589 "strict_cpp_re.inc"
+yy377:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= 0x0D) {
+        if(yych <= 0x08) goto yy98;
+        if(yych <= 0x0C) goto yy377;
+    } else {
+        if(yych <= 0x1F) goto yy98;
+        if(yych == '*') goto yy381;
+        goto yy377;
+    }
+yy379:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= 0x0D) {
+        if(yych <= 0x08) goto yy98;
+        if(yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if(yych <= 0x1F) goto yy98;
+        if(yych != '*') goto yy377;
+    }
+yy381:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= 0x1F) {
+        if(yych <= 0x08) goto yy98;
+        if(yych <= 0x0C) goto yy377;
+        if(yych >= 0x0E) goto yy98;
+    } else {
+        if(yych <= '*') {
+            if(yych <= ')') goto yy377;
+            goto yy381;
+        } else {
+            if(yych == '/') goto yy260;
+            goto yy377;
+        }
+    }
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= 0x0D) {
+        if(yych <= 0x08) goto yy98;
+        if(yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if(yych <= 0x1F) goto yy98;
+        if(yych == '*') goto yy381;
+        goto yy377;
+    }
+yy384:
+    ++YYCURSOR;
+#line 155 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_COLON);
+            }
+            else {
+                BOOST_WAVE_RET(T_COLON_COLON); 
+            }
+        }
+#line 3655 "strict_cpp_re.inc"
+yy386:
+    ++YYCURSOR;
+#line 139 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
+#line 3660 "strict_cpp_re.inc"
+yy388:
+    yyaccept = 12;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'e') {
+        if(yych <= ' ') {
+            if(yych <= 0x0A) {
+                if(yych == 0x09) goto yy261;
+            } else {
+                if(yych <= 0x0C) goto yy261;
+                if(yych >= ' ') goto yy261;
+            }
+        } else {
+            if(yych <= '.') {
+                if(yych == '%') goto yy394;
+            } else {
+                if(yych <= '/') goto yy261;
+                if(yych >= 'd') goto yy261;
+            }
+        }
+    } else {
+        if(yych <= 'p') {
+            if(yych <= 'k') {
+                if(yych == 'i') goto yy261;
+            } else {
+                if(yych <= 'l') goto yy261;
+                if(yych >= 'p') goto yy261;
+            }
+        } else {
+            if(yych <= 't') {
+                if(yych == 'r') goto yy261;
+            } else {
+                if(yych == 'v') goto yy389;
+                if(yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy389:
+#line 141 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_ALT); }
+#line 3700 "strict_cpp_re.inc"
+yy390:
+    ++YYCURSOR;
+#line 200 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
+#line 3705 "strict_cpp_re.inc"
+yy392:
+    ++YYCURSOR;
+#line 133 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
+#line 3710 "strict_cpp_re.inc"
+yy394:
+    yych = *++YYCURSOR;
+    if(yych != ':') goto yy98;
+    ++YYCURSOR;
+#line 147 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
+#line 3717 "strict_cpp_re.inc"
+yy397:
+    ++YYCURSOR;
+#line 216 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESSEQUAL); }
+#line 3722 "strict_cpp_re.inc"
+yy399:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy405;
+#line 209 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFT); }
+#line 3728 "strict_cpp_re.inc"
+yy401:
+    ++YYCURSOR;
+#line 136 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
+#line 3733 "strict_cpp_re.inc"
+yy403:
+    ++YYCURSOR;
+#line 130 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
+#line 3738 "strict_cpp_re.inc"
+yy405:
+    ++YYCURSOR;
+#line 212 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
+#line 3743 "strict_cpp_re.inc"
+yy407:
+    yych = *++YYCURSOR;
+    switch(yych) {
+    case '!':    goto yy420;
+    case '\'':    goto yy418;
+    case '(':    goto yy412;
+    case ')':    goto yy414;
+    case '-':    goto yy422;
+    case '/':    goto yy424;
+    case '<':    goto yy408;
+    case '=':    goto yy416;
+    case '>':    goto yy410;
+    default:    goto yy98;
+    }
+yy408:
+    ++YYCURSOR;
+#line 129 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
+#line 3762 "strict_cpp_re.inc"
+yy410:
+    ++YYCURSOR;
+#line 132 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
+#line 3767 "strict_cpp_re.inc"
+yy412:
+    ++YYCURSOR;
+#line 135 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
+#line 3772 "strict_cpp_re.inc"
+yy414:
+    ++YYCURSOR;
+#line 138 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
+#line 3777 "strict_cpp_re.inc"
+yy416:
+    yyaccept = 13;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'c') {
+        if(yych <= ' ') {
+            if(yych <= 0x0A) {
+                if(yych == 0x09) goto yy261;
+            } else {
+                if(yych <= 0x0C) goto yy261;
+                if(yych >= ' ') goto yy261;
+            }
+        } else {
+            if(yych <= '.') {
+                if(yych == '#') goto yy437;
+            } else {
+                if(yych <= '/') goto yy261;
+                if(yych == '?') goto yy436;
+            }
+        }
+    } else {
+        if(yych <= 'p') {
+            if(yych <= 'i') {
+                if(yych <= 'e') goto yy261;
+                if(yych >= 'i') goto yy261;
+            } else {
+                if(yych == 'l') goto yy261;
+                if(yych >= 'p') goto yy261;
+            }
+        } else {
+            if(yych <= 't') {
+                if(yych == 'r') goto yy261;
+            } else {
+                if(yych == 'v') goto yy417;
+                if(yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy417:
+#line 142 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
+#line 3818 "strict_cpp_re.inc"
+yy418:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '=') goto yy434;
+#line 181 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
+#line 3824 "strict_cpp_re.inc"
+yy420:
+    yyaccept = 14;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= '>') {
+        if(yych == '=') goto yy429;
+    } else {
+        if(yych <= '?') goto yy426;
+        if(yych == '|') goto yy427;
+    }
+yy421:
+#line 187 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
+#line 3837 "strict_cpp_re.inc"
+yy422:
+    ++YYCURSOR;
+#line 189 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
+#line 3842 "strict_cpp_re.inc"
+yy424:
+    yyaccept = 15;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'U') goto yy186;
+    if(yych == 'u') goto yy185;
+yy425:
+#line 239 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
+#line 3851 "strict_cpp_re.inc"
+yy426:
+    yych = *++YYCURSOR;
+    if(yych == '?') goto yy431;
+    goto yy98;
+yy427:
+    ++YYCURSOR;
+#line 221 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3860 "strict_cpp_re.inc"
+yy429:
+    ++YYCURSOR;
+#line 208 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
+#line 3865 "strict_cpp_re.inc"
+yy431:
+    yych = *++YYCURSOR;
+    if(yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 224 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3872 "strict_cpp_re.inc"
+yy434:
+    ++YYCURSOR;
+#line 203 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
+#line 3877 "strict_cpp_re.inc"
+yy436:
+    yych = *++YYCURSOR;
+    if(yych == '?') goto yy439;
+    goto yy98;
+yy437:
+    ++YYCURSOR;
+#line 145 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3886 "strict_cpp_re.inc"
+yy439:
+    yych = *++YYCURSOR;
+    if(yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 146 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3893 "strict_cpp_re.inc"
+yy442:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch(yych) {
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'e':    goto yy495;
+    case 'f':    goto yy493;
+    case 'i':    goto yy492;
+    case 'l':    goto yy496;
+    case 's':    goto yy449;
+    case 't':    goto yy494;
+    default:    goto yy195;
+    }
+yy443:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 's') goto yy489;
+    goto yy195;
+yy444:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy484;
+    goto yy195;
+yy445:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'd') goto yy479;
+    goto yy195;
+yy446:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy471;
+    goto yy195;
+yy447:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy463;
+    goto yy195;
+yy448:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy457;
+    goto yy195;
+yy449:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 16;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy456:
+#line 120 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
+#line 3969 "strict_cpp_re.inc"
+yy457:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+yy458:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 17;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy462:
+#line 125 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
+#line 3994 "strict_cpp_re.inc"
+yy463:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 18;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy470:
+#line 119 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
+#line 4024 "strict_cpp_re.inc"
+yy471:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 19;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy478:
+#line 117 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
+#line 4054 "strict_cpp_re.inc"
+yy479:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 20;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy483:
+#line 118 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
+#line 4075 "strict_cpp_re.inc"
+yy484:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 21;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy488:
+#line 116 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
+#line 4096 "strict_cpp_re.inc"
+yy489:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'm') goto yy195;
+    yyaccept = 22;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy491:
+#line 126 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
+#line 4111 "strict_cpp_re.inc"
+yy492:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy518;
+    goto yy195;
+yy493:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy463;
+    if(yych == 'i') goto yy511;
+    goto yy195;
+yy494:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'r') goto yy508;
+    goto yy195;
+yy495:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'x') goto yy502;
+    goto yy195;
+yy496:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'v') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 23;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy501:
+#line 124 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
+#line 4156 "strict_cpp_re.inc"
+yy502:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 24;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy507:
+#line 122 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
+#line 4180 "strict_cpp_re.inc"
+yy508:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'y') goto yy195;
+    yyaccept = 25;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy510:
+#line 121 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
+#line 4195 "strict_cpp_re.inc"
+yy511:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'y') goto yy195;
+    yyaccept = 26;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy517:
+#line 123 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
+#line 4222 "strict_cpp_re.inc"
+yy518:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'l') goto yy458;
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch(yych) {
+    case '1':    goto yy520;
+    case '3':    goto yy521;
+    case '6':    goto yy522;
+    case '8':    goto yy523;
+    default:    goto yy195;
+    }
+yy520:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == '6') goto yy529;
+    goto yy195;
+yy521:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == '2') goto yy527;
+    goto yy195;
+yy522:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == '4') goto yy525;
+    goto yy195;
+yy523:
+    yyaccept = 27;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy524:
+#line 112 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
+#line 4263 "strict_cpp_re.inc"
+yy525:
+    yyaccept = 28;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy526:
+#line 115 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
+#line 4275 "strict_cpp_re.inc"
+yy527:
+    yyaccept = 29;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy528:
+#line 114 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
+#line 4287 "strict_cpp_re.inc"
+yy529:
+    yyaccept = 30;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy530:
+#line 113 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
+#line 4299 "strict_cpp_re.inc"
+yy531:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'h') goto yy537;
+    goto yy195;
+yy532:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 31;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy536:
+#line 110 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WHILE); }
+#line 4325 "strict_cpp_re.inc"
+yy537:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 32;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy542:
+#line 109 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WCHART); }
+#line 4349 "strict_cpp_re.inc"
+yy543:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'r') goto yy555;
+    goto yy195;
+yy544:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy545;
+    if(yych == 'l') goto yy546;
+    goto yy195;
+yy545:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'd') goto yy553;
+    goto yy195;
+yy546:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 33;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy552:
+#line 108 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOLATILE); }
+#line 4392 "strict_cpp_re.inc"
+yy553:
+    yyaccept = 34;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy554:
+#line 107 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOID); }
+#line 4404 "strict_cpp_re.inc"
+yy555:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 35;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy560:
+#line 106 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VIRTUAL); }
+#line 4428 "strict_cpp_re.inc"
+yy561:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy567;
+    if(yych == 's') goto yy568;
+    goto yy195;
+yy562:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'g') goto yy195;
+    yyaccept = 36;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy566:
+#line 105 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_USING); }
+#line 4455 "strict_cpp_re.inc"
+yy567:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy575;
+    goto yy195;
+yy568:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'g') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 37;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy574:
+#line 104 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNSIGNED); }
+#line 4487 "strict_cpp_re.inc"
+yy575:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 38;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy577:
+#line 103 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNION); }
+#line 4502 "strict_cpp_re.inc"
+yy578:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'm') goto yy608;
+    goto yy195;
+yy579:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy601;
+    if(yych == 'r') goto yy602;
+    goto yy195;
+yy580:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'u') goto yy596;
+    if(yych == 'y') goto yy597;
+    goto yy195;
+yy581:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'h') {
+        if(yych != 'd') goto yy195;
+    } else {
+        if(yych <= 'i') goto yy585;
+        if(yych == 'n') goto yy586;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy593;
+    goto yy195;
+yy585:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'd') goto yy591;
+    goto yy195;
+yy586:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 39;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy590:
+#line 102 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPENAME); }
+#line 4565 "strict_cpp_re.inc"
+yy591:
+    yyaccept = 40;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy592:
+#line 101 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEID); }
+#line 4577 "strict_cpp_re.inc"
+yy593:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'f') goto yy195;
+    yyaccept = 41;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy595:
+#line 100 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEDEF); }
+#line 4592 "strict_cpp_re.inc"
+yy596:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy599;
+    goto yy195;
+yy597:
+    yyaccept = 42;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy598:
+#line 99 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRY); }
+#line 4609 "strict_cpp_re.inc"
+yy599:
+    yyaccept = 43;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy600:
+#line 98 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRUE); }
+#line 4621 "strict_cpp_re.inc"
+yy601:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 's') goto yy606;
+    goto yy195;
+yy602:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'w') goto yy195;
+    yyaccept = 44;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy605:
+#line 97 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THROW); }
+#line 4644 "strict_cpp_re.inc"
+yy606:
+    yyaccept = 45;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy607:
+#line 96 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THIS); }
+#line 4656 "strict_cpp_re.inc"
+yy608:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 46;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy614:
+#line 95 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TEMPLATE); }
+#line 4683 "strict_cpp_re.inc"
+yy615:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy650;
+    goto yy195;
+yy616:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'g') goto yy640;
+    if(yych == 'z') goto yy641;
+    goto yy195;
+yy617:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy624;
+    if(yych == 'r') goto yy625;
+    goto yy195;
+yy618:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'h') goto yy195;
+    yyaccept = 47;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy623:
+#line 94 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SWITCH); }
+#line 4724 "strict_cpp_re.inc"
+yy624:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 't') goto yy630;
+    goto yy195;
+yy625:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 48;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy629:
+#line 93 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRUCT); }
+#line 4750 "strict_cpp_re.inc"
+yy630:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 49;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy633;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy634;
+            if(yych <= '`') goto yy633;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy633:
+#line 91 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATIC); }
+#line 4780 "strict_cpp_re.inc"
+yy634:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 50;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy639:
+#line 92 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATICCAST); }
+#line 4804 "strict_cpp_re.inc"
+yy640:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy646;
+    goto yy195;
+yy641:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'f') goto yy195;
+    yyaccept = 51;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy645:
+#line 90 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIZEOF); }
+#line 4830 "strict_cpp_re.inc"
+yy646:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 52;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy649:
+#line 89 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIGNED); }
+#line 4848 "strict_cpp_re.inc"
+yy650:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 53;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy653:
+#line 88 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHORT); }
+#line 4866 "strict_cpp_re.inc"
+yy654:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'h') {
+        if(yych != 'g') goto yy195;
+    } else {
+        if(yych <= 'i') goto yy656;
+        if(yych == 't') goto yy657;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy676;
+    goto yy195;
+yy656:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy662;
+    goto yy195;
+yy657:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 54;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy661:
+#line 87 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RETURN); }
+#line 4906 "strict_cpp_re.inc"
+yy662:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 55;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy675:
+#line 86 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
+#line 4954 "strict_cpp_re.inc"
+yy676:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 56;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy681:
+#line 85 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REGISTER); }
+#line 4978 "strict_cpp_re.inc"
+yy682:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy689;
+    if(yych == 'o') goto yy690;
+    goto yy195;
+yy683:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 57;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy688:
+#line 84 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PUBLIC); }
+#line 5008 "strict_cpp_re.inc"
+yy689:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'v') goto yy698;
+    goto yy195;
+yy690:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 58;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy697:
+#line 83 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PROTECTED); }
+#line 5043 "strict_cpp_re.inc"
+yy698:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 59;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy702:
+#line 82 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PRIVATE); }
+#line 5064 "strict_cpp_re.inc"
+yy703:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy710;
+    goto yy195;
+yy704:
+    yyaccept = 60;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy705;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy706;
+            if(yych <= '`') goto yy705;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy705:
+#line 223 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
+#line 5093 "strict_cpp_re.inc"
+yy706:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'q') goto yy195;
+    yyaccept = 61;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy709:
+#line 207 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
+#line 5111 "strict_cpp_re.inc"
+yy710:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 62;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy716:
+#line 81 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OPERATOR); }
+#line 5138 "strict_cpp_re.inc"
+yy717:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'm') goto yy728;
+    goto yy195;
+yy718:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'w') goto yy726;
+    goto yy195;
+yy719:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 63;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy721;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy722;
+            if(yych <= '`') goto yy721;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy721:
+#line 192 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
+#line 5175 "strict_cpp_re.inc"
+yy722:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'q') goto yy195;
+    yyaccept = 64;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy725:
+#line 215 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
+#line 5193 "strict_cpp_re.inc"
+yy726:
+    yyaccept = 65;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy727:
+#line 80 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NEW); }
+#line 5205 "strict_cpp_re.inc"
+yy728:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 66;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy735:
+#line 79 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NAMESPACE); }
+#line 5235 "strict_cpp_re.inc"
+yy736:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 67;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy742:
+#line 78 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MUTABLE); }
+#line 5262 "strict_cpp_re.inc"
+yy743:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'g') goto yy195;
+    yyaccept = 68;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy746:
+#line 77 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONG); }
+#line 5280 "strict_cpp_re.inc"
+yy747:
+    yyaccept = 69;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy748:
+#line 73 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IF); }
+#line 5292 "strict_cpp_re.inc"
+yy749:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'p') goto yy758;
+    goto yy195;
+yy750:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'l') goto yy751;
+    if(yych == 't') goto yy752;
+    goto yy195;
+yy751:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy754;
+    goto yy195;
+yy752:
+    yyaccept = 70;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy753:
+#line 76 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INT); }
+#line 5320 "strict_cpp_re.inc"
+yy754:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 71;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy757:
+#line 75 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INLINE); }
+#line 5338 "strict_cpp_re.inc"
+yy758:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 72;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy762:
+#line 74 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
+#line 5359 "strict_cpp_re.inc"
+yy763:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 73;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy766:
+#line 72 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GOTO); }
+#line 5377 "strict_cpp_re.inc"
+yy767:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'l') goto yy782;
+    goto yy195;
+yy768:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy778;
+    goto yy195;
+yy769:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'r') goto yy776;
+    goto yy195;
+yy770:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 74;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy775:
+#line 71 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FRIEND); }
+#line 5416 "strict_cpp_re.inc"
+yy776:
+    yyaccept = 75;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy777:
+#line 70 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FOR); }
+#line 5428 "strict_cpp_re.inc"
+yy778:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 76;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy781:
+#line 69 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOAT); }
+#line 5446 "strict_cpp_re.inc"
+yy782:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 77;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy785:
+#line 68 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FALSE); }
+#line 5464 "strict_cpp_re.inc"
+yy786:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 's') goto yy808;
+    goto yy195;
+yy787:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'u') goto yy805;
+    goto yy195;
+yy788:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'p') goto yy789;
+    if(yych == 't') goto yy790;
+    goto yy195;
+yy789:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'l') goto yy795;
+    if(yych == 'o') goto yy796;
+    goto yy195;
+yy790:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 78;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy794:
+#line 67 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXTERN); }
+#line 5507 "strict_cpp_re.inc"
+yy795:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'i') goto yy800;
+    goto yy195;
+yy796:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 79;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy799:
+#line 66 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPORT); }
+#line 5530 "strict_cpp_re.inc"
+yy800:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 80;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy804:
+#line 65 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPLICIT); }
+#line 5551 "strict_cpp_re.inc"
+yy805:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'm') goto yy195;
+    yyaccept = 81;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy807:
+#line 64 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ENUM); }
+#line 5566 "strict_cpp_re.inc"
+yy808:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 82;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy810:
+#line 63 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELSE); }
+#line 5581 "strict_cpp_re.inc"
+yy811:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'f') goto yy831;
+    if(yych == 'l') goto yy832;
+    goto yy195;
+yy812:
+    yyaccept = 83;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= '[') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy813;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych <= '@') goto yy813;
+            if(yych <= 'Z') goto yy194;
+        }
+    } else {
+        if(yych <= '`') {
+            if(yych <= '\\') goto yy196;
+            if(yych == '_') goto yy194;
+        } else {
+            if(yych == 'u') goto yy826;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy813:
+#line 60 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DO); }
+#line 5612 "strict_cpp_re.inc"
+yy814:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 84;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy825:
+#line 62 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DYNAMICCAST); }
+#line 5654 "strict_cpp_re.inc"
+yy826:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 85;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy830:
+#line 61 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOUBLE); }
+#line 5675 "strict_cpp_re.inc"
+yy831:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy837;
+    goto yy195;
+yy832:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 86;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy836:
+#line 59 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DELETE); }
+#line 5701 "strict_cpp_re.inc"
+yy837:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 87;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy841:
+#line 58 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DEFAULT); }
+#line 5722 "strict_cpp_re.inc"
+yy842:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'r') goto yy195;
+    if(yych <= 's') goto yy873;
+    if(yych <= 't') goto yy874;
+    goto yy195;
+yy843:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy870;
+    goto yy195;
+yy844:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy866;
+    goto yy195;
+yy845:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'l') goto yy195;
+    if(yych <= 'm') goto yy847;
+    if(yych >= 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'r') goto yy195;
+    if(yych <= 's') goto yy851;
+    if(yych <= 't') goto yy852;
+    goto yy195;
+yy847:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 88;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy850:
+#line 190 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
+#line 5769 "strict_cpp_re.inc"
+yy851:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 't') goto yy858;
+    goto yy195;
+yy852:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 89;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy857:
+#line 57 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONTINUE); }
+#line 5798 "strict_cpp_re.inc"
+yy858:
+    yyaccept = 90;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy859;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy860;
+            if(yych <= '`') goto yy859;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy859:
+#line 55 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONST); }
+#line 5822 "strict_cpp_re.inc"
+yy860:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 91;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy865:
+#line 56 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 5846 "strict_cpp_re.inc"
+yy866:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 's') goto yy195;
+    yyaccept = 92;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy869:
+#line 54 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CLASS); }
+#line 5864 "strict_cpp_re.inc"
+yy870:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 93;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy872:
+#line 53 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHAR); }
+#line 5879 "strict_cpp_re.inc"
+yy873:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'e') goto yy878;
+    goto yy195;
+yy874:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'h') goto yy195;
+    yyaccept = 94;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy877:
+#line 52 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CATCH); }
+#line 5902 "strict_cpp_re.inc"
+yy878:
+    yyaccept = 95;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy879:
+#line 51 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CASE); }
+#line 5914 "strict_cpp_re.inc"
+yy880:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 't') goto yy890;
+    goto yy195;
+yy881:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'o') goto yy887;
+    goto yy195;
+yy882:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'k') goto yy195;
+    yyaccept = 96;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy886:
+#line 50 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BREAK); }
+#line 5945 "strict_cpp_re.inc"
+yy887:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'l') goto yy195;
+    yyaccept = 97;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy889:
+#line 49 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BOOL); }
+#line 5960 "strict_cpp_re.inc"
+yy890:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'a') goto yy891;
+    if(yych == 'o') goto yy892;
+    goto yy195;
+yy891:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'n') goto yy895;
+    goto yy195;
+yy892:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'r') goto yy195;
+    yyaccept = 98;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy894:
+#line 186 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
+#line 5986 "strict_cpp_re.inc"
+yy895:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'd') goto yy195;
+    yyaccept = 99;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy897:
+#line 184 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
+#line 6001 "strict_cpp_re.inc"
+yy898:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'd') goto yy906;
+    goto yy195;
+yy899:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych == 'm') goto yy904;
+    goto yy195;
+yy900:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'o') goto yy195;
+    yyaccept = 100;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy903:
+#line 48 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AUTO); }
+#line 6029 "strict_cpp_re.inc"
+yy904:
+    yyaccept = 101;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy905:
+#line 47 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASM); }
+#line 6041 "strict_cpp_re.inc"
+yy906:
+    yyaccept = 102;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych <= 'Z') {
+        if(yych <= '>') {
+            if(yych <= '/') goto yy907;
+            if(yych <= '9') goto yy194;
+        } else {
+            if(yych <= '?') goto yy197;
+            if(yych >= 'A') goto yy194;
+        }
+    } else {
+        if(yych <= '^') {
+            if(yych == '\\') goto yy196;
+        } else {
+            if(yych <= '_') goto yy908;
+            if(yych <= '`') goto yy907;
+            if(yych <= 'z') goto yy194;
+        }
+    }
+yy907:
+#line 219 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
+#line 6065 "strict_cpp_re.inc"
+yy908:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yych != 'q') goto yy195;
+    yyaccept = 103;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if(yych == '?') goto yy197;
+    if(yych == '\\') goto yy196;
+yy911:
+#line 205 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
+#line 6083 "strict_cpp_re.inc"
+yy912:
+    ++YYCURSOR;
+#line 166 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_DOT);
+            }
+            else {
+                BOOST_WAVE_RET(T_DOTSTAR); 
+            }
+        }
+#line 6096 "strict_cpp_re.inc"
+yy914:
+    yych = *++YYCURSOR;
+    if(yych == '.') goto yy916;
+    goto yy98;
+yy915:
+    yych = *++YYCURSOR;
+    goto yy7;
+yy916:
+    ++YYCURSOR;
+#line 152 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELLIPSIS); }
+#line 6108 "strict_cpp_re.inc"
+yy918:
+    ++YYCURSOR;
+#line 199 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
+#line 6113 "strict_cpp_re.inc"
+yy920:
+    ++YYCURSOR;
+#line 44 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6118 "strict_cpp_re.inc"
+yy922:
+    ++YYCURSOR;
+#line 43 "strict_cpp.re"
+    { goto ccomment; }
+#line 6123 "strict_cpp_re.inc"
+}
+#line 308 "strict_cpp.re"
+
+
+ccomment:
+
+#line 6130 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if(yych <= 0x0C) {
+        if(yych <= 0x08) {
+            if(yych <= 0x00) goto yy933;
+            goto yy935;
+        } else {
+            if(yych == 0x0A) goto yy928;
+            goto yy931;
+        }
+    } else {
+        if(yych <= 0x1F) {
+            if(yych <= 0x0D) goto yy930;
+            goto yy935;
+        } else {
+            if(yych != '*') goto yy932;
+        }
+    }
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == '/') goto yy938;
+yy927:
+#line 323 "strict_cpp.re"
+    { goto ccomment; }
+#line 6156 "strict_cpp_re.inc"
+yy928:
+    ++YYCURSOR;
+yy929:
+#line 315 "strict_cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
+        /*s->tok = cursor; */
+        s->line += count_backslash_newlines(s, cursor) +1;
+        cursor.column = 1;
+        goto ccomment;
+    }
+#line 6168 "strict_cpp_re.inc"
+yy930:
+    yych = *++YYCURSOR;
+    if(yych == 0x0A) goto yy937;
+    goto yy929;
+yy931:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy932:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy933:
+    ++YYCURSOR;
+#line 326 "strict_cpp.re"
+    {
+        if(cursor == s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "unterminated 'C' style comment");
+        }
+        else
+        {
+            --YYCURSOR;                   // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character: '\\000' in input stream");
+        }
+    }
+#line 6197 "strict_cpp_re.inc"
+yy935:
+    ++YYCURSOR;
+#line 343 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6207 "strict_cpp_re.inc"
+yy937:
+    yych = *++YYCURSOR;
+    goto yy929;
+yy938:
+    ++YYCURSOR;
+#line 312 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CCOMMENT); }
+#line 6215 "strict_cpp_re.inc"
+}
+#line 349 "strict_cpp.re"
+
+
+cppcomment:
+
+#line 6222 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if(yych <= 0x0A) {
+        if(yych <= 0x00) goto yy948;
+        if(yych <= 0x08) goto yy950;
+        if(yych <= 0x09) goto yy945;
+    } else {
+        if(yych <= 0x0C) goto yy945;
+        if(yych <= 0x0D) goto yy944;
+        if(yych <= 0x1F) goto yy950;
+        goto yy947;
+    }
+    ++YYCURSOR;
+yy943:
+#line 354 "strict_cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
+        /*s->tok = cursor; */
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6247 "strict_cpp_re.inc"
+yy944:
+    yych = *++YYCURSOR;
+    if(yych == 0x0A) goto yy952;
+    goto yy943;
+yy945:
+    ++YYCURSOR;
+yy946:
+#line 362 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6257 "strict_cpp_re.inc"
+yy947:
+    yych = *++YYCURSOR;
+    goto yy946;
+yy948:
+    ++YYCURSOR;
+#line 365 "strict_cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            --YYCURSOR;                     // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        
+        --YYCURSOR;                         // next call returns T_EOF
+        if (!s->single_line_only)
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "Unterminated 'C++' style comment");
+        }
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6282 "strict_cpp_re.inc"
+yy950:
+    ++YYCURSOR;
+#line 385 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6292 "strict_cpp_re.inc"
+yy952:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy943;
+}
+#line 391 "strict_cpp.re"
+
+
+/* this subscanner is called whenever a pp_number has been started */
+pp_number:
+{
+    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
+    marker = uchar_wrapper(s->ptr);
+    limit = uchar_wrapper(s->lim);
+
+    if (s->detect_pp_numbers) {
+    
+#line 6310 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,  64,   0, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,   0,   0,   0,   0,   0,   0, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,  64, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if(yych == '.') goto yy956;
+    if(yych <= '/') goto yy955;
+    if(yych <= '9') goto yy957;
+yy955:
+    YYCURSOR = YYMARKER;
+    goto yy959;
+yy956:
+    yych = *++YYCURSOR;
+    if(yych <= '/') goto yy955;
+    if(yych >= ':') goto yy955;
+yy957:
+    YYMARKER = ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 64) {
+        goto yy957;
+    }
+    if(yych <= 'Z') {
+        if(yych == '?') goto yy963;
+        if(yych >= 'A') goto yy960;
+    } else {
+        if(yych <= '\\') {
+            if(yych >= '\\') goto yy962;
+        } else {
+            if(yych == 'e') goto yy960;
+        }
+    }
+yy959:
+#line 403 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_NUMBER); }
+#line 6379 "strict_cpp_re.inc"
+yy960:
+    YYMARKER = ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 128) {
+        goto yy960;
+    }
+    if(yych <= '?') {
+        if(yych <= '.') {
+            if(yych == '+') goto yy957;
+            if(yych <= ',') goto yy959;
+            goto yy957;
+        } else {
+            if(yych <= '/') goto yy959;
+            if(yych <= '9') goto yy957;
+            if(yych <= '>') goto yy959;
+            goto yy963;
+        }
+    } else {
+        if(yych <= '\\') {
+            if(yych <= '@') goto yy959;
+            if(yych <= 'Z') goto yy957;
+            if(yych <= '[') goto yy959;
+        } else {
+            if(yych <= '_') {
+                if(yych <= '^') goto yy959;
+                goto yy957;
+            } else {
+                if(yych <= '`') goto yy959;
+                if(yych <= 'z') goto yy957;
+                goto yy959;
+            }
+        }
+    }
+yy962:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == 'U') goto yy966;
+    if(yych == 'u') goto yy965;
+    goto yy955;
+yy963:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych != '?') goto yy955;
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych == '/') goto yy962;
+    goto yy955;
+yy965:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych <= '9') goto yy974;
+        goto yy955;
+    } else {
+        if(yych <= 'F') goto yy974;
+        if(yych <= '`') goto yy955;
+        if(yych <= 'f') goto yy974;
+        goto yy955;
+    }
+yy966:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy967;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy967:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy968;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy968:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy969;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy969:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy970;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy970:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy971;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy971:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy972;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy972:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy973;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy973:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if(yych <= 'F') goto yy957;
+        if(yych <= '`') goto yy955;
+        if(yych <= 'f') goto yy957;
+        goto yy955;
+    }
+yy974:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy975;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy975:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych >= ':') goto yy955;
+    } else {
+        if(yych <= 'F') goto yy976;
+        if(yych <= '`') goto yy955;
+        if(yych >= 'g') goto yy955;
+    }
+yy976:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yych <= '@') {
+        if(yych <= '/') goto yy955;
+        if(yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if(yych <= 'F') goto yy957;
+        if(yych <= '`') goto yy955;
+        if(yych <= 'f') goto yy957;
+        goto yy955;
+    }
+}
+#line 404 "strict_cpp.re"
+
+    }
+    else {
+    
+#line 6587 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+        224, 224, 224, 224, 224, 224, 224, 224, 
+        160, 160,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+    yych = *YYCURSOR;
+    if(yych <= '/') {
+        if(yych == '.') goto yy984;
+    } else {
+        if(yych <= '0') goto yy980;
+        if(yych <= '9') goto yy982;
+    }
+yy979:
+    YYCURSOR = YYMARKER;
+    if(yyaccept <= 0) {
+        goto yy981;
+    } else {
+        goto yy987;
+    }
+yy980:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if(yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if(yych <= 'E') {
+        if(yych <= '/') {
+            if(yych == '.') goto yy985;
+        } else {
+            if(yych <= '9') goto yy1002;
+            if(yych >= 'E') goto yy995;
+        }
+    } else {
+        if(yych <= 'd') {
+            if(yych == 'X') goto yy1001;
+        } else {
+            if(yych <= 'e') goto yy995;
+            if(yych == 'x') goto yy1001;
+        }
+    }
+yy981:
+#line 411 "strict_cpp.re"
+    { goto integer_suffix; }
+#line 6664 "strict_cpp_re.inc"
+yy982:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 32) {
+        goto yy982;
+    }
+    if(yych <= 'D') {
+        if(yych == '.') goto yy985;
+        goto yy981;
+    } else {
+        if(yych <= 'E') goto yy995;
+        if(yych == 'e') goto yy995;
+        goto yy981;
+    }
+yy984:
+    yych = *++YYCURSOR;
+    if(yych <= '/') goto yy979;
+    if(yych >= ':') goto yy979;
+yy985:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if(yych <= 'K') {
+        if(yych <= 'D') {
+            if(yych <= '/') goto yy987;
+            if(yych <= '9') goto yy985;
+        } else {
+            if(yych <= 'E') goto yy988;
+            if(yych <= 'F') goto yy989;
+        }
+    } else {
+        if(yych <= 'e') {
+            if(yych <= 'L') goto yy990;
+            if(yych >= 'e') goto yy988;
+        } else {
+            if(yych <= 'f') goto yy989;
+            if(yych == 'l') goto yy990;
+        }
+    }
+yy987:
+#line 409 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOATLIT); }
+#line 6710 "strict_cpp_re.inc"
+yy988:
+    yych = *++YYCURSOR;
+    if(yych <= ',') {
+        if(yych == '+') goto yy992;
+        goto yy979;
+    } else {
+        if(yych <= '-') goto yy992;
+        if(yych <= '/') goto yy979;
+        if(yych <= '9') goto yy993;
+        goto yy979;
+    }
+yy989:
+    yych = *++YYCURSOR;
+    if(yych == 'L') goto yy991;
+    if(yych == 'l') goto yy991;
+    goto yy987;
+yy990:
+    yych = *++YYCURSOR;
+    if(yych == 'F') goto yy991;
+    if(yych != 'f') goto yy987;
+yy991:
+    yych = *++YYCURSOR;
+    goto yy987;
+yy992:
+    yych = *++YYCURSOR;
+    if(yych <= '/') goto yy979;
+    if(yych >= ':') goto yy979;
+yy993:
+    ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if(yych <= 'K') {
+        if(yych <= '9') {
+            if(yych <= '/') goto yy987;
+            goto yy993;
+        } else {
+            if(yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if(yych <= 'f') {
+            if(yych <= 'L') goto yy990;
+            if(yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if(yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy995:
+    yych = *++YYCURSOR;
+    if(yych <= ',') {
+        if(yych != '+') goto yy979;
+    } else {
+        if(yych <= '-') goto yy996;
+        if(yych <= '/') goto yy979;
+        if(yych <= '9') goto yy997;
+        goto yy979;
+    }
+yy996:
+    yych = *++YYCURSOR;
+    if(yych <= '/') goto yy979;
+    if(yych >= ':') goto yy979;
+yy997:
+    ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if(yych <= 'K') {
+        if(yych <= '9') {
+            if(yych <= '/') goto yy987;
+            goto yy997;
+        } else {
+            if(yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if(yych <= 'f') {
+            if(yych <= 'L') goto yy990;
+            if(yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if(yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy999:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if(yych <= '9') {
+        if(yych == '.') goto yy985;
+        if(yych <= '/') goto yy981;
+        goto yy1002;
+    } else {
+        if(yych <= 'E') {
+            if(yych <= 'D') goto yy981;
+            goto yy995;
+        } else {
+            if(yych == 'e') goto yy995;
+            goto yy981;
+        }
+    }
+yy1001:
+    yych = *++YYCURSOR;
+    if(yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy979;
+yy1002:
+    ++YYCURSOR;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if(yych <= '9') {
+        if(yych == '.') goto yy985;
+        if(yych <= '/') goto yy979;
+        goto yy1002;
+    } else {
+        if(yych <= 'E') {
+            if(yych <= 'D') goto yy979;
+            goto yy995;
+        } else {
+            if(yych == 'e') goto yy995;
+            goto yy979;
+        }
+    }
+yy1004:
+    ++YYCURSOR;
+    if(YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if(yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy981;
+}
+#line 412 "strict_cpp.re"
+
+    }
+}
+
+/* this subscanner is called, whenever a Integer was recognized */
+integer_suffix:
+{
+    if (s->enable_ms_extensions) {
+    
+#line 6859 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *(YYMARKER = YYCURSOR);
+    if(yych <= 'h') {
+        if(yych <= 'L') {
+            if(yych >= 'L') goto yy1010;
+        } else {
+            if(yych == 'U') goto yy1009;
+        }
+    } else {
+        if(yych <= 'l') {
+            if(yych <= 'i') goto yy1011;
+            if(yych >= 'l') goto yy1010;
+        } else {
+            if(yych == 'u') goto yy1009;
+        }
+    }
+yy1008:
+#line 425 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6881 "strict_cpp_re.inc"
+yy1009:
+    yych = *++YYCURSOR;
+    if(yych == 'L') goto yy1018;
+    if(yych == 'l') goto yy1018;
+    goto yy1008;
+yy1010:
+    yych = *++YYCURSOR;
+    if(yych <= 'U') {
+        if(yych == 'L') goto yy1017;
+        if(yych <= 'T') goto yy1008;
+        goto yy1016;
+    } else {
+        if(yych <= 'l') {
+            if(yych <= 'k') goto yy1008;
+            goto yy1017;
+        } else {
+            if(yych == 'u') goto yy1016;
+            goto yy1008;
+        }
+    }
+yy1011:
+    yych = *++YYCURSOR;
+    if(yych == '6') goto yy1013;
+yy1012:
+    YYCURSOR = YYMARKER;
+    goto yy1008;
+yy1013:
+    yych = *++YYCURSOR;
+    if(yych != '4') goto yy1012;
+yy1014:
+    ++YYCURSOR;
+yy1015:
+#line 422 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6916 "strict_cpp_re.inc"
+yy1016:
+    yych = *++YYCURSOR;
+    goto yy1008;
+yy1017:
+    yych = *++YYCURSOR;
+    if(yych == 'U') goto yy1014;
+    if(yych == 'u') goto yy1014;
+    goto yy1015;
+yy1018:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == 'L') goto yy1014;
+    if(yych == 'l') goto yy1014;
+    goto yy1008;
+}
+#line 426 "strict_cpp.re"
+
+    }
+    else {
+    
+#line 6936 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if(yych <= 'U') {
+        if(yych == 'L') goto yy1023;
+        if(yych >= 'U') goto yy1022;
+    } else {
+        if(yych <= 'l') {
+            if(yych >= 'l') goto yy1023;
+        } else {
+            if(yych == 'u') goto yy1022;
+        }
+    }
+yy1021:
+#line 434 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6954 "strict_cpp_re.inc"
+yy1022:
+    yych = *++YYCURSOR;
+    if(yych == 'L') goto yy1028;
+    if(yych == 'l') goto yy1028;
+    goto yy1021;
+yy1023:
+    yych = *++YYCURSOR;
+    if(yych <= 'U') {
+        if(yych == 'L') goto yy1025;
+        if(yych <= 'T') goto yy1021;
+    } else {
+        if(yych <= 'l') {
+            if(yych <= 'k') goto yy1021;
+            goto yy1025;
+        } else {
+            if(yych != 'u') goto yy1021;
+        }
+    }
+    yych = *++YYCURSOR;
+    goto yy1021;
+yy1025:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == 'U') goto yy1027;
+    if(yych == 'u') goto yy1027;
+yy1026:
+#line 431 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6982 "strict_cpp_re.inc"
+yy1027:
+    yych = *++YYCURSOR;
+    goto yy1026;
+yy1028:
+    ++YYCURSOR;
+    if((yych = *YYCURSOR) == 'L') goto yy1027;
+    if(yych == 'l') goto yy1027;
+    goto yy1021;
+}
+#line 435 "strict_cpp.re"
+
+    }
+}
+=======
+/* Generated by re2c 0.13.2 on Fri Apr 04 14:19:15 2008 */
+#line 1 "strict_cpp.re"
+/*=============================================================================
+    Boost.Wave: A Standard compliant C++ preprocessor library
+
+    Copyright (c) 2001 Daniel C. Nuffer
+    Copyright (c) 2001-2008 Hartmut Kaiser. 
+    Distributed under the Boost Software License, Version 1.0. (See accompanying 
+    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+    This is a strict lexer conforming to the Standard as close as possible.
+    It does not allow the '$' to be part of identifiers. If you need the '$'
+    character in identifiers please include the lexer definition provided
+    in the cpp.re file.
+    
+    TODO: 
+        handle errors better.
+=============================================================================*/
+
+#line 40 "strict_cpp.re"
+
+
+
+#line 25 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+        /* table 1 .. 8: 0 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  58,  32,  58,  58,  64,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         58,  58,  50,  58,  58,  58,  58,  56, 
+         58,  58, 154,  58,  58,  58,  58,  58, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  58,  58,  58,  58,  42,  56, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  57,  58,  58,  62, 
+         58,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  62,  62,  62,  62,  62, 
+         62,  62,  62,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+         58,  58,  58,  58,  58,  58,  58,  58, 
+        /* table 9 .. 12: 256 */
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,  48,   0,  48,  48,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+         48,  32,   0,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         96,  96,  96,  96,  96,  96,  96,  96, 
+         96,  96,  32,  32,  32,  32,  32, 128, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,   0,  32,  32,  32, 
+         32,  96,  96,  96,  96,  96,  96,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+         32,  32,  32,  32,  32,  32,  32,  32, 
+    };
+
+    if ((YYLIMIT - YYCURSOR) < 17) YYFILL(17);
+    yych = *YYCURSOR;
+    switch (yych) {
+    case 0x00:    goto yy88;
+    case 0x01:
+    case 0x02:
+    case 0x03:
+    case 0x04:
+    case 0x05:
+    case 0x06:
+    case 0x07:
+    case 0x08:
+    case 0x0E:
+    case 0x0F:
+    case 0x10:
+    case 0x11:
+    case 0x12:
+    case 0x13:
+    case 0x14:
+    case 0x15:
+    case 0x16:
+    case 0x17:
+    case 0x18:
+    case 0x19:
+    case 0x1A:
+    case 0x1B:
+    case 0x1C:
+    case 0x1D:
+    case 0x1E:
+    case 0x1F:    goto yy91;
+    case 0x09:
+    case 0x0B:
+    case 0x0C:    goto yy82;
+    case 0x0A:    goto yy85;
+    case 0x0D:    goto yy87;
+    case ' ':    goto yy84;
+    case '!':    goto yy68;
+    case '"':    goto yy81;
+    case '#':    goto yy45;
+    case '%':    goto yy37;
+    case '&':    goto yy62;
+    case '\'':    goto yy80;
+    case '(':    goto yy47;
+    case ')':    goto yy49;
+    case '*':    goto yy57;
+    case '+':    goto yy53;
+    case ',':    goto yy74;
+    case '-':    goto yy55;
+    case '.':    goto yy4;
+    case '/':    goto yy2;
+    case '0':
+    case '1':
+    case '2':
+    case '3':
+    case '4':
+    case '5':
+    case '6':
+    case '7':
+    case '8':
+    case '9':    goto yy6;
+    case ':':    goto yy43;
+    case ';':    goto yy51;
+    case '<':    goto yy33;
+    case '=':    goto yy70;
+    case '>':    goto yy72;
+    case '?':    goto yy31;
+    case 'A':
+    case 'B':
+    case 'C':
+    case 'D':
+    case 'E':
+    case 'F':
+    case 'G':
+    case 'H':
+    case 'I':
+    case 'J':
+    case 'K':
+    case 'M':
+    case 'N':
+    case 'O':
+    case 'P':
+    case 'Q':
+    case 'R':
+    case 'S':
+    case 'T':
+    case 'U':
+    case 'V':
+    case 'W':
+    case 'X':
+    case 'Y':
+    case 'Z':
+    case 'h':
+    case 'j':
+    case 'k':
+    case 'q':
+    case 'y':
+    case 'z':    goto yy76;
+    case 'L':    goto yy77;
+    case '[':    goto yy39;
+    case '\\':    goto yy78;
+    case ']':    goto yy41;
+    case '^':    goto yy59;
+    case '_':    goto yy28;
+    case 'a':    goto yy8;
+    case 'b':    goto yy10;
+    case 'c':    goto yy11;
+    case 'd':    goto yy12;
+    case 'e':    goto yy13;
+    case 'f':    goto yy14;
+    case 'g':    goto yy15;
+    case 'i':    goto yy16;
+    case 'l':    goto yy17;
+    case 'm':    goto yy18;
+    case 'n':    goto yy19;
+    case 'o':    goto yy20;
+    case 'p':    goto yy21;
+    case 'r':    goto yy22;
+    case 's':    goto yy23;
+    case 't':    goto yy24;
+    case 'u':    goto yy25;
+    case 'v':    goto yy26;
+    case 'w':    goto yy27;
+    case 'x':    goto yy61;
+    case '{':    goto yy29;
+    case '|':    goto yy64;
+    case '}':    goto yy35;
+    case '~':    goto yy66;
+    default:    goto yy90;
+    }
+yy2:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '.') {
+        if (yych == '*') goto yy922;
+    } else {
+        if (yych <= '/') goto yy920;
+        if (yych == '=') goto yy918;
+    }
+#line 178 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDE); }
+#line 237 "strict_cpp_re.inc"
+yy4:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '-') {
+        if (yych == '*') goto yy912;
+    } else {
+        if (yych <= '.') goto yy914;
+        if (yych <= '/') goto yy5;
+        if (yych <= '9') goto yy915;
+    }
+yy5:
+#line 164 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOT); }
+#line 251 "strict_cpp_re.inc"
+yy6:
+    ++YYCURSOR;
+yy7:
+#line 45 "strict_cpp.re"
+    { goto pp_number; }
+#line 257 "strict_cpp_re.inc"
+yy8:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') {
+        if (yych == 'n') goto yy898;
+        goto yy195;
+    } else {
+        if (yych <= 's') goto yy899;
+        if (yych == 'u') goto yy900;
+        goto yy195;
+    }
+yy9:
+#line 243 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IDENTIFIER); }
+#line 272 "strict_cpp_re.inc"
+yy10:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'i') goto yy880;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy881;
+        if (yych == 'r') goto yy882;
+        goto yy195;
+    }
+yy11:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy842;
+    case 'h':    goto yy843;
+    case 'l':    goto yy844;
+    case 'o':    goto yy845;
+    default:    goto yy195;
+    }
+yy12:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'n') {
+        if (yych == 'e') goto yy811;
+        goto yy195;
+    } else {
+        if (yych <= 'o') goto yy812;
+        if (yych == 'y') goto yy814;
+        goto yy195;
+    }
+yy13:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy786;
+        goto yy195;
+    } else {
+        if (yych <= 'n') goto yy787;
+        if (yych == 'x') goto yy788;
+        goto yy195;
+    }
+yy14:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy767;
+    case 'l':    goto yy768;
+    case 'o':    goto yy769;
+    case 'r':    goto yy770;
+    default:    goto yy195;
+    }
+yy15:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy763;
+    goto yy195;
+yy16:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') {
+        if (yych == 'f') goto yy747;
+        goto yy195;
+    } else {
+        if (yych <= 'm') goto yy749;
+        if (yych <= 'n') goto yy750;
+        goto yy195;
+    }
+yy17:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy743;
+    goto yy195;
+yy18:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy736;
+    goto yy195;
+yy19:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'd') {
+        if (yych == 'a') goto yy717;
+        goto yy195;
+    } else {
+        if (yych <= 'e') goto yy718;
+        if (yych == 'o') goto yy719;
+        goto yy195;
+    }
+yy20:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy703;
+    if (yych == 'r') goto yy704;
+    goto yy195;
+yy21:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy682;
+    if (yych == 'u') goto yy683;
+    goto yy195;
+yy22:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy654;
+    goto yy195;
+yy23:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 's') {
+        if (yych <= 'g') goto yy195;
+        if (yych <= 'h') goto yy615;
+        if (yych <= 'i') goto yy616;
+        goto yy195;
+    } else {
+        if (yych <= 't') goto yy617;
+        if (yych == 'w') goto yy618;
+        goto yy195;
+    }
+yy24:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych == 'e') goto yy578;
+        if (yych <= 'g') goto yy195;
+        goto yy579;
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'q') goto yy195;
+            goto yy580;
+        } else {
+            if (yych == 'y') goto yy581;
+            goto yy195;
+        }
+    }
+yy25:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy561;
+    if (yych == 's') goto yy562;
+    goto yy195;
+yy26:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy543;
+    if (yych == 'o') goto yy544;
+    goto yy195;
+yy27:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'c') goto yy531;
+    if (yych == 'h') goto yy532;
+    goto yy195;
+yy28:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '_':    goto yy442;
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'f':    goto yy447;
+    case 'i':    goto yy448;
+    case 's':    goto yy449;
+    default:    goto yy195;
+    }
+yy29:
+    ++YYCURSOR;
+#line 128 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE); }
+#line 445 "strict_cpp_re.inc"
+yy31:
+    yyaccept = 2;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '?') goto yy407;
+yy32:
+#line 153 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_QUESTION_MARK); }
+#line 453 "strict_cpp_re.inc"
+yy33:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= ':') {
+        if (yych == '%') goto yy403;
+        if (yych >= ':') goto yy401;
+    } else {
+        if (yych <= ';') goto yy34;
+        if (yych <= '<') goto yy399;
+        if (yych <= '=') goto yy397;
+    }
+yy34:
+#line 194 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESS); }
+#line 467 "strict_cpp_re.inc"
+yy35:
+    ++YYCURSOR;
+#line 131 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE); }
+#line 472 "strict_cpp_re.inc"
+yy37:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == ':') goto yy388;
+    } else {
+        if (yych <= '=') goto yy390;
+        if (yych <= '>') goto yy392;
+    }
+#line 179 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENT); }
+#line 483 "strict_cpp_re.inc"
+yy39:
+    ++YYCURSOR;
+#line 134 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET); }
+#line 488 "strict_cpp_re.inc"
+yy41:
+    ++YYCURSOR;
+#line 137 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET); }
+#line 493 "strict_cpp_re.inc"
+yy43:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == ':') goto yy384;
+    if (yych == '>') goto yy386;
+#line 151 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COLON); }
+#line 500 "strict_cpp_re.inc"
+yy45:
+    yyaccept = 3;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy272;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy271;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy46;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy46:
+#line 140 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND); }
+#line 541 "strict_cpp_re.inc"
+yy47:
+    ++YYCURSOR;
+#line 148 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTPAREN); }
+#line 546 "strict_cpp_re.inc"
+yy49:
+    ++YYCURSOR;
+#line 149 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTPAREN); }
+#line 551 "strict_cpp_re.inc"
+yy51:
+    ++YYCURSOR;
+#line 150 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SEMICOLON); }
+#line 556 "strict_cpp_re.inc"
+yy53:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '+') goto yy256;
+    if (yych == '=') goto yy258;
+#line 175 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUS); }
+#line 563 "strict_cpp_re.inc"
+yy55:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') {
+        if (yych == '-') goto yy250;
+    } else {
+        if (yych <= '=') goto yy252;
+        if (yych <= '>') goto yy248;
+    }
+#line 176 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUS); }
+#line 574 "strict_cpp_re.inc"
+yy57:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy246;
+#line 177 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STAR); }
+#line 580 "strict_cpp_re.inc"
+yy59:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy244;
+#line 180 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR); }
+#line 586 "strict_cpp_re.inc"
+yy61:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy237;
+    goto yy195;
+yy62:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '&') goto yy233;
+    if (yych == '=') goto yy235;
+#line 183 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AND); }
+#line 598 "strict_cpp_re.inc"
+yy64:
+    yyaccept = 4;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy228;
+    } else {
+        if (yych <= '?') goto yy225;
+        if (yych == '|') goto yy226;
+    }
+yy65:
+#line 185 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR); }
+#line 611 "strict_cpp_re.inc"
+yy66:
+    ++YYCURSOR;
+#line 188 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL); }
+#line 616 "strict_cpp_re.inc"
+yy68:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy223;
+#line 191 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOT); }
+#line 622 "strict_cpp_re.inc"
+yy70:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy221;
+#line 193 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASSIGN); }
+#line 628 "strict_cpp_re.inc"
+yy72:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) <= '<') goto yy73;
+    if (yych <= '=') goto yy215;
+    if (yych <= '>') goto yy217;
+yy73:
+#line 195 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATER); }
+#line 637 "strict_cpp_re.inc"
+yy74:
+    ++YYCURSOR;
+#line 227 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMMA); }
+#line 642 "strict_cpp_re.inc"
+yy76:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    goto yy195;
+yy77:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych <= '\'') {
+        if (yych == '"') goto yy96;
+        if (yych <= '&') goto yy9;
+        goto yy214;
+    } else {
+        if (yych <= '?') {
+            if (yych <= '>') goto yy9;
+            goto yy197;
+        } else {
+            if (yych == '\\') goto yy196;
+            goto yy9;
+        }
+    }
+yy78:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy79:
+#line 299 "strict_cpp.re"
+    { BOOST_WAVE_RET(TOKEN_FROM_ID(*s->tok, UnknownTokenType)); }
+#line 674 "strict_cpp_re.inc"
+yy80:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0C) {
+        if (yych == 0x09) goto yy142;
+        if (yych <= 0x0A) goto yy79;
+        goto yy142;
+    } else {
+        if (yych <= 0x1F) goto yy79;
+        if (yych == '\'') goto yy79;
+        goto yy142;
+    }
+yy81:
+    yyaccept = 5;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 0x0A) {
+        if (yych == 0x09) goto yy97;
+        goto yy79;
+    } else {
+        if (yych <= 0x0C) goto yy97;
+        if (yych <= 0x1F) goto yy79;
+        goto yy97;
+    }
+yy82:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy95;
+yy83:
+#line 279 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SPACE); }
+#line 705 "strict_cpp_re.inc"
+yy84:
+    yych = *++YYCURSOR;
+    goto yy95;
+yy85:
+    ++YYCURSOR;
+yy86:
+#line 282 "strict_cpp.re"
+    {
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_NEWLINE);
+    }
+#line 718 "strict_cpp_re.inc"
+yy87:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy93;
+    goto yy86;
+yy88:
+    ++YYCURSOR;
+#line 289 "strict_cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        BOOST_WAVE_RET(T_EOF);
+    }
+#line 735 "strict_cpp_re.inc"
+yy90:
+    yych = *++YYCURSOR;
+    goto yy79;
+yy91:
+    ++YYCURSOR;
+#line 302 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 748 "strict_cpp_re.inc"
+yy93:
+    yych = *++YYCURSOR;
+    goto yy86;
+yy94:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy95:
+    if (yybm[256+yych] & 16) {
+        goto yy94;
+    }
+    goto yy83;
+yy96:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy97:
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy98:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 51) {
+        if (yyaccept <= 25) {
+            if (yyaccept <= 12) {
+                if (yyaccept <= 6) {
+                    if (yyaccept <= 3) {
+                        if (yyaccept <= 1) {
+                            if (yyaccept <= 0) {
+                                goto yy5;
+                            } else {
+                                goto yy9;
+                            }
+                        } else {
+                            if (yyaccept <= 2) {
+                                goto yy32;
+                            } else {
+                                goto yy46;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 5) {
+                            if (yyaccept <= 4) {
+                                goto yy65;
+                            } else {
+                                goto yy79;
+                            }
+                        } else {
+                            goto yy102;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 9) {
+                        if (yyaccept <= 8) {
+                            if (yyaccept <= 7) {
+                                goto yy152;
+                            } else {
+                                goto yy239;
+                            }
+                        } else {
+                            goto yy243;
+                        }
+                    } else {
+                        if (yyaccept <= 11) {
+                            if (yyaccept <= 10) {
+                                goto yy279;
+                            } else {
+                                goto yy294;
+                            }
+                        } else {
+                            goto yy389;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 19) {
+                    if (yyaccept <= 16) {
+                        if (yyaccept <= 14) {
+                            if (yyaccept <= 13) {
+                                goto yy417;
+                            } else {
+                                goto yy421;
+                            }
+                        } else {
+                            if (yyaccept <= 15) {
+                                goto yy425;
+                            } else {
+                                goto yy456;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 18) {
+                            if (yyaccept <= 17) {
+                                goto yy462;
+                            } else {
+                                goto yy470;
+                            }
+                        } else {
+                            goto yy478;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 22) {
+                        if (yyaccept <= 21) {
+                            if (yyaccept <= 20) {
+                                goto yy483;
+                            } else {
+                                goto yy488;
+                            }
+                        } else {
+                            goto yy491;
+                        }
+                    } else {
+                        if (yyaccept <= 24) {
+                            if (yyaccept <= 23) {
+                                goto yy501;
+                            } else {
+                                goto yy507;
+                            }
+                        } else {
+                            goto yy510;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 38) {
+                if (yyaccept <= 32) {
+                    if (yyaccept <= 29) {
+                        if (yyaccept <= 27) {
+                            if (yyaccept <= 26) {
+                                goto yy517;
+                            } else {
+                                goto yy524;
+                            }
+                        } else {
+                            if (yyaccept <= 28) {
+                                goto yy526;
+                            } else {
+                                goto yy528;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 31) {
+                            if (yyaccept <= 30) {
+                                goto yy530;
+                            } else {
+                                goto yy536;
+                            }
+                        } else {
+                            goto yy542;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 35) {
+                        if (yyaccept <= 34) {
+                            if (yyaccept <= 33) {
+                                goto yy552;
+                            } else {
+                                goto yy554;
+                            }
+                        } else {
+                            goto yy560;
+                        }
+                    } else {
+                        if (yyaccept <= 37) {
+                            if (yyaccept <= 36) {
+                                goto yy566;
+                            } else {
+                                goto yy574;
+                            }
+                        } else {
+                            goto yy577;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 45) {
+                    if (yyaccept <= 42) {
+                        if (yyaccept <= 40) {
+                            if (yyaccept <= 39) {
+                                goto yy590;
+                            } else {
+                                goto yy592;
+                            }
+                        } else {
+                            if (yyaccept <= 41) {
+                                goto yy595;
+                            } else {
+                                goto yy598;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 44) {
+                            if (yyaccept <= 43) {
+                                goto yy600;
+                            } else {
+                                goto yy605;
+                            }
+                        } else {
+                            goto yy607;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 48) {
+                        if (yyaccept <= 47) {
+                            if (yyaccept <= 46) {
+                                goto yy614;
+                            } else {
+                                goto yy623;
+                            }
+                        } else {
+                            goto yy629;
+                        }
+                    } else {
+                        if (yyaccept <= 50) {
+                            if (yyaccept <= 49) {
+                                goto yy633;
+                            } else {
+                                goto yy639;
+                            }
+                        } else {
+                            goto yy645;
+                        }
+                    }
+                }
+            }
+        }
+    } else {
+        if (yyaccept <= 77) {
+            if (yyaccept <= 64) {
+                if (yyaccept <= 58) {
+                    if (yyaccept <= 55) {
+                        if (yyaccept <= 53) {
+                            if (yyaccept <= 52) {
+                                goto yy649;
+                            } else {
+                                goto yy653;
+                            }
+                        } else {
+                            if (yyaccept <= 54) {
+                                goto yy661;
+                            } else {
+                                goto yy675;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 57) {
+                            if (yyaccept <= 56) {
+                                goto yy681;
+                            } else {
+                                goto yy688;
+                            }
+                        } else {
+                            goto yy697;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 61) {
+                        if (yyaccept <= 60) {
+                            if (yyaccept <= 59) {
+                                goto yy702;
+                            } else {
+                                goto yy705;
+                            }
+                        } else {
+                            goto yy709;
+                        }
+                    } else {
+                        if (yyaccept <= 63) {
+                            if (yyaccept <= 62) {
+                                goto yy716;
+                            } else {
+                                goto yy721;
+                            }
+                        } else {
+                            goto yy725;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 71) {
+                    if (yyaccept <= 68) {
+                        if (yyaccept <= 66) {
+                            if (yyaccept <= 65) {
+                                goto yy727;
+                            } else {
+                                goto yy735;
+                            }
+                        } else {
+                            if (yyaccept <= 67) {
+                                goto yy742;
+                            } else {
+                                goto yy746;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 70) {
+                            if (yyaccept <= 69) {
+                                goto yy748;
+                            } else {
+                                goto yy753;
+                            }
+                        } else {
+                            goto yy757;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 74) {
+                        if (yyaccept <= 73) {
+                            if (yyaccept <= 72) {
+                                goto yy762;
+                            } else {
+                                goto yy766;
+                            }
+                        } else {
+                            goto yy775;
+                        }
+                    } else {
+                        if (yyaccept <= 76) {
+                            if (yyaccept <= 75) {
+                                goto yy777;
+                            } else {
+                                goto yy781;
+                            }
+                        } else {
+                            goto yy785;
+                        }
+                    }
+                }
+            }
+        } else {
+            if (yyaccept <= 90) {
+                if (yyaccept <= 84) {
+                    if (yyaccept <= 81) {
+                        if (yyaccept <= 79) {
+                            if (yyaccept <= 78) {
+                                goto yy794;
+                            } else {
+                                goto yy799;
+                            }
+                        } else {
+                            if (yyaccept <= 80) {
+                                goto yy804;
+                            } else {
+                                goto yy807;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 83) {
+                            if (yyaccept <= 82) {
+                                goto yy810;
+                            } else {
+                                goto yy813;
+                            }
+                        } else {
+                            goto yy825;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 87) {
+                        if (yyaccept <= 86) {
+                            if (yyaccept <= 85) {
+                                goto yy830;
+                            } else {
+                                goto yy836;
+                            }
+                        } else {
+                            goto yy841;
+                        }
+                    } else {
+                        if (yyaccept <= 89) {
+                            if (yyaccept <= 88) {
+                                goto yy850;
+                            } else {
+                                goto yy857;
+                            }
+                        } else {
+                            goto yy859;
+                        }
+                    }
+                }
+            } else {
+                if (yyaccept <= 97) {
+                    if (yyaccept <= 94) {
+                        if (yyaccept <= 92) {
+                            if (yyaccept <= 91) {
+                                goto yy865;
+                            } else {
+                                goto yy869;
+                            }
+                        } else {
+                            if (yyaccept <= 93) {
+                                goto yy872;
+                            } else {
+                                goto yy877;
+                            }
+                        }
+                    } else {
+                        if (yyaccept <= 96) {
+                            if (yyaccept <= 95) {
+                                goto yy879;
+                            } else {
+                                goto yy886;
+                            }
+                        } else {
+                            goto yy889;
+                        }
+                    }
+                } else {
+                    if (yyaccept <= 100) {
+                        if (yyaccept <= 99) {
+                            if (yyaccept <= 98) {
+                                goto yy894;
+                            } else {
+                                goto yy897;
+                            }
+                        } else {
+                            goto yy903;
+                        }
+                    } else {
+                        if (yyaccept <= 102) {
+                            if (yyaccept <= 101) {
+                                goto yy905;
+                            } else {
+                                goto yy907;
+                            }
+                        } else {
+                            goto yy911;
+                        }
+                    }
+                }
+            }
+        }
+    }
+yy99:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy112;
+yy100:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy96;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy96;
+                if (yych <= '/') goto yy98;
+                goto yy107;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy105;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy104;
+                if (yych == '\\') goto yy96;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy96;
+                if (yych <= 'e') goto yy98;
+                goto yy96;
+            } else {
+                if (yych == 'n') goto yy96;
+                if (yych <= 'q') goto yy98;
+                goto yy96;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy96;
+                goto yy103;
+            } else {
+                if (yych <= 'v') goto yy96;
+                if (yych == 'x') goto yy106;
+                goto yy98;
+            }
+        }
+    }
+yy101:
+    ++YYCURSOR;
+yy102:
+#line 249 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRINGLIT); }
+#line 1250 "strict_cpp_re.inc"
+yy103:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy138;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy138;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy138;
+        goto yy98;
+    }
+yy104:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy131;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy131;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy131;
+        goto yy98;
+    }
+yy105:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy111;
+    goto yy100;
+yy106:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    goto yy98;
+yy107:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '"') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '!') goto yy96;
+            goto yy101;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy96;
+            if (yych >= '8') goto yy96;
+        } else {
+            if (yych <= '?') goto yy99;
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy109:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 64) {
+        goto yy109;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '?') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '>') goto yy96;
+            goto yy99;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy111:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+yy112:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy114:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 1) {
+        goto yy114;
+    }
+    if (yych <= '7') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy118;
+                if (yych <= '/') goto yy96;
+                goto yy107;
+            }
+        }
+    } else {
+        if (yych <= 'U') {
+            if (yych == '?') goto yy119;
+            if (yych <= 'T') goto yy96;
+            goto yy117;
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy96;
+            } else {
+                if (yych == 'x') goto yy109;
+                goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy128;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy128;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy128;
+                goto yy96;
+            }
+        }
+    }
+yy117:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+                goto yy121;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+            goto yy121;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych <= 'f') goto yy121;
+                goto yy96;
+            }
+        }
+    }
+yy118:
+    yyaccept = 6;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy102;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy119:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych >= '\\') goto yy100;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 128) {
+        goto yy112;
+    }
+    if (yych <= '!') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy96;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy96;
+            if (yych <= 0x1F) goto yy98;
+            goto yy96;
+        }
+    } else {
+        if (yych <= '/') {
+            if (yych <= '"') goto yy101;
+            if (yych <= '.') goto yy96;
+            goto yy114;
+        } else {
+            if (yych == '\\') goto yy100;
+            goto yy96;
+        }
+    }
+yy121:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy128:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy96;
+            if (yych <= 0x0A) goto yy98;
+            goto yy96;
+        } else {
+            if (yych <= '!') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy96;
+            } else {
+                if (yych <= '"') goto yy101;
+                if (yych <= '/') goto yy96;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy99;
+            if (yych <= '@') goto yy96;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy96;
+                goto yy100;
+            } else {
+                if (yych <= '`') goto yy96;
+                if (yych >= 'g') goto yy96;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[256+yych] & 32) {
+        goto yy96;
+    }
+    if (yych <= '!') goto yy98;
+    if (yych <= '"') goto yy101;
+    if (yych <= '[') goto yy99;
+    goto yy100;
+yy131:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy132;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy132:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy133;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy133:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy134;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy134:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy135;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy135:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy136;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy136:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy137;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy137:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy138:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy139;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy139:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy140;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy140:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy96;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy96;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy96;
+        goto yy98;
+    }
+yy141:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy142:
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy143:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy156;
+yy144:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '`') {
+        if (yych <= '7') {
+            if (yych <= '&') {
+                if (yych == '"') goto yy141;
+                goto yy98;
+            } else {
+                if (yych <= '\'') goto yy141;
+                if (yych <= '/') goto yy98;
+                goto yy149;
+            }
+        } else {
+            if (yych <= 'T') {
+                if (yych == '?') goto yy147;
+                goto yy98;
+            } else {
+                if (yych <= 'U') goto yy146;
+                if (yych == '\\') goto yy141;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'r') {
+            if (yych <= 'f') {
+                if (yych <= 'b') goto yy141;
+                if (yych <= 'e') goto yy98;
+                goto yy141;
+            } else {
+                if (yych == 'n') goto yy141;
+                if (yych <= 'q') goto yy98;
+                goto yy141;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 's') goto yy98;
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych <= 'v') goto yy141;
+                if (yych == 'x') goto yy148;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy182;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy182;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy182;
+        goto yy98;
+    }
+yy146:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy175;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy175;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy175;
+        goto yy98;
+    }
+yy147:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy155;
+    goto yy144;
+yy148:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy153;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy153;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy153;
+        goto yy98;
+    }
+yy149:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy141;
+            if (yych >= '8') goto yy141;
+        } else {
+            if (yych <= '?') goto yy143;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy151:
+    ++YYCURSOR;
+yy152:
+#line 246 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHARLIT); }
+#line 2097 "strict_cpp_re.inc"
+yy153:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy153;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy153;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+yy155:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+yy156:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych != '/') goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy158:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '>') {
+        if (yych <= 0x1F) {
+            if (yych <= 0x09) {
+                if (yych <= 0x08) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= 0x0A) goto yy98;
+                if (yych <= 0x0C) goto yy141;
+                goto yy98;
+            }
+        } else {
+            if (yych <= '\'') {
+                if (yych <= '&') goto yy141;
+                goto yy162;
+            } else {
+                if (yych <= '/') goto yy141;
+                if (yych <= '7') goto yy149;
+                goto yy141;
+            }
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= 'T') {
+                if (yych <= '?') goto yy163;
+                goto yy141;
+            } else {
+                if (yych <= 'U') goto yy161;
+                if (yych <= '[') goto yy141;
+                goto yy158;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 't') goto yy141;
+            } else {
+                if (yych == 'x') goto yy153;
+                goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy172;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy172;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy172;
+                goto yy141;
+            }
+        }
+    }
+yy161:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+                goto yy165;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+            goto yy165;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych <= 'f') goto yy165;
+                goto yy141;
+            }
+        }
+    }
+yy162:
+    yyaccept = 7;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy152;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy163:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych >= '\\') goto yy144;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '\'') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy141;
+            goto yy98;
+        } else {
+            if (yych <= 0x0C) goto yy141;
+            if (yych <= 0x1F) goto yy98;
+            if (yych <= '&') goto yy141;
+            goto yy151;
+        }
+    } else {
+        if (yych <= '>') {
+            if (yych == '/') goto yy158;
+            goto yy141;
+        } else {
+            if (yych <= '?') goto yy156;
+            if (yych == '\\') goto yy144;
+            goto yy141;
+        }
+    }
+yy165:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy172:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych <= 0x0C) {
+            if (yych == 0x09) goto yy141;
+            if (yych <= 0x0A) goto yy98;
+            goto yy141;
+        } else {
+            if (yych <= '&') {
+                if (yych <= 0x1F) goto yy98;
+                goto yy141;
+            } else {
+                if (yych <= '\'') goto yy151;
+                if (yych <= '/') goto yy141;
+            }
+        }
+    } else {
+        if (yych <= 'F') {
+            if (yych == '?') goto yy143;
+            if (yych <= '@') goto yy141;
+        } else {
+            if (yych <= '\\') {
+                if (yych <= '[') goto yy141;
+                goto yy144;
+            } else {
+                if (yych <= '`') goto yy141;
+                if (yych >= 'g') goto yy141;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 2) {
+        goto yy141;
+    }
+    if (yych <= '&') goto yy98;
+    if (yych <= '\'') goto yy151;
+    if (yych <= '[') goto yy143;
+    goto yy144;
+yy175:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy176;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy176:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy177;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy177:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy178;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy178:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy179;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy179:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy180;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy180:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy181;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy181:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy182:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy183;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy183:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy184;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy184:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy141;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy141;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy141;
+        goto yy98;
+    }
+yy185:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy211;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy211;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy211;
+        goto yy98;
+    }
+yy186:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy187;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy187:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy188;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy188:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy189;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy189:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy190;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy190:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy191;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy191:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy192;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy192:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy193;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy193:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy194:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy195:
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych != '\\') goto yy9;
+yy196:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy200;
+    if (yych == 'u') goto yy199;
+    goto yy98;
+yy197:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy98;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy196;
+    goto yy98;
+yy199:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy208;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy208;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy208;
+        goto yy98;
+    }
+yy200:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy201;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy201:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy202;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy202:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy203;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy203:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy204;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy204:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy205;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy205:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy206;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy206:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy207;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy207:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy208:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy209;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy209:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy210;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy210:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy211:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy212;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy212:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych >= ':') goto yy98;
+    } else {
+        if (yych <= 'F') goto yy213;
+        if (yych <= '`') goto yy98;
+        if (yych >= 'g') goto yy98;
+    }
+yy213:
+    yych = *++YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy98;
+        if (yych <= '9') goto yy194;
+        goto yy98;
+    } else {
+        if (yych <= 'F') goto yy194;
+        if (yych <= '`') goto yy98;
+        if (yych <= 'f') goto yy194;
+        goto yy98;
+    }
+yy214:
+    yych = *++YYCURSOR;
+    if (yych == '\'') goto yy98;
+    goto yy142;
+yy215:
+    ++YYCURSOR;
+#line 217 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GREATEREQUAL); }
+#line 3027 "strict_cpp_re.inc"
+yy217:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy219;
+#line 210 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHT); }
+#line 3033 "strict_cpp_re.inc"
+yy219:
+    ++YYCURSOR;
+#line 211 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTRIGHTASSIGN); }
+#line 3038 "strict_cpp_re.inc"
+yy221:
+    ++YYCURSOR;
+#line 213 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EQUAL); }
+#line 3043 "strict_cpp_re.inc"
+yy223:
+    ++YYCURSOR;
+#line 214 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NOTEQUAL); }
+#line 3048 "strict_cpp_re.inc"
+yy225:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy230;
+    goto yy98;
+yy226:
+    ++YYCURSOR;
+#line 220 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR); }
+#line 3057 "strict_cpp_re.inc"
+yy228:
+    ++YYCURSOR;
+#line 206 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN); }
+#line 3062 "strict_cpp_re.inc"
+yy230:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 222 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3069 "strict_cpp_re.inc"
+yy233:
+    ++YYCURSOR;
+#line 218 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDAND); }
+#line 3074 "strict_cpp_re.inc"
+yy235:
+    ++YYCURSOR;
+#line 204 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANDASSIGN); }
+#line 3079 "strict_cpp_re.inc"
+yy237:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 8;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy239;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy240;
+            if (yych <= '`') goto yy239;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy239:
+#line 182 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XOR_ALT); }
+#line 3106 "strict_cpp_re.inc"
+yy240:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 9;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy243:
+#line 202 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_XORASSIGN_ALT); }
+#line 3124 "strict_cpp_re.inc"
+yy244:
+    ++YYCURSOR;
+#line 201 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN); }
+#line 3129 "strict_cpp_re.inc"
+yy246:
+    ++YYCURSOR;
+#line 198 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STARASSIGN); }
+#line 3134 "strict_cpp_re.inc"
+yy248:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '*') goto yy254;
+#line 238 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ARROW); }
+#line 3140 "strict_cpp_re.inc"
+yy250:
+    ++YYCURSOR;
+#line 226 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSMINUS); }
+#line 3145 "strict_cpp_re.inc"
+yy252:
+    ++YYCURSOR;
+#line 197 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MINUSASSIGN); }
+#line 3150 "strict_cpp_re.inc"
+yy254:
+    ++YYCURSOR;
+#line 229 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_ARROW);
+            }
+            else {
+                BOOST_WAVE_RET(T_ARROWSTAR); 
+            }
+        }
+#line 3163 "strict_cpp_re.inc"
+yy256:
+    ++YYCURSOR;
+#line 225 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSPLUS); }
+#line 3168 "strict_cpp_re.inc"
+yy258:
+    ++YYCURSOR;
+#line 196 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PLUSASSIGN); }
+#line 3173 "strict_cpp_re.inc"
+yy260:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 12) YYFILL(12);
+    yych = *YYCURSOR;
+yy261:
+    if (yych <= 'h') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy260;
+                goto yy98;
+            } else {
+                if (yych <= 0x0C) goto yy260;
+                if (yych <= 0x1F) goto yy98;
+                goto yy260;
+            }
+        } else {
+            if (yych <= 'c') {
+                if (yych != '/') goto yy98;
+            } else {
+                if (yych <= 'd') goto yy269;
+                if (yych <= 'e') goto yy263;
+                goto yy98;
+            }
+        }
+    } else {
+        if (yych <= 'q') {
+            if (yych <= 'l') {
+                if (yych <= 'i') goto yy270;
+                if (yych <= 'k') goto yy98;
+                goto yy267;
+            } else {
+                if (yych == 'p') goto yy266;
+                goto yy98;
+            }
+        } else {
+            if (yych <= 'u') {
+                if (yych <= 'r') goto yy264;
+                if (yych <= 't') goto yy98;
+                goto yy268;
+            } else {
+                if (yych == 'w') goto yy265;
+                goto yy98;
+            }
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy377;
+    goto yy98;
+yy263:
+    yych = *++YYCURSOR;
+    if (yych <= 'm') {
+        if (yych == 'l') goto yy353;
+        goto yy98;
+    } else {
+        if (yych <= 'n') goto yy354;
+        if (yych == 'r') goto yy355;
+        goto yy98;
+    }
+yy264:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy347;
+    goto yy98;
+yy265:
+    yych = *++YYCURSOR;
+    if (yych == 'a') goto yy340;
+    goto yy98;
+yy266:
+    yych = *++YYCURSOR;
+    if (yych == 'r') goto yy334;
+    goto yy98;
+yy267:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy330;
+    goto yy98;
+yy268:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy325;
+    goto yy98;
+yy269:
+    yych = *++YYCURSOR;
+    if (yych == 'e') goto yy319;
+    goto yy98;
+yy270:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy278;
+    if (yych == 'n') goto yy277;
+    goto yy98;
+yy271:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy274;
+    goto yy98;
+yy272:
+    ++YYCURSOR;
+#line 143 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND); }
+#line 3271 "strict_cpp_re.inc"
+yy274:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 144 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3278 "strict_cpp_re.inc"
+yy277:
+    yych = *++YYCURSOR;
+    if (yych == 'c') goto yy289;
+    goto yy98;
+yy278:
+    yyaccept = 10;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy281;
+    if (yych == 'n') goto yy280;
+yy279:
+#line 261 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IF); }
+#line 3291 "strict_cpp_re.inc"
+yy280:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy285;
+    goto yy98;
+yy281:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 262 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFDEF); }
+#line 3304 "strict_cpp_re.inc"
+yy285:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 263 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_IFNDEF); }
+#line 3313 "strict_cpp_re.inc"
+yy289:
+    yych = *++YYCURSOR;
+    if (yych != 'l') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'u') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yyaccept = 11;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '_') goto yy295;
+    goto yy297;
+yy294:
+#line 259 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_INCLUDE); }
+#line 3330 "strict_cpp_re.inc"
+yy295:
+    yych = *++YYCURSOR;
+    if (yych == 'n') goto yy316;
+    goto yy98;
+yy296:
+    yyaccept = 11;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+yy297:
+    if (yych <= ' ') {
+        if (yych <= 0x0A) {
+            if (yych == 0x09) goto yy296;
+            goto yy294;
+        } else {
+            if (yych <= 0x0C) goto yy296;
+            if (yych <= 0x1F) goto yy294;
+            goto yy296;
+        }
+    } else {
+        if (yych <= '.') {
+            if (yych == '"') goto yy300;
+            goto yy294;
+        } else {
+            if (yych <= '/') goto yy298;
+            if (yych == '<') goto yy299;
+            goto yy294;
+        }
+    }
+yy298:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '*') goto yy309;
+    goto yy98;
+yy299:
+    yych = *++YYCURSOR;
+    if (yych == '>') goto yy98;
+    goto yy306;
+yy300:
+    yych = *++YYCURSOR;
+    if (yych == '"') goto yy98;
+    goto yy302;
+yy301:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy302:
+    if (yybm[0+yych] & 8) {
+        goto yy301;
+    }
+    if (yych <= '!') goto yy98;
+    ++YYCURSOR;
+#line 256 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_QHEADER); }
+#line 3386 "strict_cpp_re.inc"
+yy305:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+yy306:
+    if (yybm[0+yych] & 16) {
+        goto yy305;
+    }
+    if (yych <= '=') goto yy98;
+    ++YYCURSOR;
+#line 253 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_HHEADER); }
+#line 3399 "strict_cpp_re.inc"
+yy309:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy311:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+yy313:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy313;
+    }
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy309;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '/') goto yy296;
+        goto yy309;
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy309;
+    }
+    if (yych == 0x0D) goto yy311;
+    if (yych <= ')') goto yy98;
+    goto yy313;
+yy316:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'x') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych == 't') goto yy296;
+    goto yy98;
+yy319:
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 267 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_DEFINE); }
+#line 3463 "strict_cpp_re.inc"
+yy325:
+    yych = *++YYCURSOR;
+    if (yych != 'd') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'f') goto yy98;
+    ++YYCURSOR;
+#line 268 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_UNDEF); }
+#line 3474 "strict_cpp_re.inc"
+yy330:
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 269 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_LINE); }
+#line 3483 "strict_cpp_re.inc"
+yy334:
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'm') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'a') goto yy98;
+    ++YYCURSOR;
+#line 271 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_PRAGMA); }
+#line 3496 "strict_cpp_re.inc"
+yy340:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    ++YYCURSOR;
+#line 273 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_WARNING); }
+#line 3511 "strict_cpp_re.inc"
+yy347:
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 275 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_REGION); }
+#line 3524 "strict_cpp_re.inc"
+yy353:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy371;
+    if (yych == 's') goto yy372;
+    goto yy98;
+yy354:
+    yych = *++YYCURSOR;
+    if (yych == 'd') goto yy360;
+    goto yy98;
+yy355:
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'r') goto yy98;
+    ++YYCURSOR;
+#line 270 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ERROR); }
+#line 3544 "strict_cpp_re.inc"
+yy360:
+    yych = *++YYCURSOR;
+    if (yych == 'i') goto yy361;
+    if (yych == 'r') goto yy362;
+    goto yy98;
+yy361:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy369;
+    goto yy98;
+yy362:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'g') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'i') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'o') goto yy98;
+    yych = *++YYCURSOR;
+    if (yych != 'n') goto yy98;
+    ++YYCURSOR;
+#line 276 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MSEXT_PP_ENDREGION); }
+#line 3568 "strict_cpp_re.inc"
+yy369:
+    ++YYCURSOR;
+#line 266 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ENDIF); }
+#line 3573 "strict_cpp_re.inc"
+yy371:
+    yych = *++YYCURSOR;
+    if (yych == 'f') goto yy375;
+    goto yy98;
+yy372:
+    yych = *++YYCURSOR;
+    if (yych != 'e') goto yy98;
+    ++YYCURSOR;
+#line 264 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELSE); }
+#line 3584 "strict_cpp_re.inc"
+yy375:
+    ++YYCURSOR;
+#line 265 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_ELIF); }
+#line 3589 "strict_cpp_re.inc"
+yy377:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy379:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych != '*') goto yy377;
+    }
+yy381:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x1F) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        if (yych >= 0x0E) goto yy98;
+    } else {
+        if (yych <= '*') {
+            if (yych <= ')') goto yy377;
+            goto yy381;
+        } else {
+            if (yych == '/') goto yy260;
+            goto yy377;
+        }
+    }
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= 0x0D) {
+        if (yych <= 0x08) goto yy98;
+        if (yych <= 0x0C) goto yy377;
+        goto yy379;
+    } else {
+        if (yych <= 0x1F) goto yy98;
+        if (yych == '*') goto yy381;
+        goto yy377;
+    }
+yy384:
+    ++YYCURSOR;
+#line 155 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_COLON);
+            }
+            else {
+                BOOST_WAVE_RET(T_COLON_COLON); 
+            }
+        }
+#line 3655 "strict_cpp_re.inc"
+yy386:
+    ++YYCURSOR;
+#line 139 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_ALT); }
+#line 3660 "strict_cpp_re.inc"
+yy388:
+    yyaccept = 12;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'e') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '%') goto yy394;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych >= 'd') goto yy261;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'k') {
+                if (yych == 'i') goto yy261;
+            } else {
+                if (yych <= 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy389;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy389:
+#line 141 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_ALT); }
+#line 3700 "strict_cpp_re.inc"
+yy390:
+    ++YYCURSOR;
+#line 200 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PERCENTASSIGN); }
+#line 3705 "strict_cpp_re.inc"
+yy392:
+    ++YYCURSOR;
+#line 133 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_ALT); }
+#line 3710 "strict_cpp_re.inc"
+yy394:
+    yych = *++YYCURSOR;
+    if (yych != ':') goto yy98;
+    ++YYCURSOR;
+#line 147 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_ALT); }
+#line 3717 "strict_cpp_re.inc"
+yy397:
+    ++YYCURSOR;
+#line 216 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LESSEQUAL); }
+#line 3722 "strict_cpp_re.inc"
+yy399:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy405;
+#line 209 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFT); }
+#line 3728 "strict_cpp_re.inc"
+yy401:
+    ++YYCURSOR;
+#line 136 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_ALT); }
+#line 3733 "strict_cpp_re.inc"
+yy403:
+    ++YYCURSOR;
+#line 130 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_ALT); }
+#line 3738 "strict_cpp_re.inc"
+yy405:
+    ++YYCURSOR;
+#line 212 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHIFTLEFTASSIGN); }
+#line 3743 "strict_cpp_re.inc"
+yy407:
+    yych = *++YYCURSOR;
+    switch (yych) {
+    case '!':    goto yy420;
+    case '\'':    goto yy418;
+    case '(':    goto yy412;
+    case ')':    goto yy414;
+    case '-':    goto yy422;
+    case '/':    goto yy424;
+    case '<':    goto yy408;
+    case '=':    goto yy416;
+    case '>':    goto yy410;
+    default:    goto yy98;
+    }
+yy408:
+    ++YYCURSOR;
+#line 129 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACE_TRIGRAPH); }
+#line 3762 "strict_cpp_re.inc"
+yy410:
+    ++YYCURSOR;
+#line 132 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACE_TRIGRAPH); }
+#line 3767 "strict_cpp_re.inc"
+yy412:
+    ++YYCURSOR;
+#line 135 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LEFTBRACKET_TRIGRAPH); }
+#line 3772 "strict_cpp_re.inc"
+yy414:
+    ++YYCURSOR;
+#line 138 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RIGHTBRACKET_TRIGRAPH); }
+#line 3777 "strict_cpp_re.inc"
+yy416:
+    yyaccept = 13;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'c') {
+        if (yych <= ' ') {
+            if (yych <= 0x0A) {
+                if (yych == 0x09) goto yy261;
+            } else {
+                if (yych <= 0x0C) goto yy261;
+                if (yych >= ' ') goto yy261;
+            }
+        } else {
+            if (yych <= '.') {
+                if (yych == '#') goto yy437;
+            } else {
+                if (yych <= '/') goto yy261;
+                if (yych == '?') goto yy436;
+            }
+        }
+    } else {
+        if (yych <= 'p') {
+            if (yych <= 'i') {
+                if (yych <= 'e') goto yy261;
+                if (yych >= 'i') goto yy261;
+            } else {
+                if (yych == 'l') goto yy261;
+                if (yych >= 'p') goto yy261;
+            }
+        } else {
+            if (yych <= 't') {
+                if (yych == 'r') goto yy261;
+            } else {
+                if (yych == 'v') goto yy417;
+                if (yych <= 'w') goto yy261;
+            }
+        }
+    }
+yy417:
+#line 142 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_TRIGRAPH); }
+#line 3818 "strict_cpp_re.inc"
+yy418:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '=') goto yy434;
+#line 181 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XOR_TRIGRAPH); }
+#line 3824 "strict_cpp_re.inc"
+yy420:
+    yyaccept = 14;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '>') {
+        if (yych == '=') goto yy429;
+    } else {
+        if (yych <= '?') goto yy426;
+        if (yych == '|') goto yy427;
+    }
+yy421:
+#line 187 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OR_TRIGRAPH); }
+#line 3837 "strict_cpp_re.inc"
+yy422:
+    ++YYCURSOR;
+#line 189 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_COMPL_TRIGRAPH); }
+#line 3842 "strict_cpp_re.inc"
+yy424:
+    yyaccept = 15;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'U') goto yy186;
+    if (yych == 'u') goto yy185;
+yy425:
+#line 239 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ANY_TRIGRAPH); }
+#line 3851 "strict_cpp_re.inc"
+yy426:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy431;
+    goto yy98;
+yy427:
+    ++YYCURSOR;
+#line 221 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3860 "strict_cpp_re.inc"
+yy429:
+    ++YYCURSOR;
+#line 208 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ORASSIGN_TRIGRAPH); }
+#line 3865 "strict_cpp_re.inc"
+yy431:
+    yych = *++YYCURSOR;
+    if (yych != '!') goto yy98;
+    ++YYCURSOR;
+#line 224 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OROR_TRIGRAPH); }
+#line 3872 "strict_cpp_re.inc"
+yy434:
+    ++YYCURSOR;
+#line 203 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_XORASSIGN_TRIGRAPH); }
+#line 3877 "strict_cpp_re.inc"
+yy436:
+    yych = *++YYCURSOR;
+    if (yych == '?') goto yy439;
+    goto yy98;
+yy437:
+    ++YYCURSOR;
+#line 145 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3886 "strict_cpp_re.inc"
+yy439:
+    yych = *++YYCURSOR;
+    if (yych != '=') goto yy98;
+    ++YYCURSOR;
+#line 146 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_POUND_POUND_TRIGRAPH); }
+#line 3893 "strict_cpp_re.inc"
+yy442:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case 'a':    goto yy443;
+    case 'b':    goto yy444;
+    case 'c':    goto yy445;
+    case 'd':    goto yy446;
+    case 'e':    goto yy495;
+    case 'f':    goto yy493;
+    case 'i':    goto yy492;
+    case 'l':    goto yy496;
+    case 's':    goto yy449;
+    case 't':    goto yy494;
+    default:    goto yy195;
+    }
+yy443:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy489;
+    goto yy195;
+yy444:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy484;
+    goto yy195;
+yy445:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy479;
+    goto yy195;
+yy446:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy471;
+    goto yy195;
+yy447:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    goto yy195;
+yy448:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy457;
+    goto yy195;
+yy449:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 16;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy456:
+#line 120 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_STDCALL : T_IDENTIFIER); }
+#line 3969 "strict_cpp_re.inc"
+yy457:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+yy458:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 17;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy462:
+#line 125 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INLINE : T_IDENTIFIER); }
+#line 3994 "strict_cpp_re.inc"
+yy463:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 18;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy470:
+#line 119 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FASTCALL : T_IDENTIFIER); }
+#line 4024 "strict_cpp_re.inc"
+yy471:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 19;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy478:
+#line 117 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_DECLSPEC : T_IDENTIFIER); }
+#line 4054 "strict_cpp_re.inc"
+yy479:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 20;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy483:
+#line 118 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_CDECL : T_IDENTIFIER); }
+#line 4075 "strict_cpp_re.inc"
+yy484:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 21;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy488:
+#line 116 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_BASED : T_IDENTIFIER); }
+#line 4096 "strict_cpp_re.inc"
+yy489:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 22;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy491:
+#line 126 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_ASM : T_IDENTIFIER); }
+#line 4111 "strict_cpp_re.inc"
+yy492:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy518;
+    goto yy195;
+yy493:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy463;
+    if (yych == 'i') goto yy511;
+    goto yy195;
+yy494:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy508;
+    goto yy195;
+yy495:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'x') goto yy502;
+    goto yy195;
+yy496:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'v') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 23;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy501:
+#line 124 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_LEAVE : T_IDENTIFIER); }
+#line 4156 "strict_cpp_re.inc"
+yy502:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 24;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy507:
+#line 122 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_EXCEPT : T_IDENTIFIER); }
+#line 4180 "strict_cpp_re.inc"
+yy508:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 25;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy510:
+#line 121 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_TRY : T_IDENTIFIER); }
+#line 4195 "strict_cpp_re.inc"
+yy511:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'y') goto yy195;
+    yyaccept = 26;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy517:
+#line 123 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_FINALLY : T_IDENTIFIER); }
+#line 4222 "strict_cpp_re.inc"
+yy518:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy458;
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    switch (yych) {
+    case '1':    goto yy520;
+    case '3':    goto yy521;
+    case '6':    goto yy522;
+    case '8':    goto yy523;
+    default:    goto yy195;
+    }
+yy520:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '6') goto yy529;
+    goto yy195;
+yy521:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '2') goto yy527;
+    goto yy195;
+yy522:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == '4') goto yy525;
+    goto yy195;
+yy523:
+    yyaccept = 27;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy524:
+#line 112 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT8 : T_IDENTIFIER); }
+#line 4263 "strict_cpp_re.inc"
+yy525:
+    yyaccept = 28;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy526:
+#line 115 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT64 : T_IDENTIFIER); }
+#line 4275 "strict_cpp_re.inc"
+yy527:
+    yyaccept = 29;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy528:
+#line 114 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT32 : T_IDENTIFIER); }
+#line 4287 "strict_cpp_re.inc"
+yy529:
+    yyaccept = 30;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy530:
+#line 113 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_ms_extensions ? T_MSEXT_INT16 : T_IDENTIFIER); }
+#line 4299 "strict_cpp_re.inc"
+yy531:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'h') goto yy537;
+    goto yy195;
+yy532:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 31;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy536:
+#line 110 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WHILE); }
+#line 4325 "strict_cpp_re.inc"
+yy537:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 32;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy542:
+#line 109 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_WCHART); }
+#line 4349 "strict_cpp_re.inc"
+yy543:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy555;
+    goto yy195;
+yy544:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy545;
+    if (yych == 'l') goto yy546;
+    goto yy195;
+yy545:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy553;
+    goto yy195;
+yy546:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 33;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy552:
+#line 108 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOLATILE); }
+#line 4392 "strict_cpp_re.inc"
+yy553:
+    yyaccept = 34;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy554:
+#line 107 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VOID); }
+#line 4404 "strict_cpp_re.inc"
+yy555:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 35;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy560:
+#line 106 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_VIRTUAL); }
+#line 4428 "strict_cpp_re.inc"
+yy561:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy567;
+    if (yych == 's') goto yy568;
+    goto yy195;
+yy562:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 36;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy566:
+#line 105 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_USING); }
+#line 4455 "strict_cpp_re.inc"
+yy567:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy575;
+    goto yy195;
+yy568:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 37;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy574:
+#line 104 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNSIGNED); }
+#line 4487 "strict_cpp_re.inc"
+yy575:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 38;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy577:
+#line 103 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_UNION); }
+#line 4502 "strict_cpp_re.inc"
+yy578:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy608;
+    goto yy195;
+yy579:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy601;
+    if (yych == 'r') goto yy602;
+    goto yy195;
+yy580:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy596;
+    if (yych == 'y') goto yy597;
+    goto yy195;
+yy581:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'd') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy585;
+        if (yych == 'n') goto yy586;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy593;
+    goto yy195;
+yy585:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy591;
+    goto yy195;
+yy586:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 39;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy590:
+#line 102 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPENAME); }
+#line 4565 "strict_cpp_re.inc"
+yy591:
+    yyaccept = 40;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy592:
+#line 101 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEID); }
+#line 4577 "strict_cpp_re.inc"
+yy593:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 41;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy595:
+#line 100 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TYPEDEF); }
+#line 4592 "strict_cpp_re.inc"
+yy596:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy599;
+    goto yy195;
+yy597:
+    yyaccept = 42;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy598:
+#line 99 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRY); }
+#line 4609 "strict_cpp_re.inc"
+yy599:
+    yyaccept = 43;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy600:
+#line 98 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TRUE); }
+#line 4621 "strict_cpp_re.inc"
+yy601:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy606;
+    goto yy195;
+yy602:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'w') goto yy195;
+    yyaccept = 44;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy605:
+#line 97 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THROW); }
+#line 4644 "strict_cpp_re.inc"
+yy606:
+    yyaccept = 45;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy607:
+#line 96 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_THIS); }
+#line 4656 "strict_cpp_re.inc"
+yy608:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 46;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy614:
+#line 95 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_TEMPLATE); }
+#line 4683 "strict_cpp_re.inc"
+yy615:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy650;
+    goto yy195;
+yy616:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'g') goto yy640;
+    if (yych == 'z') goto yy641;
+    goto yy195;
+yy617:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy624;
+    if (yych == 'r') goto yy625;
+    goto yy195;
+yy618:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 47;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy623:
+#line 94 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SWITCH); }
+#line 4724 "strict_cpp_re.inc"
+yy624:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy630;
+    goto yy195;
+yy625:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 48;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy629:
+#line 93 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STRUCT); }
+#line 4750 "strict_cpp_re.inc"
+yy630:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 49;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy633;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy634;
+            if (yych <= '`') goto yy633;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy633:
+#line 91 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATIC); }
+#line 4780 "strict_cpp_re.inc"
+yy634:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 50;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy639:
+#line 92 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_STATICCAST); }
+#line 4804 "strict_cpp_re.inc"
+yy640:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy646;
+    goto yy195;
+yy641:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'f') goto yy195;
+    yyaccept = 51;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy645:
+#line 90 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIZEOF); }
+#line 4830 "strict_cpp_re.inc"
+yy646:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 52;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy649:
+#line 89 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SIGNED); }
+#line 4848 "strict_cpp_re.inc"
+yy650:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 53;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy653:
+#line 88 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_SHORT); }
+#line 4866 "strict_cpp_re.inc"
+yy654:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'h') {
+        if (yych != 'g') goto yy195;
+    } else {
+        if (yych <= 'i') goto yy656;
+        if (yych == 't') goto yy657;
+        goto yy195;
+    }
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy676;
+    goto yy195;
+yy656:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy662;
+    goto yy195;
+yy657:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 54;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy661:
+#line 87 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_RETURN); }
+#line 4906 "strict_cpp_re.inc"
+yy662:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 55;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy675:
+#line 86 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REINTERPRETCAST); }
+#line 4954 "strict_cpp_re.inc"
+yy676:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 56;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy681:
+#line 85 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_REGISTER); }
+#line 4978 "strict_cpp_re.inc"
+yy682:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy689;
+    if (yych == 'o') goto yy690;
+    goto yy195;
+yy683:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 57;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy688:
+#line 84 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PUBLIC); }
+#line 5008 "strict_cpp_re.inc"
+yy689:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'v') goto yy698;
+    goto yy195;
+yy690:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 58;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy697:
+#line 83 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PROTECTED); }
+#line 5043 "strict_cpp_re.inc"
+yy698:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 59;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy702:
+#line 82 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PRIVATE); }
+#line 5064 "strict_cpp_re.inc"
+yy703:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy710;
+    goto yy195;
+yy704:
+    yyaccept = 60;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy705;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy706;
+            if (yych <= '`') goto yy705;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy705:
+#line 223 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OROR_ALT); }
+#line 5093 "strict_cpp_re.inc"
+yy706:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 61;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy709:
+#line 207 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ORASSIGN_ALT); }
+#line 5111 "strict_cpp_re.inc"
+yy710:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 62;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy716:
+#line 81 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_OPERATOR); }
+#line 5138 "strict_cpp_re.inc"
+yy717:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy728;
+    goto yy195;
+yy718:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'w') goto yy726;
+    goto yy195;
+yy719:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 63;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy721;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy722;
+            if (yych <= '`') goto yy721;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy721:
+#line 192 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOT_ALT); }
+#line 5175 "strict_cpp_re.inc"
+yy722:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 64;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy725:
+#line 215 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_NOTEQUAL_ALT); }
+#line 5193 "strict_cpp_re.inc"
+yy726:
+    yyaccept = 65;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy727:
+#line 80 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NEW); }
+#line 5205 "strict_cpp_re.inc"
+yy728:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 66;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy735:
+#line 79 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_NAMESPACE); }
+#line 5235 "strict_cpp_re.inc"
+yy736:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 67;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy742:
+#line 78 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_MUTABLE); }
+#line 5262 "strict_cpp_re.inc"
+yy743:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'g') goto yy195;
+    yyaccept = 68;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy746:
+#line 77 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONG); }
+#line 5280 "strict_cpp_re.inc"
+yy747:
+    yyaccept = 69;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy748:
+#line 73 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_IF); }
+#line 5292 "strict_cpp_re.inc"
+yy749:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy758;
+    goto yy195;
+yy750:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy751;
+    if (yych == 't') goto yy752;
+    goto yy195;
+yy751:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy754;
+    goto yy195;
+yy752:
+    yyaccept = 70;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy753:
+#line 76 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INT); }
+#line 5320 "strict_cpp_re.inc"
+yy754:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 71;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy757:
+#line 75 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INLINE); }
+#line 5338 "strict_cpp_re.inc"
+yy758:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 72;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy762:
+#line 74 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->enable_import_keyword ? T_IMPORT : T_IDENTIFIER); }
+#line 5359 "strict_cpp_re.inc"
+yy763:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 73;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy766:
+#line 72 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_GOTO); }
+#line 5377 "strict_cpp_re.inc"
+yy767:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy782;
+    goto yy195;
+yy768:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy778;
+    goto yy195;
+yy769:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'r') goto yy776;
+    goto yy195;
+yy770:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 74;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy775:
+#line 71 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FRIEND); }
+#line 5416 "strict_cpp_re.inc"
+yy776:
+    yyaccept = 75;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy777:
+#line 70 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FOR); }
+#line 5428 "strict_cpp_re.inc"
+yy778:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 76;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy781:
+#line 69 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOAT); }
+#line 5446 "strict_cpp_re.inc"
+yy782:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 77;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy785:
+#line 68 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FALSE); }
+#line 5464 "strict_cpp_re.inc"
+yy786:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 's') goto yy808;
+    goto yy195;
+yy787:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'u') goto yy805;
+    goto yy195;
+yy788:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'p') goto yy789;
+    if (yych == 't') goto yy790;
+    goto yy195;
+yy789:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'l') goto yy795;
+    if (yych == 'o') goto yy796;
+    goto yy195;
+yy790:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 78;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy794:
+#line 67 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXTERN); }
+#line 5507 "strict_cpp_re.inc"
+yy795:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'i') goto yy800;
+    goto yy195;
+yy796:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 79;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy799:
+#line 66 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPORT); }
+#line 5530 "strict_cpp_re.inc"
+yy800:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 80;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy804:
+#line 65 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_EXPLICIT); }
+#line 5551 "strict_cpp_re.inc"
+yy805:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 81;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy807:
+#line 64 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ENUM); }
+#line 5566 "strict_cpp_re.inc"
+yy808:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 82;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy810:
+#line 63 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELSE); }
+#line 5581 "strict_cpp_re.inc"
+yy811:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'f') goto yy831;
+    if (yych == 'l') goto yy832;
+    goto yy195;
+yy812:
+    yyaccept = 83;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= '[') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy813;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych <= '@') goto yy813;
+            if (yych <= 'Z') goto yy194;
+        }
+    } else {
+        if (yych <= '`') {
+            if (yych <= '\\') goto yy196;
+            if (yych == '_') goto yy194;
+        } else {
+            if (yych == 'u') goto yy826;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy813:
+#line 60 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DO); }
+#line 5612 "strict_cpp_re.inc"
+yy814:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'm') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != '_') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 84;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy825:
+#line 62 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DYNAMICCAST); }
+#line 5654 "strict_cpp_re.inc"
+yy826:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'b') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 85;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy830:
+#line 61 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DOUBLE); }
+#line 5675 "strict_cpp_re.inc"
+yy831:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy837;
+    goto yy195;
+yy832:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 86;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy836:
+#line 59 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DELETE); }
+#line 5701 "strict_cpp_re.inc"
+yy837:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 87;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy841:
+#line 58 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DEFAULT); }
+#line 5722 "strict_cpp_re.inc"
+yy842:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy873;
+    if (yych <= 't') goto yy874;
+    goto yy195;
+yy843:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy870;
+    goto yy195;
+yy844:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy866;
+    goto yy195;
+yy845:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'l') goto yy195;
+    if (yych <= 'm') goto yy847;
+    if (yych >= 'o') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'r') goto yy195;
+    if (yych <= 's') goto yy851;
+    if (yych <= 't') goto yy852;
+    goto yy195;
+yy847:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'p') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 88;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy850:
+#line 190 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_COMPL_ALT); }
+#line 5769 "strict_cpp_re.inc"
+yy851:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy858;
+    goto yy195;
+yy852:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'i') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'n') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'u') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 89;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy857:
+#line 57 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONTINUE); }
+#line 5798 "strict_cpp_re.inc"
+yy858:
+    yyaccept = 90;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy859;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy860;
+            if (yych <= '`') goto yy859;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy859:
+#line 55 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONST); }
+#line 5822 "strict_cpp_re.inc"
+yy860:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 91;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy865:
+#line 56 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CONSTCAST); }
+#line 5846 "strict_cpp_re.inc"
+yy866:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 's') goto yy195;
+    yyaccept = 92;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy869:
+#line 54 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CLASS); }
+#line 5864 "strict_cpp_re.inc"
+yy870:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 93;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy872:
+#line 53 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CHAR); }
+#line 5879 "strict_cpp_re.inc"
+yy873:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'e') goto yy878;
+    goto yy195;
+yy874:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'c') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'h') goto yy195;
+    yyaccept = 94;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy877:
+#line 52 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CATCH); }
+#line 5902 "strict_cpp_re.inc"
+yy878:
+    yyaccept = 95;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy879:
+#line 51 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CASE); }
+#line 5914 "strict_cpp_re.inc"
+yy880:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 't') goto yy890;
+    goto yy195;
+yy881:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'o') goto yy887;
+    goto yy195;
+yy882:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'a') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'k') goto yy195;
+    yyaccept = 96;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy886:
+#line 50 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BREAK); }
+#line 5945 "strict_cpp_re.inc"
+yy887:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'l') goto yy195;
+    yyaccept = 97;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy889:
+#line 49 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_BOOL); }
+#line 5960 "strict_cpp_re.inc"
+yy890:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'a') goto yy891;
+    if (yych == 'o') goto yy892;
+    goto yy195;
+yy891:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'n') goto yy895;
+    goto yy195;
+yy892:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'r') goto yy195;
+    yyaccept = 98;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy894:
+#line 186 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_OR_ALT); }
+#line 5986 "strict_cpp_re.inc"
+yy895:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'd') goto yy195;
+    yyaccept = 99;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy897:
+#line 184 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_AND_ALT); }
+#line 6001 "strict_cpp_re.inc"
+yy898:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'd') goto yy906;
+    goto yy195;
+yy899:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych == 'm') goto yy904;
+    goto yy195;
+yy900:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 't') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'o') goto yy195;
+    yyaccept = 100;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy903:
+#line 48 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_AUTO); }
+#line 6029 "strict_cpp_re.inc"
+yy904:
+    yyaccept = 101;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy905:
+#line 47 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ASM); }
+#line 6041 "strict_cpp_re.inc"
+yy906:
+    yyaccept = 102;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych <= 'Z') {
+        if (yych <= '>') {
+            if (yych <= '/') goto yy907;
+            if (yych <= '9') goto yy194;
+        } else {
+            if (yych <= '?') goto yy197;
+            if (yych >= 'A') goto yy194;
+        }
+    } else {
+        if (yych <= '^') {
+            if (yych == '\\') goto yy196;
+        } else {
+            if (yych <= '_') goto yy908;
+            if (yych <= '`') goto yy907;
+            if (yych <= 'z') goto yy194;
+        }
+    }
+yy907:
+#line 219 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDAND_ALT); }
+#line 6065 "strict_cpp_re.inc"
+yy908:
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'e') goto yy195;
+    yyaccept = 1;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yych != 'q') goto yy195;
+    yyaccept = 103;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 4) {
+        goto yy194;
+    }
+    if (yych == '?') goto yy197;
+    if (yych == '\\') goto yy196;
+yy911:
+#line 205 "strict_cpp.re"
+    { BOOST_WAVE_RET(s->act_in_c99_mode ? T_IDENTIFIER : T_ANDASSIGN_ALT); }
+#line 6083 "strict_cpp_re.inc"
+yy912:
+    ++YYCURSOR;
+#line 166 "strict_cpp.re"
+    { 
+            if (s->act_in_c99_mode) {
+                --YYCURSOR;
+                BOOST_WAVE_RET(T_DOT);
+            }
+            else {
+                BOOST_WAVE_RET(T_DOTSTAR); 
+            }
+        }
+#line 6096 "strict_cpp_re.inc"
+yy914:
+    yych = *++YYCURSOR;
+    if (yych == '.') goto yy916;
+    goto yy98;
+yy915:
+    yych = *++YYCURSOR;
+    goto yy7;
+yy916:
+    ++YYCURSOR;
+#line 152 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_ELLIPSIS); }
+#line 6108 "strict_cpp_re.inc"
+yy918:
+    ++YYCURSOR;
+#line 199 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_DIVIDEASSIGN); }
+#line 6113 "strict_cpp_re.inc"
+yy920:
+    ++YYCURSOR;
+#line 44 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6118 "strict_cpp_re.inc"
+yy922:
+    ++YYCURSOR;
+#line 43 "strict_cpp.re"
+    { goto ccomment; }
+#line 6123 "strict_cpp_re.inc"
+}
+#line 308 "strict_cpp.re"
+
+
+ccomment:
+
+#line 6130 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0C) {
+        if (yych <= 0x08) {
+            if (yych <= 0x00) goto yy933;
+            goto yy935;
+        } else {
+            if (yych == 0x0A) goto yy928;
+            goto yy931;
+        }
+    } else {
+        if (yych <= 0x1F) {
+            if (yych <= 0x0D) goto yy930;
+            goto yy935;
+        } else {
+            if (yych != '*') goto yy932;
+        }
+    }
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == '/') goto yy938;
+yy927:
+#line 323 "strict_cpp.re"
+    { goto ccomment; }
+#line 6156 "strict_cpp_re.inc"
+yy928:
+    ++YYCURSOR;
+yy929:
+#line 315 "strict_cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF);*/
+        /*s->tok = cursor; */
+        s->line += count_backslash_newlines(s, cursor) +1;
+        cursor.column = 1;
+        goto ccomment;
+    }
+#line 6168 "strict_cpp_re.inc"
+yy930:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy937;
+    goto yy929;
+yy931:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy932:
+    yych = *++YYCURSOR;
+    goto yy927;
+yy933:
+    ++YYCURSOR;
+#line 326 "strict_cpp.re"
+    {
+        if(cursor == s->eof) 
+        {
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "unterminated 'C' style comment");
+        }
+        else
+        {
+            --YYCURSOR;                   // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character: '\\000' in input stream");
+        }
+    }
+#line 6197 "strict_cpp_re.inc"
+yy935:
+    ++YYCURSOR;
+#line 343 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();   // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6207 "strict_cpp_re.inc"
+yy937:
+    yych = *++YYCURSOR;
+    goto yy929;
+yy938:
+    ++YYCURSOR;
+#line 312 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_CCOMMENT); }
+#line 6215 "strict_cpp_re.inc"
+}
+#line 349 "strict_cpp.re"
+
+
+cppcomment:
+
+#line 6222 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 0x0A) {
+        if (yych <= 0x00) goto yy948;
+        if (yych <= 0x08) goto yy950;
+        if (yych <= 0x09) goto yy945;
+    } else {
+        if (yych <= 0x0C) goto yy945;
+        if (yych <= 0x0D) goto yy944;
+        if (yych <= 0x1F) goto yy950;
+        goto yy947;
+    }
+    ++YYCURSOR;
+yy943:
+#line 354 "strict_cpp.re"
+    {
+        /*if(cursor == s->eof) BOOST_WAVE_RET(T_EOF); */
+        /*s->tok = cursor; */
+        s->line++;
+        cursor.column = 1;
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6247 "strict_cpp_re.inc"
+yy944:
+    yych = *++YYCURSOR;
+    if (yych == 0x0A) goto yy952;
+    goto yy943;
+yy945:
+    ++YYCURSOR;
+yy946:
+#line 362 "strict_cpp.re"
+    { goto cppcomment; }
+#line 6257 "strict_cpp_re.inc"
+yy947:
+    yych = *++YYCURSOR;
+    goto yy946;
+yy948:
+    ++YYCURSOR;
+#line 365 "strict_cpp.re"
+    {
+        if (s->eof && cursor != s->eof) 
+        {
+            --YYCURSOR;                     // next call returns T_EOF
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+                "invalid character '\\000' in input stream");
+        }
+        
+        --YYCURSOR;                         // next call returns T_EOF
+        if (!s->single_line_only)
+        {
+            BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+            (*s->error_proc)(s, lexing_exception::generic_lexing_warning,
+                "Unterminated 'C++' style comment");
+        }
+        BOOST_WAVE_RET(T_CPPCOMMENT);
+    }
+#line 6282 "strict_cpp_re.inc"
+yy950:
+    ++YYCURSOR;
+#line 385 "strict_cpp.re"
+    {
+        // flag the error
+        BOOST_WAVE_UPDATE_CURSOR();     // adjust the input cursor
+        (*s->error_proc)(s, lexing_exception::generic_lexing_error,
+            "invalid character '\\%03o' in input stream", *--YYCURSOR);
+    }
+#line 6292 "strict_cpp_re.inc"
+yy952:
+    ++YYCURSOR;
+    yych = *YYCURSOR;
+    goto yy943;
+}
+#line 391 "strict_cpp.re"
+
+
+/* this subscanner is called whenever a pp_number has been started */
+pp_number:
+{
+    cursor = uchar_wrapper(s->tok = s->cur, s->column = s->curr_column);
+    marker = uchar_wrapper(s->ptr);
+    limit = uchar_wrapper(s->lim);
+
+    if (s->detect_pp_numbers) {
+    
+#line 6310 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,  64,   0, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,   0,   0,   0,   0,   0,   0, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,  64, 
+          0,  64,  64,  64,  64, 128,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,  64,  64,  64,  64,  64, 
+         64,  64,  64,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych == '.') goto yy956;
+    if (yych <= '/') goto yy955;
+    if (yych <= '9') goto yy957;
+yy955:
+    YYCURSOR = YYMARKER;
+    goto yy959;
+yy956:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy955;
+    if (yych >= ':') goto yy955;
+yy957:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy957;
+    }
+    if (yych <= 'Z') {
+        if (yych == '?') goto yy963;
+        if (yych >= 'A') goto yy960;
+    } else {
+        if (yych <= '\\') {
+            if (yych >= '\\') goto yy962;
+        } else {
+            if (yych == 'e') goto yy960;
+        }
+    }
+yy959:
+#line 403 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_PP_NUMBER); }
+#line 6379 "strict_cpp_re.inc"
+yy960:
+    YYMARKER = ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy960;
+    }
+    if (yych <= '?') {
+        if (yych <= '.') {
+            if (yych == '+') goto yy957;
+            if (yych <= ',') goto yy959;
+            goto yy957;
+        } else {
+            if (yych <= '/') goto yy959;
+            if (yych <= '9') goto yy957;
+            if (yych <= '>') goto yy959;
+            goto yy963;
+        }
+    } else {
+        if (yych <= '\\') {
+            if (yych <= '@') goto yy959;
+            if (yych <= 'Z') goto yy957;
+            if (yych <= '[') goto yy959;
+        } else {
+            if (yych <= '_') {
+                if (yych <= '^') goto yy959;
+                goto yy957;
+            } else {
+                if (yych <= '`') goto yy959;
+                if (yych <= 'z') goto yy957;
+                goto yy959;
+            }
+        }
+    }
+yy962:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == 'U') goto yy966;
+    if (yych == 'u') goto yy965;
+    goto yy955;
+yy963:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych != '?') goto yy955;
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych == '/') goto yy962;
+    goto yy955;
+yy965:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy974;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy974;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy974;
+        goto yy955;
+    }
+yy966:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy967;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy967:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy968;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy968:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy969;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy969:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy970;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy970:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy971;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy971:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy972;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy972:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy973;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy973:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+yy974:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy975;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy975:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych >= ':') goto yy955;
+    } else {
+        if (yych <= 'F') goto yy976;
+        if (yych <= '`') goto yy955;
+        if (yych >= 'g') goto yy955;
+    }
+yy976:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yych <= '@') {
+        if (yych <= '/') goto yy955;
+        if (yych <= '9') goto yy957;
+        goto yy955;
+    } else {
+        if (yych <= 'F') goto yy957;
+        if (yych <= '`') goto yy955;
+        if (yych <= 'f') goto yy957;
+        goto yy955;
+    }
+}
+#line 404 "strict_cpp.re"
+
+    }
+    else {
+    
+#line 6587 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    unsigned int yyaccept = 0;
+    static const unsigned char yybm[] = {
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+        224, 224, 224, 224, 224, 224, 224, 224, 
+        160, 160,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0, 128, 128, 128, 128, 128, 128,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+          0,   0,   0,   0,   0,   0,   0,   0, 
+    };
+    if ((YYLIMIT - YYCURSOR) < 4) YYFILL(4);
+    yych = *YYCURSOR;
+    if (yych <= '/') {
+        if (yych == '.') goto yy984;
+    } else {
+        if (yych <= '0') goto yy980;
+        if (yych <= '9') goto yy982;
+    }
+yy979:
+    YYCURSOR = YYMARKER;
+    if (yyaccept <= 0) {
+        goto yy981;
+    } else {
+        goto yy987;
+    }
+yy980:
+    yyaccept = 0;
+    yych = *(YYMARKER = ++YYCURSOR);
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= 'E') {
+        if (yych <= '/') {
+            if (yych == '.') goto yy985;
+        } else {
+            if (yych <= '9') goto yy1002;
+            if (yych >= 'E') goto yy995;
+        }
+    } else {
+        if (yych <= 'd') {
+            if (yych == 'X') goto yy1001;
+        } else {
+            if (yych <= 'e') goto yy995;
+            if (yych == 'x') goto yy1001;
+        }
+    }
+yy981:
+#line 411 "strict_cpp.re"
+    { goto integer_suffix; }
+#line 6664 "strict_cpp_re.inc"
+yy982:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 32) {
+        goto yy982;
+    }
+    if (yych <= 'D') {
+        if (yych == '.') goto yy985;
+        goto yy981;
+    } else {
+        if (yych <= 'E') goto yy995;
+        if (yych == 'e') goto yy995;
+        goto yy981;
+    }
+yy984:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy985:
+    yyaccept = 1;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= 'D') {
+            if (yych <= '/') goto yy987;
+            if (yych <= '9') goto yy985;
+        } else {
+            if (yych <= 'E') goto yy988;
+            if (yych <= 'F') goto yy989;
+        }
+    } else {
+        if (yych <= 'e') {
+            if (yych <= 'L') goto yy990;
+            if (yych >= 'e') goto yy988;
+        } else {
+            if (yych <= 'f') goto yy989;
+            if (yych == 'l') goto yy990;
+        }
+    }
+yy987:
+#line 409 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_FLOATLIT); }
+#line 6710 "strict_cpp_re.inc"
+yy988:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych == '+') goto yy992;
+        goto yy979;
+    } else {
+        if (yych <= '-') goto yy992;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy993;
+        goto yy979;
+    }
+yy989:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy991;
+    if (yych == 'l') goto yy991;
+    goto yy987;
+yy990:
+    yych = *++YYCURSOR;
+    if (yych == 'F') goto yy991;
+    if (yych != 'f') goto yy987;
+yy991:
+    yych = *++YYCURSOR;
+    goto yy987;
+yy992:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy993:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy993;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy995:
+    yych = *++YYCURSOR;
+    if (yych <= ',') {
+        if (yych != '+') goto yy979;
+    } else {
+        if (yych <= '-') goto yy996;
+        if (yych <= '/') goto yy979;
+        if (yych <= '9') goto yy997;
+        goto yy979;
+    }
+yy996:
+    yych = *++YYCURSOR;
+    if (yych <= '/') goto yy979;
+    if (yych >= ':') goto yy979;
+yy997:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
+    yych = *YYCURSOR;
+    if (yych <= 'K') {
+        if (yych <= '9') {
+            if (yych <= '/') goto yy987;
+            goto yy997;
+        } else {
+            if (yych == 'F') goto yy989;
+            goto yy987;
+        }
+    } else {
+        if (yych <= 'f') {
+            if (yych <= 'L') goto yy990;
+            if (yych <= 'e') goto yy987;
+            goto yy989;
+        } else {
+            if (yych == 'l') goto yy990;
+            goto yy987;
+        }
+    }
+yy999:
+    yyaccept = 0;
+    YYMARKER = ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 64) {
+        goto yy999;
+    }
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy981;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy981;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy981;
+        }
+    }
+yy1001:
+    yych = *++YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy979;
+yy1002:
+    ++YYCURSOR;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= '9') {
+        if (yych == '.') goto yy985;
+        if (yych <= '/') goto yy979;
+        goto yy1002;
+    } else {
+        if (yych <= 'E') {
+            if (yych <= 'D') goto yy979;
+            goto yy995;
+        } else {
+            if (yych == 'e') goto yy995;
+            goto yy979;
+        }
+    }
+yy1004:
+    ++YYCURSOR;
+    if (YYLIMIT == YYCURSOR) YYFILL(1);
+    yych = *YYCURSOR;
+    if (yybm[0+yych] & 128) {
+        goto yy1004;
+    }
+    goto yy981;
+}
+#line 412 "strict_cpp.re"
+
+    }
+}
+
+/* this subscanner is called, whenever a Integer was recognized */
+integer_suffix:
+{
+    if (s->enable_ms_extensions) {
+    
+#line 6859 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *(YYMARKER = YYCURSOR);
+    if (yych <= 'h') {
+        if (yych <= 'L') {
+            if (yych >= 'L') goto yy1010;
+        } else {
+            if (yych == 'U') goto yy1009;
+        }
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'i') goto yy1011;
+            if (yych >= 'l') goto yy1010;
+        } else {
+            if (yych == 'u') goto yy1009;
+        }
+    }
+yy1008:
+#line 425 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6881 "strict_cpp_re.inc"
+yy1009:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1018;
+    if (yych == 'l') goto yy1018;
+    goto yy1008;
+yy1010:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1017;
+        if (yych <= 'T') goto yy1008;
+        goto yy1016;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1008;
+            goto yy1017;
+        } else {
+            if (yych == 'u') goto yy1016;
+            goto yy1008;
+        }
+    }
+yy1011:
+    yych = *++YYCURSOR;
+    if (yych == '6') goto yy1013;
+yy1012:
+    YYCURSOR = YYMARKER;
+    goto yy1008;
+yy1013:
+    yych = *++YYCURSOR;
+    if (yych != '4') goto yy1012;
+yy1014:
+    ++YYCURSOR;
+yy1015:
+#line 422 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6916 "strict_cpp_re.inc"
+yy1016:
+    yych = *++YYCURSOR;
+    goto yy1008;
+yy1017:
+    yych = *++YYCURSOR;
+    if (yych == 'U') goto yy1014;
+    if (yych == 'u') goto yy1014;
+    goto yy1015;
+yy1018:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1014;
+    if (yych == 'l') goto yy1014;
+    goto yy1008;
+}
+#line 426 "strict_cpp.re"
+
+    }
+    else {
+    
+#line 6936 "strict_cpp_re.inc"
+{
+    YYCTYPE yych;
+    if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
+    yych = *YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1023;
+        if (yych >= 'U') goto yy1022;
+    } else {
+        if (yych <= 'l') {
+            if (yych >= 'l') goto yy1023;
+        } else {
+            if (yych == 'u') goto yy1022;
+        }
+    }
+yy1021:
+#line 434 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_INTLIT); }
+#line 6954 "strict_cpp_re.inc"
+yy1022:
+    yych = *++YYCURSOR;
+    if (yych == 'L') goto yy1028;
+    if (yych == 'l') goto yy1028;
+    goto yy1021;
+yy1023:
+    yych = *++YYCURSOR;
+    if (yych <= 'U') {
+        if (yych == 'L') goto yy1025;
+        if (yych <= 'T') goto yy1021;
+    } else {
+        if (yych <= 'l') {
+            if (yych <= 'k') goto yy1021;
+            goto yy1025;
+        } else {
+            if (yych != 'u') goto yy1021;
+        }
+    }
+    yych = *++YYCURSOR;
+    goto yy1021;
+yy1025:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'U') goto yy1027;
+    if (yych == 'u') goto yy1027;
+yy1026:
+#line 431 "strict_cpp.re"
+    { BOOST_WAVE_RET(T_LONGINTLIT); }
+#line 6982 "strict_cpp_re.inc"
+yy1027:
+    yych = *++YYCURSOR;
+    goto yy1026;
+yy1028:
+    ++YYCURSOR;
+    if ((yych = *YYCURSOR) == 'L') goto yy1027;
+    if (yych == 'l') goto yy1027;
+    goto yy1021;
+}
+#line 435 "strict_cpp.re"
+
+    }
+}
+>>>>>>> .merge-right.r46902
Modified: branches/CMake/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -34,8 +34,10 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+// if you want to use your own token type the following line must be adjusted
 typedef boost::wave::cpplexer::lex_token<> token_type;
 
+// no need to change anything below
 template struct boost::wave::grammars::expression_grammar_gen<token_type>;
 
 // the suffix header occurs after all of the code
Modified: branches/CMake/release/libs/wave/src/instantiate_cpp_grammar.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_cpp_grammar.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_cpp_grammar.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -34,7 +34,10 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+// if you want to use your own token type the following line must be adjusted
 typedef boost::wave::cpplexer::lex_token<> token_type;
+
+// no need to change anything below
 typedef boost::wave::cpplexer::lex_iterator<token_type> lexer_type;
 typedef std::list<token_type, boost::fast_pool_allocator<token_type> > 
     token_sequence_type;
Modified: branches/CMake/release/libs/wave/src/instantiate_cpp_literalgrs.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_cpp_literalgrs.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_cpp_literalgrs.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -36,6 +36,7 @@
 
 typedef boost::wave::cpplexer::lex_token<> token_type;
 
+// no need to change anything below
 template struct boost::wave::grammars::intlit_grammar_gen<token_type>;
 template struct boost::wave::grammars::chlit_grammar_gen<token_type>;
 
Modified: branches/CMake/release/libs/wave/src/instantiate_defined_grammar.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_defined_grammar.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_defined_grammar.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -33,9 +33,11 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
-typedef boost::wave::cpplexer::lex_iterator<
-        boost::wave::cpplexer::lex_token<> >
-    lexer_type;
+// if you want to use your own token type the following line must be adjusted
+typedef boost::wave::cpplexer::lex_token<> token_type;
+
+// no need to change anything below
+typedef boost::wave::cpplexer::lex_iterator<token_type> lexer_type;
 template struct boost::wave::grammars::defined_grammar_gen<lexer_type>;
 
 // the suffix header occurs after all of the code
Modified: branches/CMake/release/libs/wave/src/instantiate_predef_macros.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_predef_macros.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_predef_macros.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -33,9 +33,11 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
-typedef boost::wave::cpplexer::lex_iterator<
-        boost::wave::cpplexer::lex_token<> >
-    lexer_type;
+// if you want to use your own token type the following line must be adjusted
+typedef boost::wave::cpplexer::lex_token<> token_type;
+
+// no need to change anything below
+typedef boost::wave::cpplexer::lex_iterator<token_type> lexer_type;
 template struct boost::wave::grammars::predefined_macros_grammar_gen<lexer_type>;
 
 // the suffix header occurs after all of the code
Modified: branches/CMake/release/libs/wave/src/instantiate_re2c_lexer.cpp
==============================================================================
--- branches/CMake/release/libs/wave/src/instantiate_re2c_lexer.cpp	(original)
+++ branches/CMake/release/libs/wave/src/instantiate_re2c_lexer.cpp	2008-06-30 10:49:37 EDT (Mon, 30 Jun 2008)
@@ -47,6 +47,8 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+// if you want to use another iterator type for the underlying input stream
+// a corresponding explicit template instantiation needs to be added below
 template struct boost::wave::cpplexer::new_lexer_gen<
     BOOST_WAVE_STRINGTYPE::iterator>;
 template struct boost::wave::cpplexer::new_lexer_gen<