Boost logo

Boost-Commit :

From: hartmut.kaiser_at_[hidden]
Date: 2008-06-22 12:16:29


Author: hkaiser
Date: 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
New Revision: 46614
URL: http://svn.boost.org/trac/boost/changeset/46614

Log:
Merged Wave from trunk
Added:
   branches/release/libs/wave/samples/preprocess_pragma_output/
      - copied from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/
   branches/release/libs/wave/samples/preprocess_pragma_output/build/
      - copied from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/build/
   branches/release/libs/wave/samples/preprocess_pragma_output/build/Jamfile.v2
      - copied unchanged from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/build/Jamfile.v2
   branches/release/libs/wave/samples/preprocess_pragma_output/example.cpp
      - copied unchanged from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/example.cpp
   branches/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.cpp
      - copied unchanged from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.cpp
   branches/release/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.hpp
      - copied unchanged from r46578, /trunk/libs/wave/samples/preprocess_pragma_output/preprocess_pragma_output.hpp
   branches/release/libs/wave/test/testwave/collect_hooks_information.hpp
      - copied unchanged from r46570, /trunk/libs/wave/test/testwave/collect_hooks_information.hpp
   branches/release/libs/wave/test/testwave/testfiles/t_1_038.cpp
      - copied unchanged from r46570, /trunk/libs/wave/test/testwave/testfiles/t_1_038.cpp
   branches/release/libs/wave/test/testwave/testfiles/t_2_018.cpp
      - copied unchanged from r46570, /trunk/libs/wave/test/testwave/testfiles/t_2_018.cpp
   branches/release/libs/wave/test/testwave/testfiles/t_9_019.cpp
      - copied unchanged from r46578, /trunk/libs/wave/test/testwave/testfiles/t_9_019.cpp
   branches/release/libs/wave/test/testwave/testfiles/t_9_019.hpp
      - copied unchanged from r46578, /trunk/libs/wave/test/testwave/testfiles/t_9_019.hpp
Properties modified:
   branches/release/libs/wave/ChangeLog (contents, props changed)
   branches/release/libs/wave/samples/waveidl/idllexer/idl.re (contents, props changed)
   branches/release/libs/wave/src/cpplexer/re2clex/cpp.re (contents, props changed)
   branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc (contents, props changed)
   branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re (contents, props changed)
   branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc (contents, props changed)
   branches/release/libs/wave/test/testwave/testfiles/test.cfg (contents, props changed)
Text files modified:
   branches/release/boost/wave/cpp_context.hpp | 124
   branches/release/boost/wave/cpp_iteration_context.hpp | 79
   branches/release/boost/wave/cpp_throw.hpp | 30
   branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp | 3
   branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp | 1
   branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp | 117
   branches/release/boost/wave/cpplexer/cpp_lex_token.hpp | 47
   branches/release/boost/wave/cpplexer/detect_include_guards.hpp | 48
   branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp | 23
   branches/release/boost/wave/grammars/cpp_chlit_grammar.hpp | 83
   branches/release/boost/wave/grammars/cpp_defined_grammar.hpp | 45
   branches/release/boost/wave/grammars/cpp_defined_grammar_gen.hpp | 20
   branches/release/boost/wave/grammars/cpp_expression_grammar.hpp | 47
   branches/release/boost/wave/grammars/cpp_grammar.hpp | 151
   branches/release/boost/wave/grammars/cpp_grammar_gen.hpp | 8
   branches/release/boost/wave/grammars/cpp_intlit_grammar.hpp | 64
   branches/release/boost/wave/grammars/cpp_predef_macros_gen.hpp | 4
   branches/release/boost/wave/grammars/cpp_predef_macros_grammar.hpp | 19
   branches/release/boost/wave/preprocessing_hooks.hpp | 4
   branches/release/boost/wave/token_ids.hpp | 2
   branches/release/boost/wave/util/cpp_include_paths.hpp | 4
   branches/release/boost/wave/util/cpp_iterator.hpp | 646 +
   branches/release/boost/wave/util/cpp_macromap.hpp | 75
   branches/release/boost/wave/util/cpp_macromap_utils.hpp | 55
   branches/release/boost/wave/util/file_position.hpp | 22
   branches/release/boost/wave/util/flex_string.hpp | 1
   branches/release/boost/wave/util/functor_input.hpp | 4
   branches/release/boost/wave/util/insert_whitespace_detection.hpp | 14
   branches/release/boost/wave/util/interpret_pragma.hpp | 41
   branches/release/boost/wave/util/macro_definition.hpp | 24
   branches/release/boost/wave/util/macro_helpers.hpp | 53
   branches/release/boost/wave/util/pattern_parser.hpp | 5
   branches/release/boost/wave/util/symbol_table.hpp | 13
   branches/release/boost/wave/util/time_conversion_helper.hpp | 33
   branches/release/boost/wave/util/unput_queue_iterator.hpp | 34
   branches/release/boost/wave/wave_config.hpp | 44
   branches/release/boost/wave/wave_version.hpp | 6
   branches/release/libs/wave/ChangeLog | 3475 +++++----
   branches/release/libs/wave/doc/compiletime_config.html | 17
   branches/release/libs/wave/doc/tracing_facility.html | 2
   branches/release/libs/wave/samples/Jamfile.v2 | 1
   branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp | 2
   branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp | 19
   branches/release/libs/wave/samples/cpp_tokens/slex/lexer.hpp | 16
   branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp | 105
   branches/release/libs/wave/samples/hannibal/hannibal.cpp | 14
   branches/release/libs/wave/samples/hannibal/translation_unit_parser.h | 24
   branches/release/libs/wave/samples/hannibal/translation_unit_skipper.h | 12
   branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp | 15
   branches/release/libs/wave/samples/list_includes/list_includes.cpp | 2
   branches/release/libs/wave/samples/quick_start/quick_start.cpp | 17
   branches/release/libs/wave/samples/token_statistics/token_statistics.cpp | 2
   branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp | 2
   branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp | 9
   branches/release/libs/wave/samples/waveidl/idl.cpp | 2
   branches/release/libs/wave/samples/waveidl/idllexer/idl.re | 48
   branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp | 9
   branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp | 2
   branches/release/libs/wave/src/cpplexer/re2clex/cpp.re | 840 +-
   branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc | 14012 ++++++++++++++++++++--------------------
   branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re | 840 +-
   branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc | 13988 +++++++++++++++++++-------------------
   branches/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp | 2
   branches/release/libs/wave/src/instantiate_cpp_grammar.cpp | 3
   branches/release/libs/wave/src/instantiate_cpp_literalgrs.cpp | 1
   branches/release/libs/wave/src/instantiate_defined_grammar.cpp | 8
   branches/release/libs/wave/src/instantiate_predef_macros.cpp | 8
   branches/release/libs/wave/src/instantiate_re2c_lexer.cpp | 2
   branches/release/libs/wave/test/build/Jamfile.v2 | 2
   branches/release/libs/wave/test/testlexers/test_slex_lexer.cpp | 2
   branches/release/libs/wave/test/testwave/testfiles/t_1_001.cpp | 16
   branches/release/libs/wave/test/testwave/testfiles/t_1_002.cpp | 9
   branches/release/libs/wave/test/testwave/testfiles/t_1_003.cpp | 31
   branches/release/libs/wave/test/testwave/testfiles/t_1_004.cpp | 56
   branches/release/libs/wave/test/testwave/testfiles/t_1_005.cpp | 10
   branches/release/libs/wave/test/testwave/testfiles/t_1_006.cpp | 30
   branches/release/libs/wave/test/testwave/testfiles/t_1_007.cpp | 29
   branches/release/libs/wave/test/testwave/testfiles/t_1_008.cpp | 105
   branches/release/libs/wave/test/testwave/testfiles/t_1_009.cpp | 10
   branches/release/libs/wave/test/testwave/testfiles/t_1_010.cpp | 10
   branches/release/libs/wave/test/testwave/testfiles/t_1_011.cpp | 13
   branches/release/libs/wave/test/testwave/testfiles/t_1_012.cpp | 27
   branches/release/libs/wave/test/testwave/testfiles/t_1_013.cpp | 53
   branches/release/libs/wave/test/testwave/testfiles/t_1_014.cpp | 2
   branches/release/libs/wave/test/testwave/testfiles/t_1_015.cpp | 9
   branches/release/libs/wave/test/testwave/testfiles/t_1_016.cpp | 11
   branches/release/libs/wave/test/testwave/testfiles/t_1_020.cpp | 12
   branches/release/libs/wave/test/testwave/testfiles/t_1_021.cpp | 21
   branches/release/libs/wave/test/testwave/testfiles/t_1_022.cpp | 12
   branches/release/libs/wave/test/testwave/testfiles/t_1_023.cpp | 13
   branches/release/libs/wave/test/testwave/testfiles/t_1_025.cpp | 15
   branches/release/libs/wave/test/testwave/testfiles/t_1_026.cpp | 3
   branches/release/libs/wave/test/testwave/testfiles/t_1_029.cpp | 21
   branches/release/libs/wave/test/testwave/testfiles/t_1_030.cpp | 16
   branches/release/libs/wave/test/testwave/testfiles/t_1_031.cpp | 9
   branches/release/libs/wave/test/testwave/testfiles/t_1_033.cpp | 15
   branches/release/libs/wave/test/testwave/testfiles/t_1_034.cpp | 16
   branches/release/libs/wave/test/testwave/testfiles/t_1_035.cpp | 23
   branches/release/libs/wave/test/testwave/testfiles/t_1_036.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_1_037.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_2_001.cpp | 14
   branches/release/libs/wave/test/testwave/testfiles/t_2_002.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_2_003.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_2_004.cpp | 16
   branches/release/libs/wave/test/testwave/testfiles/t_2_005.cpp | 2
   branches/release/libs/wave/test/testwave/testfiles/t_2_006.cpp | 13
   branches/release/libs/wave/test/testwave/testfiles/t_2_007.cpp | 12
   branches/release/libs/wave/test/testwave/testfiles/t_2_008.cpp | 11
   branches/release/libs/wave/test/testwave/testfiles/t_2_009.cpp | 33
   branches/release/libs/wave/test/testwave/testfiles/t_2_010.cpp | 8
   branches/release/libs/wave/test/testwave/testfiles/t_2_011.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_2_012.cpp | 3
   branches/release/libs/wave/test/testwave/testfiles/t_2_013.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_2_014.cpp | 28
   branches/release/libs/wave/test/testwave/testfiles/t_2_015.cpp | 11
   branches/release/libs/wave/test/testwave/testfiles/t_2_016.cpp | 7
   branches/release/libs/wave/test/testwave/testfiles/t_2_017.cpp | 12
   branches/release/libs/wave/test/testwave/testfiles/t_3_001.cpp | 3
   branches/release/libs/wave/test/testwave/testfiles/t_3_002.cpp | 19
   branches/release/libs/wave/test/testwave/testfiles/t_3_003.cpp | 22
   branches/release/libs/wave/test/testwave/testfiles/t_3_004.cpp | 25
   branches/release/libs/wave/test/testwave/testfiles/t_4_001.cpp | 4
   branches/release/libs/wave/test/testwave/testfiles/t_4_002.cpp | 9
   branches/release/libs/wave/test/testwave/testfiles/t_4_004.cpp | 26
   branches/release/libs/wave/test/testwave/testfiles/t_5_030.cpp | 4
   branches/release/libs/wave/test/testwave/testfiles/t_6_023.cpp | 2
   branches/release/libs/wave/test/testwave/testfiles/t_6_063.cpp | 5
   branches/release/libs/wave/test/testwave/testfiles/t_6_067.cpp | 5
   branches/release/libs/wave/test/testwave/testfiles/t_9_001.cpp | 3
   branches/release/libs/wave/test/testwave/testfiles/t_9_002.cpp | 3
   branches/release/libs/wave/test/testwave/testfiles/t_9_003.cpp | 26
   branches/release/libs/wave/test/testwave/testfiles/t_9_004.cpp | 7
   branches/release/libs/wave/test/testwave/testfiles/t_9_006.cpp | 8
   branches/release/libs/wave/test/testwave/testfiles/t_9_007.cpp | 5
   branches/release/libs/wave/test/testwave/testfiles/t_9_008.cpp | 5
   branches/release/libs/wave/test/testwave/testfiles/t_9_009.cpp | 11
   branches/release/libs/wave/test/testwave/testfiles/t_9_010.cpp | 41
   branches/release/libs/wave/test/testwave/testfiles/t_9_011.cpp | 11
   branches/release/libs/wave/test/testwave/testfiles/t_9_012.cpp | 6
   branches/release/libs/wave/test/testwave/testfiles/t_9_013.cpp | 4
   branches/release/libs/wave/test/testwave/testfiles/t_9_016.cpp | 22
   branches/release/libs/wave/test/testwave/testfiles/t_9_017.cpp | 27
   branches/release/libs/wave/test/testwave/testfiles/t_9_018.cpp | 5
   branches/release/libs/wave/test/testwave/testfiles/test.cfg | 4
   branches/release/libs/wave/test/testwave/testwave.cpp | 8
   branches/release/libs/wave/test/testwave/testwave_app.cpp | 245
   branches/release/libs/wave/test/testwave/testwave_app.hpp | 14
   branches/release/tools/wave/cpp.cpp | 21
   branches/release/tools/wave/cpp_config.hpp | 2
   branches/release/tools/wave/cpp_version.hpp | 4
   150 files changed, 19228 insertions(+), 17677 deletions(-)

Modified: branches/release/boost/wave/cpp_context.hpp
==============================================================================
--- branches/release/boost/wave/cpp_context.hpp (original)
+++ branches/release/boost/wave/cpp_context.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,6 +19,9 @@
 #include <boost/concept_check.hpp>
 #include <boost/noncopyable.hpp>
 #include <boost/filesystem/path.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/type_traits/is_same.hpp>
+#include <boost/pool/pool_alloc.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #if BOOST_WAVE_SERIALIZATION != 0
@@ -69,17 +72,29 @@
 // defaults to the
 // context_policies::default_preprocessing_hooks
 // type.
+// DerivedT The type of the type being derived from the context
+// type (if any). This template parameter is optional and
+// defaults to 'this_type', which means that the context
+// type will be used assuming no derived type exists.
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+struct this_type {};
+
 template <
     typename IteratorT,
     typename LexIteratorT,
     typename InputPolicyT = iteration_context_policies::load_file_to_string,
- typename HooksT = context_policies::eat_whitespace<typename LexIteratorT::token_type>
+ typename HooksT = context_policies::eat_whitespace<typename LexIteratorT::token_type>,
+ typename DerivedT = this_type
>
 class context : private boost::noncopyable
 {
+private:
+ typedef typename mpl::if_<
+ is_same<DerivedT, this_type>, context, DerivedT
+ >::type actual_context_type;
+
 public:
 
 // concept checks
@@ -88,21 +103,19 @@
     
 // public typedefs
     typedef typename LexIteratorT::token_type token_type;
- typedef context<IteratorT, LexIteratorT, InputPolicyT, HooksT>
- self_type;
-
+ typedef typename token_type::string_type string_type;
+
     typedef IteratorT target_iterator_type;
     typedef LexIteratorT lexer_type;
- typedef pp_iterator<self_type> iterator_type;
+ typedef pp_iterator<context> iterator_type;
 
     typedef InputPolicyT input_policy_type;
     typedef typename token_type::position_type position_type;
 
-
 // type of a token sequence
     typedef std::list<token_type, boost::fast_pool_allocator<token_type> >
         token_sequence_type;
-// types of the policies
+// type of the policies
     typedef HooksT hook_policy_type;
     
 private:
@@ -182,42 +195,55 @@
 
 // maintain defined macros
 #if BOOST_WAVE_ENABLE_COMMANDLINE_MACROS != 0
- bool add_macro_definition(std::string macrostring,
- bool is_predefined = false)
- { return boost::wave::util::add_macro_definition(*this, macrostring,
- is_predefined, get_language()); }
+ template <typename StringT>
+ bool add_macro_definition(StringT macrostring, bool is_predefined = false)
+ {
+ return boost::wave::util::add_macro_definition(*this,
+ util::to_string<std::string>(macrostring), is_predefined,
+ get_language());
+ }
 #endif
- bool add_macro_definition(token_type const &name, bool has_params,
- std::vector<token_type> &parameters, token_sequence_type &definition,
- bool is_predefined = false)
- { return macros.add_macro(name, has_params, parameters, definition,
- is_predefined); }
+// Define and undefine macros, macro introspection
+ template <typename StringT>
+ bool add_macro_definition(StringT const &name, position_type const& pos,
+ bool has_params, std::vector<token_type> &parameters,
+ token_sequence_type &definition, bool is_predefined = false)
+ {
+ return macros.add_macro(
+ token_type(T_IDENTIFIER, util::to_string<string_type>(name), pos),
+ has_params, parameters, definition, is_predefined);
+ }
     template <typename StringT>
     bool is_defined_macro(StringT const &str) const
- { return macros.is_defined(str); }
- bool get_macro_definition(typename token_type::string_type const &name,
- bool &has_params, bool &is_predefined, position_type &pos,
- std::vector<token_type> &parameters,
- token_sequence_type &definition) const
- {
- return macros.get_macro(name, has_params, is_predefined, pos,
- parameters, definition);
- }
- bool remove_macro_definition(typename token_type::string_type const &name,
+ {
+ return macros.is_defined(util::to_string<string_type>(str));
+ }
+ template <typename StringT>
+ bool get_macro_definition(StringT const &name,
+ bool &has_params, bool &is_predefined, position_type &pos,
+ std::vector<token_type> &parameters,
+ token_sequence_type &definition) const
+ {
+ return macros.get_macro(util::to_string<string_type>(name),
+ has_params, is_predefined, pos, parameters, definition);
+ }
+ template <typename StringT>
+ bool remove_macro_definition(StringT const &name,
             bool even_predefined = false)
- {
+ {
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- // ensure this gets removed from the list of include guards as well
- includes.remove_pragma_once_header(std::string(name.c_str()));
+ // ensure this gets removed from the list of include guards as well
+ includes.remove_pragma_once_header(
+ util::to_string<std::string>(name));
 #endif
- return macros.remove_macro(
- token_type(T_IDENTIFIER, name, macros.get_main_pos()),
- even_predefined);
- }
+ return macros.remove_macro(util::to_string<string_type>(name),
+ macros.get_main_pos(), even_predefined);
+ }
     void reset_macro_definitions()
         { macros.reset_macromap(); macros.init_predefined_macros(); }
 
- typedef boost::wave::util::macromap<self_type> macromap_type;
+// Iterate over names of defined macros
+ typedef boost::wave::util::macromap<context> macromap_type;
     typedef typename macromap_type::name_iterator name_iterator;
     typedef typename macromap_type::const_name_iterator const_name_iterator;
     
@@ -226,16 +252,26 @@
     const_name_iterator macro_names_begin() const { return macros.begin(); }
     const_name_iterator macro_names_end() const { return macros.end(); }
 
+// This version now is used internally mainly, but since it was a documented
+// API function we leave it in the public interface.
+ bool add_macro_definition(token_type const &name, bool has_params,
+ std::vector<token_type> &parameters, token_sequence_type &definition,
+ bool is_predefined = false)
+ {
+ return macros.add_macro(name, has_params, parameters, definition,
+ is_predefined);
+ }
+
 // get the Wave version information
     static std::string get_version()
     {
         boost::wave::util::predefined_macros p;
- return p.get_fullversion().c_str();
+ return util::to_string<std::string>(p.get_fullversion());
     }
     static std::string get_version_string()
     {
         boost::wave::util::predefined_macros p;
- return p.get_versionstr().c_str();
+ return util::to_string<std::string>(p.get_versionstr());
     }
 
 // access current language options
@@ -257,16 +293,20 @@
 // access the policies
     hook_policy_type &get_hooks() { return hooks; }
 
+// return type of actually used context type (might be the derived type)
+ actual_context_type& derived()
+ { return *static_cast<actual_context_type*>(this); }
+ actual_context_type const& derived() const
+ { return *static_cast<actual_context_type const*>(this); }
+
 // return the directory of the currently preprocessed file
     boost::filesystem::path get_current_directory() const
         { return includes.get_current_directory(); }
 
 #if !defined(BOOST_NO_MEMBER_TEMPLATE_FRIENDS)
 protected:
- friend class boost::wave::pp_iterator<
- boost::wave::context<IteratorT, lexer_type, InputPolicyT, HooksT> >;
- friend class boost::wave::impl::pp_iterator_functor<
- boost::wave::context<IteratorT, lexer_type, InputPolicyT, HooksT> >;
+ friend class boost::wave::pp_iterator<context>;
+ friend class boost::wave::impl::pp_iterator_functor<context>;
 #endif
 
 // make sure the context has been initialized
@@ -377,7 +417,6 @@
     void save(Archive & ar, const unsigned int version) const
     {
         using namespace boost::serialization;
- typedef typename token_type::string_type string_type;
         
         string_type cfg(BOOST_PP_STRINGIZE(BOOST_WAVE_CONFIG));
         string_type kwd(BOOST_WAVE_PRAGMA_KEYWORD);
@@ -402,7 +441,6 @@
         }
         
         // check compatibility of the stored information
- typedef typename token_type::string_type string_type;
         string_type config, pragma_keyword, string_type_str;
         
         // BOOST_PP_STRINGIZE(BOOST_WAVE_CONFIG)
@@ -438,7 +476,7 @@
         }
         catch (boost::wave::preprocess_exception const& e) {
         // catch version mismatch exceptions and call error handler
- get_hooks().throw_exception(*this, e);
+ get_hooks().throw_exception(derived(), e);
         }
     }
     BOOST_SERIALIZATION_SPLIT_MEMBER()

Modified: branches/release/boost/wave/cpp_iteration_context.hpp
==============================================================================
--- branches/release/boost/wave/cpp_iteration_context.hpp (original)
+++ branches/release/boost/wave/cpp_iteration_context.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,7 +22,7 @@
 #include <boost/wave/cpp_exceptions.hpp>
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp> // make_multi_pass
+// #include <boost/spirit/include/iterator/classic_multi_pass.hpp> // make_multi_pass
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -37,9 +37,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 //
 // The iteration_context_policies templates are policies for the
-// boost::wave::iteration_context which allows to control, how a given input file
-// is to be represented by a pair of iterators pointing to the begin and
-// the end of the resulting input sequence.
+// boost::wave::iteration_context which allows to control, how a given
+// input file is to be represented by a pair of iterators pointing to the
+// begin and the end of the resulting input sequence.
 //
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -60,10 +60,11 @@
             template <typename PositionT>
             static
             void init_iterators(IterContextT &iter_ctx,
- PositionT const &act_pos)
+ PositionT const &act_pos, language_support language)
             {
                 typedef typename IterContextT::iterator_type iterator_type;
                 
+ // read in the file
                 std::ifstream instream(iter_ctx.filename.c_str());
                 if (!instream.is_open()) {
                     BOOST_WAVE_THROW_CTX(iter_ctx.ctx, preprocess_exception,
@@ -72,70 +73,18 @@
                 }
                 instream.unsetf(std::ios::skipws);
                 
-#if defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
- // this is known to be very slow for large files on some systems
- std::copy (istream_iterator<char>(instream),
- istream_iterator<char>(),
- std::inserter(iter_ctx.instring, iter_ctx.instring.end()));
-#else
- iter_ctx.instring = std::string(
+ iter_ctx.instring.assign(
                     std::istreambuf_iterator<char>(instream.rdbuf()),
                     std::istreambuf_iterator<char>());
-#endif // defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
 
- iter_ctx.first = iterator_type(iter_ctx.instring.begin(),
- iter_ctx.instring.end(), PositionT(iter_ctx.filename),
- iter_ctx.language);
- iter_ctx.last = iterator_type();
- }
-
- private:
- std::string instring;
- };
- };
-
-///////////////////////////////////////////////////////////////////////////////
-//
-// load_file
-//
-// The load_file policy opens a given file and returns the wrapped
-// istreambuf_iterators.
-//
-///////////////////////////////////////////////////////////////////////////////
- struct load_file
- {
- template <typename IterContextT>
- class inner {
-
- public:
- ~inner() { if (instream.is_open()) instream.close(); }
-
- template <typename PositionT>
- static
- void init_iterators(IterContextT &iter_ctx,
- PositionT const &act_pos)
- {
- typedef typename IterContextT::iterator_type iterator_type;
-
- iter_ctx.instream.open(iter_ctx.filename.c_str());
- if (!iter_ctx.instream.is_open()) {
- BOOST_WAVE_THROW_CTX(iter_ctx.ctx, preprocess_exception,
- bad_include_file, iter_ctx.filename.c_str(), act_pos);
- return;
- }
- iter_ctx.instream.unsetf(std::ios::skipws);
-
- using boost::spirit::make_multi_pass;
                 iter_ctx.first = iterator_type(
- make_multi_pass(std::istreambuf_iterator<char>(
- iter_ctx.instream.rdbuf())),
- make_multi_pass(std::istreambuf_iterator<char>()),
- PositionT(iter_ctx.filename), iter_ctx.language);
+ iter_ctx.instring.begin(), iter_ctx.instring.end(),
+ PositionT(iter_ctx.filename), language);
                 iter_ctx.last = iterator_type();
             }
 
         private:
- std::ifstream instream;
+ std::string instring;
         };
     };
     
@@ -189,13 +138,11 @@
     iteration_context(ContextT& ctx, BOOST_WAVE_STRINGTYPE const &fname,
             position_type const &act_pos,
             boost::wave::language_support language_)
- : base_iteration_context<ContextT, IteratorT>(ctx, fname),
- language(language_)
+ : base_iteration_context<ContextT, IteratorT>(ctx, fname)
     {
- InputPolicyT::template inner<self_type>::init_iterators(*this, act_pos);
+ InputPolicyT::template inner<self_type>::init_iterators(
+ *this, act_pos, language_);
     }
-
- boost::wave::language_support language;
 };
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/wave/cpp_throw.hpp
==============================================================================
--- branches/release/boost/wave/cpp_throw.hpp (original)
+++ branches/release/boost/wave/cpp_throw.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -42,8 +42,8 @@
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
         std::string throwmsg = stream.str(); stream.freeze(false); \
- ctx.get_hooks().throw_exception(ctx, cls(throwmsg.c_str(), cls::code, \
- (act_pos).get_line(), (act_pos).get_column(), \
+ ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
+ cls::code, (act_pos).get_line(), (act_pos).get_column(), \
             (act_pos).get_file().c_str())); \
     } \
     /**/
@@ -70,9 +70,9 @@
             << cls::error_text(cls::code); \
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
- ctx.get_hooks().throw_exception(ctx, cls(stream.str().c_str(), \
- cls::code, (act_pos).get_line(), (act_pos).get_column(), \
- (act_pos).get_file().c_str())); \
+ ctx.get_hooks().throw_exception(ctx.derived(), \
+ cls(stream.str().c_str(), cls::code, (act_pos).get_line(), \
+ (act_pos).get_column(), (act_pos).get_file().c_str())); \
     } \
     /**/
 #endif // BOOST_NO_STRINGSTREAM
@@ -92,8 +92,8 @@
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
         std::string throwmsg = stream.str(); stream.freeze(false); \
- ctx.get_hooks().throw_exception(ctx, cls(throwmsg.c_str(), cls::code, \
- (act_pos).get_line(), (act_pos).get_column(), \
+ ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
+ cls::code, (act_pos).get_line(), (act_pos).get_column(), \
             (act_pos).get_file().c_str(), (name))); \
     } \
     /**/
@@ -107,9 +107,9 @@
             << cls::error_text(cls::code); \
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
- ctx.get_hooks().throw_exception(ctx, cls(stream.str().c_str(), \
- cls::code, (act_pos).get_line(), (act_pos).get_column(), \
- (act_pos).get_file().c_str(), (name))); \
+ ctx.get_hooks().throw_exception(ctx.derived(), \
+ cls(stream.str().c_str(), cls::code, (act_pos).get_line(), \
+ (act_pos).get_column(), (act_pos).get_file().c_str(), (name))); \
     } \
     /**/
 #endif // BOOST_NO_STRINGSTREAM
@@ -129,8 +129,8 @@
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
         std::string throwmsg = stream.str(); stream.freeze(false); \
- ctx.get_hooks().throw_exception(ctx, cls(throwmsg.c_str(), code, \
- (act_pos).get_line(), (act_pos).get_column(), \
+ ctx.get_hooks().throw_exception(ctx.derived(), cls(throwmsg.c_str(), \
+ code, (act_pos).get_line(), (act_pos).get_column(), \
             (act_pos).get_file().c_str())); \
     } \
     /**/
@@ -144,9 +144,9 @@
             << cls::error_text(code); \
         if ((msg)[0] != 0) stream << ": " << (msg); \
         stream << std::ends; \
- ctx.get_hooks().throw_exception(ctx, cls(stream.str().c_str(), code, \
- (act_pos).get_line(), (act_pos).get_column(), \
- (act_pos).get_file().c_str())); \
+ ctx.get_hooks().throw_exception(ctx.derived(), \
+ cls(stream.str().c_str(), code, (act_pos).get_line(), \
+ (act_pos).get_column(), (act_pos).get_file().c_str())); \
     } \
     /**/
 #endif // BOOST_NO_STRINGSTREAM

Modified: branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_interface.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -46,9 +46,10 @@
 {
     typedef typename TokenT::position_type position_type;
     
+ lex_input_interface() {}
     virtual ~lex_input_interface() {}
     
- virtual TokenT get() = 0;
+ virtual TokenT& get(TokenT&) = 0;
     virtual void set_position(position_type const &pos) = 0;
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
     virtual bool has_include_guards(std::string& guard_name) const = 0;

Modified: branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_interface_generator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -76,6 +76,7 @@
 {
     typedef typename lex_input_interface<TokenT>::position_type position_type;
     
+ lex_input_interface_generator() {}
     ~lex_input_interface_generator() {}
     
 // The new_lexer function allows the opaque generation of a new lexer object.

Modified: branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,13 +14,13 @@
 #define CPP_LEX_ITERATOR_HPP_AF0C37E3_CBD8_4F33_A225_51CF576FA61F_INCLUDED
 
 #include <string>
-#include <iostream>
 
 #include <boost/assert.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/intrusive_ptr.hpp>
 
 #include <boost/wave/wave_config.hpp>
+#include <boost/spirit/include/support_multi_pass.hpp>
+
 #include <boost/wave/util/file_position.hpp>
 #include <boost/wave/util/functor_input.hpp>
 #include <boost/wave/cpplexer/cpp_lex_interface_generator.hpp>
@@ -32,7 +32,7 @@
 #include BOOST_ABI_PREFIX
 #endif
 
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 #define BOOST_WAVE_EOF_PREFIX static
 #else
 #define BOOST_WAVE_EOF_PREFIX
@@ -56,45 +56,55 @@
     typedef typename TokenT::position_type position_type;
 
 public:
- template <typename IteratorT>
- lex_iterator_functor_shim(IteratorT const &first, IteratorT const &last,
- position_type const &pos, boost::wave::language_support language)
- : functor_ptr(lex_input_interface_generator<TokenT>
- ::new_lexer(first, last, pos, language))
-#if 0 != __DECCXX_VER || BOOST_INTEL_CXX_VERSION > 900 || defined(__PGI)
- , eof()
-#endif // 0 != __DECCXX_VER
+ lex_iterator_functor_shim()
+#if /*0 != __DECCXX_VER || */defined(__PGI)
+ : eof()
+#endif
     {}
 
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
+ lex_iterator_functor_shim& operator= (lex_iterator_functor_shim const& rhs)
+ { return *this; } // nothing to do here
+#endif
+
+// interface to the multi_pass_policies::split_functor_input policy
     typedef TokenT result_type;
+ typedef lex_iterator_functor_shim unique;
+ typedef lex_input_interface<TokenT>* shared;
 
     BOOST_WAVE_EOF_PREFIX result_type const eof;
     
- result_type operator()()
+ template <typename MultiPass>
+ static result_type& get_next(MultiPass& mp, result_type& result)
     {
- BOOST_ASSERT(0 != functor_ptr.get());
- return functor_ptr->get();
+ return mp.shared->ftor->get(result);
     }
- void set_position(position_type const &pos)
+
+ // this will be called whenever the last reference to a multi_pass will
+ // be released
+ template <typename MultiPass>
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared->ftor;
+ }
+
+ template <typename MultiPass>
+ static void set_position(MultiPass& mp, position_type const &pos)
     {
- BOOST_ASSERT(0 != functor_ptr.get());
- functor_ptr->set_position(pos);
+ mp.shared->ftor->set_position(pos);
     }
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- bool has_include_guards(std::string& guard_name) const
+ template <typename MultiPass>
+ static bool has_include_guards(MultiPass& mp, std::string& guard_name)
     {
- return functor_ptr->has_include_guards(guard_name);
+ return mp.shared->ftor->has_include_guards(guard_name);
     }
 #endif
-
-private:
- boost::shared_ptr<lex_input_interface<TokenT> > functor_ptr;
 };
 
 ///////////////////////////////////////////////////////////////////////////////
 // eof token
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 template <typename TokenT>
 typename lex_iterator_functor_shim<TokenT>::result_type const
     lex_iterator_functor_shim<TokenT>::eof;
@@ -127,18 +137,45 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+///////////////////////////////////////////////////////////////////////////////
+// Divide the given functor type into its components (unique and shared)
+// and build a std::pair from these parts
+template <typename FunctorData>
+struct make_multi_pass
+{
+ typedef
+ std::pair<typename FunctorData::unique, typename FunctorData::shared>
+ functor_data_type;
+ typedef typename FunctorData::result_type result_type;
+
+ typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
+ typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+#if defined(BOOST_WAVE_DEBUG)
+ typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+#else
+ typedef boost::spirit::multi_pass_policies::no_check check_policy;
+#endif
+ typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+
+ typedef boost::spirit::multi_pass_policies::default_policy<
+ ownership_policy, check_policy, input_policy, storage_policy>
+ policy_type;
+ typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
+};
+
+///////////////////////////////////////////////////////////////////////////////
 template <typename TokenT>
 class lex_iterator
-: public boost::spirit::multi_pass<
- impl::lex_iterator_functor_shim<TokenT>,
- boost::wave::util::functor_input
- >
+: public make_multi_pass<impl::lex_iterator_functor_shim<TokenT> >::type
 {
     typedef impl::lex_iterator_functor_shim<TokenT> input_policy_type;
- typedef
- boost::spirit::multi_pass<input_policy_type,
- boost::wave::util::functor_input>
- base_type;
+
+ typedef typename make_multi_pass<input_policy_type>::type base_type;
+ typedef typename make_multi_pass<input_policy_type>::functor_data_type
+ functor_data_type;
+
+ typedef typename input_policy_type::unique unique_functor_type;
+ typedef typename input_policy_type::shared shared_functor_type;
     
 public:
     typedef TokenT token_type;
@@ -150,7 +187,13 @@
     lex_iterator(IteratorT const &first, IteratorT const &last,
             typename TokenT::position_type const &pos,
             boost::wave::language_support language)
- : base_type(input_policy_type(first, last, pos, language))
+ : base_type(
+ functor_data_type(
+ unique_functor_type(),
+ lex_input_interface_generator<TokenT>
+ ::new_lexer(first, last, pos, language)
+ )
+ )
     {}
 
     void set_position(typename TokenT::position_type const &pos)
@@ -158,7 +201,7 @@
         typedef typename TokenT::position_type position_type;
         
     // set the new position in the current token
- token_type& currtoken = base_type::get_input();
+ token_type& currtoken = this->base_type::dereference(*this);
     position_type currpos = currtoken.get_position();
 
         currpos.set_file(pos.get_file());
@@ -171,7 +214,7 @@
         {
             currpos.set_line(pos.get_line() + 1);
         }
- base_type::get_functor().set_position(currpos);
+ unique_functor_type::set_position(*this, currpos);
     }
     
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
@@ -180,7 +223,7 @@
     // completely
     bool has_include_guards(std::string& guard_name) const
     {
- return base_type::get_functor().has_include_guards(guard_name);
+ return unique_functor_type::has_include_guards(*this, guard_name);
     }
 #endif
 };

Modified: branches/release/boost/wave/cpplexer/cpp_lex_token.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/cpp_lex_token.hpp (original)
+++ branches/release/boost/wave/cpplexer/cpp_lex_token.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -77,6 +77,22 @@
         return (lhs.id == rhs.id && lhs.value == rhs.value) ? true : false;
     }
     
+ void init(token_id id_, string_type const &value_, position_type const &pos_)
+ {
+ BOOST_ASSERT(refcnt == 1);
+ id = id_;
+ value = value_;
+ pos = pos_;
+ }
+
+ void init(token_data const& rhs)
+ {
+ BOOST_ASSERT(refcnt == 1);
+ id = rhs.id;
+ value = rhs.value;
+ pos = rhs.pos;
+ }
+
     static void *operator new(std::size_t size);
     static void operator delete(void *p, std::size_t size);
     
@@ -167,24 +183,29 @@
 public:
     typedef BOOST_WAVE_STRINGTYPE string_type;
     typedef PositionT position_type;
+
+private:
+ typedef impl::token_data<string_type, position_type> data_type;
     
+public:
     lex_token()
- : data(new impl::token_data<string_type, position_type>())
+ : data(0)
     {}
     
     lex_token(lex_token const& rhs)
     : data(rhs.data)
     {
- data->addref();
+ if (0 != data)
+ data->addref();
     }
 
     lex_token(token_id id_, string_type const &value_, PositionT const &pos_)
- : data(new impl::token_data<string_type, position_type>(id_, value_, pos_))
+ : data(new data_type(id_, value_, pos_))
     {}
 
     ~lex_token()
     {
- if (0 == data->release())
+ if (0 != data && 0 == data->release())
             delete data;
         data = 0;
     }
@@ -192,20 +213,21 @@
     lex_token& operator=(lex_token const& rhs)
     {
         if (&rhs != this) {
- if (0 == data->release())
+ if (0 != data && 0 == data->release())
                 delete data;
             
             data = rhs.data;
- data->addref();
+ if (0 != data)
+ data->addref();
         }
         return *this;
     }
     
 // accessors
- operator token_id() const { return token_id(*data); }
+ operator token_id() const { return 0 != data ? token_id(*data) : T_EOI; }
     string_type const &get_value() const { return data->get_value(); }
     position_type const &get_position() const { return data->get_position(); }
- bool is_eoi() const { return token_id(*data) == T_EOI; }
+ bool is_eoi() const { return 0 == data || token_id(*data) == T_EOI; }
     
     void set_token_id (token_id id_) { make_unique(); data->set_token_id(id_); }
     void set_value (string_type const &value_) { make_unique(); data->set_value(value_); }
@@ -213,6 +235,10 @@
 
     friend bool operator== (lex_token const& lhs, lex_token const& rhs)
     {
+ if (0 == rhs.data)
+ return 0 == lhs.data;
+ if (0 == lhs.data)
+ return false;
         return *(lhs.data) == *(rhs.data);
     }
     
@@ -249,14 +275,13 @@
         if (1 == data->get_refcnt())
             return;
         
- impl::token_data<string_type, position_type> *newdata =
- new impl::token_data<string_type, position_type>(*data);
+ data_type* newdata = new data_type(*data) ;
 
         data->release(); // release this reference, can't get zero
         data = newdata;
     }
     
- impl::token_data<string_type, position_type> *data;
+ data_type* data;
 };
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/wave/cpplexer/detect_include_guards.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/detect_include_guards.hpp (original)
+++ branches/release/boost/wave/cpplexer/detect_include_guards.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -51,7 +51,7 @@
         current_state(true), if_depth(0)
     {}
 
- Token const& detect_guard(Token const& t)
+ Token& detect_guard(Token& t)
         { return current_state ? (this->*state)(t) : t; }
     bool detected(std::string& guard_name_) const
     {
@@ -63,7 +63,7 @@
     }
     
 private:
- typedef Token const& state_type(Token const& t);
+ typedef Token& state_type(Token& t);
     state_type include_guards::* state;
 
     bool detected_guards;
@@ -85,8 +85,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 0: beginning of a file, tries to recognize #ifndef or #if tokens
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_0(Token const& t)
+inline Token&
+include_guards<Token>::state_0(Token& t)
 {
     token_id id = token_id(t);
     if (T_PP_IFNDEF == id)
@@ -101,8 +101,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1: found #ifndef, looking for T_IDENTIFIER
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1(Token const& t)
+inline Token&
+include_guards<Token>::state_1(Token& t)
 {
     token_id id = token_id(t);
     if (T_IDENTIFIER == id) {
@@ -117,8 +117,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1a: found T_PP_IF, looking for T_NOT ("!")
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1a(Token const& t)
+inline Token&
+include_guards<Token>::state_1a(Token& t)
 {
     token_id id = token_id(t);
     if (T_NOT == BASE_TOKEN(id))
@@ -131,8 +131,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1b: found T_NOT, looking for 'defined'
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1b(Token const& t)
+inline Token&
+include_guards<Token>::state_1b(Token& t)
 {
     token_id id = token_id(t);
     if (T_IDENTIFIER == id && t.get_value() == "defined")
@@ -145,8 +145,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1c: found 'defined', looking for (optional) T_LEFTPAREN
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1c(Token const& t)
+inline Token&
+include_guards<Token>::state_1c(Token& t)
 {
     token_id id = token_id(t);
     if (T_LEFTPAREN == id)
@@ -163,8 +163,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1d: found T_LEFTPAREN, looking for T_IDENTIFIER guard
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1d(Token const& t)
+inline Token&
+include_guards<Token>::state_1d(Token& t)
 {
     token_id id = token_id(t);
     if (T_IDENTIFIER == id) {
@@ -179,8 +179,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 1e: found T_IDENTIFIER guard, looking for T_RIGHTPAREN
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_1e(Token const& t)
+inline Token&
+include_guards<Token>::state_1e(Token& t)
 {
     token_id id = token_id(t);
     if (T_RIGHTPAREN == id)
@@ -193,8 +193,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 2: found T_IDENTIFIER, looking for #define
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_2(Token const& t)
+inline Token&
+include_guards<Token>::state_2(Token& t)
 {
     token_id id = token_id(t);
     if (T_PP_DEFINE == id)
@@ -207,8 +207,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 3: found #define, looking for T_IDENTIFIER as recognized by state 1
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_3(Token const& t)
+inline Token&
+include_guards<Token>::state_3(Token& t)
 {
     token_id id = token_id(t);
     if (T_IDENTIFIER == id && t.get_value() == guard_name)
@@ -221,8 +221,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 4: found guard T_IDENTIFIER, looking for #endif
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_4(Token const& t)
+inline Token&
+include_guards<Token>::state_4(Token& t)
 {
     token_id id = token_id(t);
     if (T_PP_IF == id || T_PP_IFDEF == id || T_PP_IFNDEF == id)
@@ -239,8 +239,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 // state 5: found final #endif, looking for T_EOF
 template <typename Token>
-inline Token const&
-include_guards<Token>::state_5(Token const& t)
+inline Token&
+include_guards<Token>::state_5(Token& t)
 {
     token_id id = token_id(t);
     if (T_EOF == id)

Modified: branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
==============================================================================
--- branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp (original)
+++ branches/release/boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,7 +22,7 @@
 
 #include <boost/concept_check.hpp>
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
+#include <boost/spirit/include/classic_core.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/language_support.hpp>
@@ -70,7 +70,7 @@
         PositionT const &pos, boost::wave::language_support language_);
     ~lexer();
 
- lex_token<PositionT> get();
+ lex_token<PositionT>& get(lex_token<PositionT>&);
     void set_position(PositionT const &pos)
     {
         // set position has to change the file name and line number only
@@ -157,11 +157,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 // get the next token from the input stream
 template <typename IteratorT, typename PositionT>
-inline lex_token<PositionT>
-lexer<IteratorT, PositionT>::get()
+inline lex_token<PositionT>&
+lexer<IteratorT, PositionT>::get(lex_token<PositionT>& result)
 {
     if (at_eof)
- return lex_token<PositionT>(); // return T_EOI
+ return result = lex_token<PositionT>(); // return T_EOI
 
     unsigned int actline = scanner.line;
     token_id id = token_id(scan(&scanner));
@@ -280,12 +280,12 @@
 // std::cerr << boost::wave::get_token_name(id) << ": " << value << std::endl;
 
     // the re2c lexer reports the new line number for newline tokens
+ result = token_type(id, value, PositionT(filename, actline, scanner.column));
+
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- return guards.detect_guard(lex_token<PositionT>(id, value,
- PositionT(filename, actline, scanner.column)));
+ return guards.detect_guard(result);
 #else
- return lex_token<PositionT>(id, value,
- PositionT(filename, actline, scanner.column));
+ return result;
 #endif
 }
 
@@ -324,8 +324,7 @@
>
 {
 public:
-
- typedef typename lexer<IteratorT, PositionT>::token_type token_type;
+ typedef typename lexer<IteratorT, PositionT>::token_type token_type;
     
     lex_functor(IteratorT const &first, IteratorT const &last,
             PositionT const &pos, boost::wave::language_support language)
@@ -334,7 +333,7 @@
     virtual ~lex_functor() {}
     
 // get the next token from the input stream
- token_type get() { return re2c_lexer.get(); }
+ token_type& get(token_type& result) { return re2c_lexer.get(result); }
     void set_position(PositionT const &pos) { re2c_lexer.set_position(pos); }
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
     bool has_include_guards(std::string& guard_name) const

Modified: branches/release/boost/wave/grammars/cpp_chlit_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_chlit_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_chlit_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,30 +19,23 @@
 #include <boost/static_assert.hpp>
 #include <boost/cstdint.hpp>
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/attribute/closure.hpp>
-#include <boost/spirit/dynamic/if.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
-
-#include <boost/spirit/phoenix/operators.hpp>
-#include <boost/spirit/phoenix/primitives.hpp>
-#include <boost/spirit/phoenix/statements.hpp>
-#include <boost/spirit/phoenix/functions.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_closure.hpp>
+#include <boost/spirit/include/classic_if.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
+
+#include <boost/spirit/include/phoenix1_operators.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_statements.hpp>
+#include <boost/spirit/include/phoenix1_functions.hpp>
 
 #include <boost/wave/cpp_exceptions.hpp>
 #include <boost/wave/grammars/cpp_literal_grammar_gen.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -62,7 +55,7 @@
 namespace closures {
 
     struct chlit_closure
- : boost::spirit::closure<chlit_closure, boost::uint32_t, bool>
+ : boost::spirit::classic::closure<chlit_closure, boost::uint32_t, bool>
     {
         member1 value;
         member2 long_lit;
@@ -135,7 +128,7 @@
     /**/
 
 struct chlit_grammar :
- public boost::spirit::grammar<chlit_grammar,
+ public boost::spirit::classic::grammar<chlit_grammar,
         closures::chlit_closure::context_t>
 {
     chlit_grammar()
@@ -152,16 +145,16 @@
     template <typename ScannerT>
     struct definition
     {
- typedef
- boost::spirit::rule<ScannerT, closures::chlit_closure::context_t>
+ typedef boost::spirit::classic::rule<
+ ScannerT, closures::chlit_closure::context_t>
             rule_t;
 
         rule_t ch_lit;
 
         definition(chlit_grammar const &self)
         {
- using namespace boost::spirit;
- using namespace phoenix;
+ using namespace boost::spirit::classic;
+ namespace phx = phoenix;
             
             // special parsers for '\x..' and L'\x....'
             typedef uint_parser<
@@ -173,65 +166,65 @@
 
             // the rule for a character literal
             ch_lit
- = eps_p[self.value = val(0), self.long_lit = val(false)]
- >> !ch_p('L')[self.long_lit = val(true)]
+ = eps_p[self.value = phx::val(0), self.long_lit = phx::val(false)]
+ >> !ch_p('L')[self.long_lit = phx::val(true)]
>> ch_p('\'')
>> +( (
                             ch_p('\\')
>> ( ch_p('a') // BEL
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x07))
+ phx::var(self.overflow), phx::val(0x07))
                                     ]
                                 | ch_p('b') // BS
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x08))
+ phx::var(self.overflow), phx::val(0x08))
                                     ]
                                 | ch_p('t') // HT
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x09))
+ phx::var(self.overflow), phx::val(0x09))
                                     ]
                                 | ch_p('n') // NL
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x0a))
+ phx::var(self.overflow), phx::val(0x0a))
                                     ]
                                 | ch_p('v') // VT
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x0b))
+ phx::var(self.overflow), phx::val(0x0b))
                                     ]
                                 | ch_p('f') // FF
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x0c))
+ phx::var(self.overflow), phx::val(0x0c))
                                     ]
                                 | ch_p('r') // CR
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val(0x0d))
+ phx::var(self.overflow), phx::val(0x0d))
                                     ]
                                 | ch_p('?')
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val('?'))
+ phx::var(self.overflow), phx::val('?'))
                                     ]
                                 | ch_p('\'')
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val('\''))
+ phx::var(self.overflow), phx::val('\''))
                                     ]
                                 | ch_p('\"')
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val('\"'))
+ phx::var(self.overflow), phx::val('\"'))
                                     ]
                                 | ch_p('\\')
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), val('\\'))
+ phx::var(self.overflow), phx::val('\\'))
                                     ]
                                 | ch_p('x')
>> if_p(self.long_lit)
@@ -239,7 +232,7 @@
                                             hex_wchar_parser_type()
                                             [
                                                 impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                                             ]
                                         ]
                                         .else_p
@@ -247,32 +240,32 @@
                                             hex_char_parser_type()
                                             [
                                                 impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                                             ]
                                         ]
                                 | ch_p('u')
>> uint_parser<unsigned int, 16, 4, 4>()
                                         [
                                             impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                                         ]
                                 | ch_p('U')
>> uint_parser<unsigned int, 16, 8, 8>()
                                         [
                                             impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                                         ]
                                 | uint_parser<unsigned int, 8, 1, 3>()
                                     [
                                         impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                                     ]
                                 )
                             )
                         | ~eps_p(ch_p('\'')) >> anychar_p
                             [
                                 impl::compose(self.value, self.long_lit,
- var(self.overflow), arg1)
+ phx::var(self.overflow), phx::arg1)
                             ]
                         )
>> ch_p('\'')
@@ -310,7 +303,7 @@
 unsigned int
 chlit_grammar_gen<TokenT>::evaluate(TokenT const &token, value_error &status)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     
 chlit_grammar g;
 boost::uint32_t result = 0;

Modified: branches/release/boost/wave/grammars/cpp_defined_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_defined_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_defined_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,25 +14,18 @@
 #include <boost/wave/wave_config.hpp>
 
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/attribute/closure.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_closure.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
 
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/util/pattern_parser.hpp>
 #include <boost/wave/grammars/cpp_defined_grammar_gen.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -53,7 +46,7 @@
 
 template <typename ContainerT>
 struct defined_grammar :
- public boost::spirit::grammar<defined_grammar<ContainerT> >
+ public boost::spirit::classic::grammar<defined_grammar<ContainerT> >
 {
     defined_grammar(ContainerT &result_seq_)
     : result_seq(result_seq_)
@@ -65,14 +58,14 @@
     template <typename ScannerT>
     struct definition
     {
- typedef boost::spirit::rule<ScannerT> rule_t;
+ typedef boost::spirit::classic::rule<ScannerT> rule_t;
 
         rule_t defined_op;
         rule_t identifier;
 
         definition(defined_grammar const &self)
         {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             using namespace boost::wave;
             using namespace boost::wave::util;
 
@@ -144,35 +137,35 @@
 
 template <typename LexIteratorT>
 BOOST_WAVE_DEFINED_GRAMMAR_GEN_INLINE
-boost::spirit::parse_info<
- typename defined_grammar_gen<LexIteratorT>::iterator1_t
+boost::spirit::classic::parse_info<
+ typename defined_grammar_gen<LexIteratorT>::iterator1_type
>
 defined_grammar_gen<LexIteratorT>::parse_operator_defined (
- iterator1_t const &first, iterator1_t const &last,
+ iterator1_type const &first, iterator1_type const &last,
     token_sequence_type &found_qualified_name)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     using namespace boost::wave;
     
     defined_grammar<token_sequence_type> g(found_qualified_name);
- return boost::spirit::parse (
+ return boost::spirit::classic::parse (
         first, last, g, ch_p(T_SPACE) | ch_p(T_CCOMMENT));
 }
 
 template <typename LexIteratorT>
 BOOST_WAVE_DEFINED_GRAMMAR_GEN_INLINE
-boost::spirit::parse_info<
- typename defined_grammar_gen<LexIteratorT>::iterator2_t
+boost::spirit::classic::parse_info<
+ typename defined_grammar_gen<LexIteratorT>::iterator2_type
>
 defined_grammar_gen<LexIteratorT>::parse_operator_defined (
- iterator2_t const &first, iterator2_t const &last,
+ iterator2_type const &first, iterator2_type const &last,
     token_sequence_type &found_qualified_name)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     using namespace boost::wave;
     
     defined_grammar<token_sequence_type> g(found_qualified_name);
- return boost::spirit::parse (
+ return boost::spirit::classic::parse (
         first, last, g, ch_p(T_SPACE) | ch_p(T_CCOMMENT));
 }
 

Modified: branches/release/boost/wave/grammars/cpp_defined_grammar_gen.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_defined_grammar_gen.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_defined_grammar_gen.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,7 +15,7 @@
 
 #include <list>
 
-#include <boost/spirit/core/parser.hpp>
+#include <boost/spirit/include/classic_parser.hpp>
 #include <boost/pool/pool_alloc.hpp>
 
 #include <boost/wave/util/unput_queue_iterator.hpp>
@@ -52,20 +52,20 @@
 
     typedef boost::wave::util::unput_queue_iterator<
             typename token_sequence_type::iterator, token_type, token_sequence_type>
- iterator1_t;
+ iterator1_type;
 
     typedef boost::wave::util::unput_queue_iterator<
             LexIteratorT, token_type, token_sequence_type>
- iterator2_t;
+ iterator2_type;
         
 // parse the operator defined and return the found qualified name
- static boost::spirit::parse_info<iterator1_t>
- parse_operator_defined (iterator1_t const &first, iterator1_t const &last,
- token_sequence_type &found_qualified_name);
-
- static boost::spirit::parse_info<iterator2_t>
- parse_operator_defined (iterator2_t const &first, iterator2_t const &last,
- token_sequence_type &found_qualified_name);
+ static boost::spirit::classic::parse_info<iterator1_type>
+ parse_operator_defined (iterator1_type const &first,
+ iterator1_type const &last, token_sequence_type &found_qualified_name);
+
+ static boost::spirit::classic::parse_info<iterator2_type>
+ parse_operator_defined (iterator2_type const &first,
+ iterator2_type const &last, token_sequence_type &found_qualified_name);
 };
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/wave/grammars/cpp_expression_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_expression_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_expression_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,19 +14,17 @@
 #include <boost/wave/wave_config.hpp>
 
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/attribute/closure.hpp>
-#include <boost/spirit/dynamic/if.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
-
-#include <boost/spirit/phoenix/functions.hpp>
-#include <boost/spirit/phoenix/operators.hpp>
-#include <boost/spirit/phoenix/primitives.hpp>
-#include <boost/spirit/phoenix/statements.hpp>
-#include <boost/spirit/phoenix/casts.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_closure.hpp>
+#include <boost/spirit/include/classic_if.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
+
+#include <boost/spirit/include/phoenix1_functions.hpp>
+#include <boost/spirit/include/phoenix1_operators.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_statements.hpp>
+#include <boost/spirit/include/phoenix1_casts.hpp>
 
 #include <boost/wave/token_ids.hpp>
 
@@ -38,13 +36,8 @@
 #include <boost/wave/util/macro_helpers.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -73,7 +66,7 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
     struct cpp_expr_closure
- : boost::spirit::closure<cpp_expr_closure, closure_value>
+ : boost::spirit::classic::closure<cpp_expr_closure, closure_value>
     {
         member1 val;
     };
@@ -276,7 +269,7 @@
     /**/
 
 struct expression_grammar :
- public boost::spirit::grammar<
+ public boost::spirit::classic::grammar<
         expression_grammar,
         closures::cpp_expr_closure::context_t
>
@@ -295,8 +288,8 @@
     struct definition
     {
         typedef closures::cpp_expr_closure closure_type;
- typedef boost::spirit::rule<ScannerT, closure_type::context_t> rule_t;
- typedef boost::spirit::rule<ScannerT> simple_rule_t;
+ typedef boost::spirit::classic::rule<ScannerT, closure_type::context_t> rule_t;
+ typedef boost::spirit::classic::rule<ScannerT> simple_rule_t;
 
         simple_rule_t pp_expression;
         
@@ -316,11 +309,11 @@
         rule_t add_exp_nocalc, multiply_exp_nocalc;
         rule_t unary_exp_nocalc, primary_exp_nocalc, constant_nocalc;
 
- boost::spirit::subrule<0, closure_type::context_t> const_exp_subrule;
+ boost::spirit::classic::subrule<0, closure_type::context_t> const_exp_subrule;
 
         definition(expression_grammar const &self)
         {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             using namespace phoenix;
             using namespace boost::wave;
             using boost::wave::util::pattern_p;
@@ -750,7 +743,7 @@
     typename token_type::position_type const &act_pos,
     bool if_block_status, value_error &status)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     using namespace boost::wave;
     using namespace boost::wave::grammars::closures;
     

Modified: branches/release/boost/wave/grammars/cpp_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -11,18 +11,18 @@
 #if !defined(CPP_GRAMMAR_HPP_FEAEBC2E_2734_428B_A7CA_85E5A415E23E_INCLUDED)
 #define CPP_GRAMMAR_HPP_FEAEBC2E_2734_428B_A7CA_85E5A415E23E_INCLUDED
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/tree/parse_tree.hpp>
-#include <boost/spirit/tree/parse_tree_utils.hpp>
-#include <boost/spirit/utility/confix.hpp>
-#include <boost/spirit/utility/lists.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_parse_tree.hpp>
+#include <boost/spirit/include/classic_parse_tree_utils.hpp>
+#include <boost/spirit/include/classic_confix.hpp>
+#include <boost/spirit/include/classic_lists.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/pool/pool_alloc.hpp>
 
 #if BOOST_WAVE_DUMP_PARSE_TREE != 0
 #include <map>
-#include <boost/spirit/tree/tree_to_xml.hpp>
+#include <boost/spirit/include/classic_tree_to_xml.hpp>
 #endif
 
 #include <boost/wave/token_ids.hpp>
@@ -125,12 +125,12 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
     struct flush_underlying_parser
- : public boost::spirit::parser<flush_underlying_parser>
+ : public boost::spirit::classic::parser<flush_underlying_parser>
     {
         typedef flush_underlying_parser this_t;
 
         template <typename ScannerT>
- typename boost::spirit::parser_result<this_t, ScannerT>::type
+ typename boost::spirit::classic::parser_result<this_t, ScannerT>::type
         parse(ScannerT const& scan) const
         {
             scan.first.clear_queue();
@@ -153,7 +153,7 @@
 // Encapsulation of the C++ preprocessor grammar.
 template <typename TokenT, typename ContainerT>
 struct cpp_grammar :
- public boost::spirit::grammar<cpp_grammar<TokenT, ContainerT> >
+ public boost::spirit::classic::grammar<cpp_grammar<TokenT, ContainerT> >
 {
     typedef typename TokenT::position_type position_type;
     typedef cpp_grammar<TokenT, ContainerT> grammar_type;
@@ -166,29 +166,32 @@
     {
     // non-parse_tree generating rule type
         typedef typename ScannerT::iteration_policy_t iteration_policy_t;
- typedef boost::spirit::match_policy match_policy_t;
+ typedef boost::spirit::classic::match_policy match_policy_t;
         typedef typename ScannerT::action_policy_t action_policy_t;
         typedef
- boost::spirit::scanner_policies<
+ boost::spirit::classic::scanner_policies<
                 iteration_policy_t, match_policy_t, action_policy_t>
             policies_t;
         typedef
- boost::spirit::scanner<typename ScannerT::iterator_t, policies_t>
+ boost::spirit::classic::scanner<typename ScannerT::iterator_t, policies_t>
             non_tree_scanner_t;
         typedef
- boost::spirit::rule<non_tree_scanner_t, boost::spirit::dynamic_parser_tag>
+ boost::spirit::classic::rule<
+ non_tree_scanner_t, boost::spirit::classic::dynamic_parser_tag>
             no_tree_rule_type;
 
     // 'normal' (parse_tree generating) rule type
         typedef
- boost::spirit::rule<ScannerT, boost::spirit::dynamic_parser_tag>
+ boost::spirit::classic::rule<
+ ScannerT, boost::spirit::classic::dynamic_parser_tag>
             rule_type;
 
- rule_type pp_statement;
- rule_type include_file, system_include_file, macro_include_file;
+ rule_type pp_statement, macro_include_file;
+// rule_type include_file, system_include_file;
         rule_type plain_define, macro_definition, macro_parameters;
         rule_type undefine;
- rule_type ppifdef, ppifndef, ppif, ppelse, ppelif, ppendif;
+ rule_type ppifdef, ppifndef, ppif, ppelif;
+// rule_type ppelse, ppendif;
         rule_type ppline;
         rule_type pperror;
         rule_type ppwarning;
@@ -205,14 +208,14 @@
         definition(cpp_grammar const &self)
         {
         // import the spirit and cpplexer namespaces here
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             using namespace boost::wave;
             using namespace boost::wave::util;
 
         // set the rule id's for later use
             pp_statement.set_id(BOOST_WAVE_PP_STATEMENT_ID);
- include_file.set_id(BOOST_WAVE_INCLUDE_FILE_ID);
- system_include_file.set_id(BOOST_WAVE_SYSINCLUDE_FILE_ID);
+// include_file.set_id(BOOST_WAVE_INCLUDE_FILE_ID);
+// system_include_file.set_id(BOOST_WAVE_SYSINCLUDE_FILE_ID);
             macro_include_file.set_id(BOOST_WAVE_MACROINCLUDE_FILE_ID);
             plain_define.set_id(BOOST_WAVE_PLAIN_DEFINE_ID);
             macro_parameters.set_id(BOOST_WAVE_MACRO_PARAMETERS_ID);
@@ -222,8 +225,8 @@
             ppifndef.set_id(BOOST_WAVE_IFNDEF_ID);
             ppif.set_id(BOOST_WAVE_IF_ID);
             ppelif.set_id(BOOST_WAVE_ELIF_ID);
- ppelse.set_id(BOOST_WAVE_ELSE_ID);
- ppendif.set_id(BOOST_WAVE_ENDIF_ID);
+// ppelse.set_id(BOOST_WAVE_ELSE_ID);
+// ppendif.set_id(BOOST_WAVE_ENDIF_ID);
             ppline.set_id(BOOST_WAVE_LINE_ID);
             pperror.set_id(BOOST_WAVE_ERROR_ID);
             ppwarning.set_id(BOOST_WAVE_WARNING_ID);
@@ -252,20 +255,20 @@
 
             pp_statement
                 = ( plain_define
- | include_file
- | system_include_file
+// | include_file
+// | system_include_file
                     | ppif
                     | ppelif
                     | ppifndef
                     | ppifdef
                     | undefine
- | ppelse
+// | ppelse
                     | macro_include_file
                     | ppline
                     | pppragma
                     | pperror
                     | ppwarning
- | ppendif
+// | ppendif
 #if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0
                     | ppregion
                     | ppendregion
@@ -285,24 +288,24 @@
 #endif // !(defined(BOOST_SPIRIT_DEBUG) &&
                 ;
 
- // #include ...
- include_file // include "..."
- = ch_p(T_PP_QHEADER)
- [ store_found_directive_type(self.found_directive) ]
-#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
- | ch_p(T_PP_QHEADER_NEXT)
- [ store_found_directive_type(self.found_directive) ]
-#endif
- ;
-
- system_include_file // include <...>
- = ch_p(T_PP_HHEADER)
- [ store_found_directive_type(self.found_directive) ]
-#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
- | ch_p(T_PP_HHEADER_NEXT)
- [ store_found_directive_type(self.found_directive) ]
-#endif
- ;
+// // #include ...
+// include_file // include "..."
+// = ch_p(T_PP_QHEADER)
+// [ store_found_directive_type(self.found_directive) ]
+// #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+// | ch_p(T_PP_QHEADER_NEXT)
+// [ store_found_directive_type(self.found_directive) ]
+// #endif
+// ;
+
+// system_include_file // include <...>
+// = ch_p(T_PP_HHEADER)
+// [ store_found_directive_type(self.found_directive) ]
+// #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+// | ch_p(T_PP_HHEADER_NEXT)
+// [ store_found_directive_type(self.found_directive) ]
+// #endif
+// ;
 
             macro_include_file // include ...anything else...
                 = no_node_d
@@ -421,13 +424,13 @@
                         )
                 ;
 
- ppelse
- = no_node_d
- [
- ch_p(T_PP_ELSE)
- [ store_found_directive_type(self.found_directive) ]
- ]
- ;
+// ppelse
+// = no_node_d
+// [
+// ch_p(T_PP_ELSE)
+// [ store_found_directive_type(self.found_directive) ]
+// ]
+// ;
 
             ppelif
                 = no_node_d
@@ -441,13 +444,13 @@
                         )
                 ;
 
- ppendif
- = no_node_d
- [
- ch_p(T_PP_ENDIF)
- [ store_found_directive_type(self.found_directive) ]
- ]
- ;
+// ppendif
+// = no_node_d
+// [
+// ch_p(T_PP_ENDIF)
+// [ store_found_directive_type(self.found_directive) ]
+// ]
+// ;
 
         // #line ...
             ppline
@@ -571,8 +574,8 @@
                 ;
 
             BOOST_SPIRIT_DEBUG_TRACE_RULE(pp_statement, TRACE_CPP_GRAMMAR);
- BOOST_SPIRIT_DEBUG_TRACE_RULE(include_file, TRACE_CPP_GRAMMAR);
- BOOST_SPIRIT_DEBUG_TRACE_RULE(system_include_file, TRACE_CPP_GRAMMAR);
+// BOOST_SPIRIT_DEBUG_TRACE_RULE(include_file, TRACE_CPP_GRAMMAR);
+// BOOST_SPIRIT_DEBUG_TRACE_RULE(system_include_file, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(macro_include_file, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(plain_define, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(macro_definition, TRACE_CPP_GRAMMAR);
@@ -581,8 +584,8 @@
             BOOST_SPIRIT_DEBUG_TRACE_RULE(ppifdef, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(ppifndef, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(ppif, TRACE_CPP_GRAMMAR);
- BOOST_SPIRIT_DEBUG_TRACE_RULE(ppelse, TRACE_CPP_GRAMMAR);
- BOOST_SPIRIT_DEBUG_TRACE_RULE(ppelif, TRACE_CPP_GRAMMAR);
+// BOOST_SPIRIT_DEBUG_TRACE_RULE(ppelse, TRACE_CPP_GRAMMAR);
+// BOOST_SPIRIT_DEBUG_TRACE_RULE(ppelif, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(ppendif, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(ppline, TRACE_CPP_GRAMMAR);
             BOOST_SPIRIT_DEBUG_TRACE_RULE(pperror, TRACE_CPP_GRAMMAR);
@@ -618,9 +621,9 @@
 #if BOOST_WAVE_DUMP_PARSE_TREE != 0
 // helper function and data to get readable names of the rules known to us
     struct map_ruleid_to_name :
- public std::map<boost::spirit::parser_id, std::string>
+ public std::map<boost::spirit::classic::parser_id, std::string>
     {
- typedef std::map<boost::spirit::parser_id, std::string> base_type;
+ typedef std::map<boost::spirit::classic::parser_id, std::string> base_type;
 
         void init_rule_id_to_name_map(cpp_grammar const &self)
         {
@@ -630,8 +633,8 @@
             }
             init_ruleid_name_map[] = {
                 { BOOST_WAVE_PP_STATEMENT_ID, "pp_statement" },
- { BOOST_WAVE_INCLUDE_FILE_ID, "include_file" },
- { BOOST_WAVE_SYSINCLUDE_FILE_ID, "system_include_file" },
+// { BOOST_WAVE_INCLUDE_FILE_ID, "include_file" },
+// { BOOST_WAVE_SYSINCLUDE_FILE_ID, "system_include_file" },
                 { BOOST_WAVE_MACROINCLUDE_FILE_ID, "macro_include_file" },
                 { BOOST_WAVE_PLAIN_DEFINE_ID, "plain_define" },
                 { BOOST_WAVE_MACRO_PARAMETERS_ID, "macro_parameters" },
@@ -641,8 +644,8 @@
                 { BOOST_WAVE_IFNDEF_ID, "ppifndef" },
                 { BOOST_WAVE_IF_ID, "ppif" },
                 { BOOST_WAVE_ELIF_ID, "ppelif" },
- { BOOST_WAVE_ELSE_ID, "ppelse" },
- { BOOST_WAVE_ENDIF_ID, "ppendif" },
+// { BOOST_WAVE_ELSE_ID, "ppelse" },
+// { BOOST_WAVE_ENDIF_ID, "ppendif" },
                 { BOOST_WAVE_LINE_ID, "ppline" },
                 { BOOST_WAVE_ERROR_ID, "pperror" },
                 { BOOST_WAVE_WARNING_ID, "ppwarning" },
@@ -660,7 +663,7 @@
         // initialize parser_id to rule_name map
             for (int i = 0; 0 != init_ruleid_name_map[i].parser_id; ++i)
                 base_type::insert(base_type::value_type(
- boost::spirit::parser_id(init_ruleid_name_map[i].parser_id),
+ boost::spirit::classic::parser_id(init_ruleid_name_map[i].parser_id),
                     std::string(init_ruleid_name_map[i].rule_name))
                 );
         }
@@ -678,11 +681,11 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 template <typename NodeFactoryT, typename IteratorT, typename ParserT>
-inline boost::spirit::tree_parse_info<IteratorT, NodeFactoryT>
+inline boost::spirit::classic::tree_parse_info<IteratorT, NodeFactoryT>
 parsetree_parse(IteratorT const& first_, IteratorT const& last,
- boost::spirit::parser<ParserT> const& p)
+ boost::spirit::classic::parser<ParserT> const& p)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     
     typedef pt_match_policy<IteratorT, NodeFactoryT> pt_match_policy_type;
     typedef scanner_policies<iteration_policy, pt_match_policy_type>
@@ -712,7 +715,7 @@
 
 template <typename LexIteratorT, typename TokenContainerT>
 BOOST_WAVE_GRAMMAR_GEN_INLINE
-boost::spirit::tree_parse_info<
+boost::spirit::classic::tree_parse_info<
     LexIteratorT,
     typename cpp_grammar_gen<LexIteratorT, TokenContainerT>::node_factory_type
>
@@ -721,7 +724,7 @@
     position_type const &act_pos, bool &found_eof,
     token_type &found_directive, token_container_type &found_eoltokens)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     using namespace boost::wave;
     
     cpp_grammar<token_type, TokenContainerT> g(found_eof, found_directive, found_eoltokens);

Modified: branches/release/boost/wave/grammars/cpp_grammar_gen.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_grammar_gen.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_grammar_gen.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,8 +14,8 @@
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/language_support.hpp>
 
-#include <boost/spirit/core/nil.hpp>
-#include <boost/spirit/tree/parse_tree.hpp>
+#include <boost/spirit/include/classic_nil.hpp>
+#include <boost/spirit/include/classic_parse_tree.hpp>
 
 #include <boost/pool/pool_alloc.hpp>
 
@@ -81,13 +81,13 @@
     typedef typename LexIteratorT::token_type token_type;
     typedef TokenContainerT token_container_type;
     typedef typename token_type::position_type position_type;
- typedef boost::spirit::node_val_data_factory<
+ typedef boost::spirit::classic::node_val_data_factory<
 // boost::spirit::nil_t,
 // boost::pool_allocator<boost::spirit::nil_t>
> node_factory_type;
     
 // parse the cpp_grammar and return the resulting parse tree
- static boost::spirit::tree_parse_info<iterator_type, node_factory_type>
+ static boost::spirit::classic::tree_parse_info<iterator_type, node_factory_type>
     parse_cpp_grammar (iterator_type const &first, iterator_type const &last,
         position_type const &act_pos, bool &found_eof,
         token_type &found_directive, token_container_type &found_eoltokens);

Modified: branches/release/boost/wave/grammars/cpp_intlit_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_intlit_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_intlit_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,28 +13,21 @@
 
 #include <boost/wave/wave_config.hpp>
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/attribute/closure.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
-
-#include <boost/spirit/phoenix/operators.hpp>
-#include <boost/spirit/phoenix/primitives.hpp>
-#include <boost/spirit/phoenix/statements.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_closure.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
+
+#include <boost/spirit/include/phoenix1_operators.hpp>
+#include <boost/spirit/include/phoenix1_primitives.hpp>
+#include <boost/spirit/include/phoenix1_statements.hpp>
 
 #include <boost/wave/cpp_exceptions.hpp>
 #include <boost/wave/grammars/cpp_literal_grammar_gen.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -55,7 +48,7 @@
 namespace closures {
 
     struct intlit_closure
- : boost::spirit::closure<intlit_closure, uint_literal_type>
+ : boost::spirit::classic::closure<intlit_closure, uint_literal_type>
     {
         member1 val;
     };
@@ -68,7 +61,7 @@
     /**/
 
 struct intlit_grammar :
- boost::spirit::grammar<intlit_grammar, closures::intlit_closure::context_t>
+ boost::spirit::classic::grammar<intlit_grammar, closures::intlit_closure::context_t>
 {
     intlit_grammar(bool &is_unsigned_) : is_unsigned(is_unsigned_)
     {
@@ -79,27 +72,28 @@
     template <typename ScannerT>
     struct definition
     {
- typedef boost::spirit::rule<ScannerT> rule_t;
+ typedef boost::spirit::classic::rule<ScannerT> rule_t;
 
         rule_t int_lit;
- boost::spirit::subrule<0> sub_int_lit;
- boost::spirit::subrule<1> oct_lit;
- boost::spirit::subrule<2> hex_lit;
- boost::spirit::subrule<3> dec_lit;
+ boost::spirit::classic::subrule<0> sub_int_lit;
+ boost::spirit::classic::subrule<1> oct_lit;
+ boost::spirit::classic::subrule<2> hex_lit;
+ boost::spirit::classic::subrule<3> dec_lit;
 
         definition(intlit_grammar const &self)
         {
- using namespace boost::spirit;
- using namespace phoenix;
+ using namespace boost::spirit::classic;
+ namespace phx = phoenix;
+
             
             int_lit = (
                     sub_int_lit =
- ( ch_p('0')[self.val = 0] >> (hex_lit | oct_lit)
+ ( ch_p('0')[self.val = 0] >> (hex_lit | oct_lit)
                         | dec_lit
                         )
>> !as_lower_d[
- (ch_p('u')[var(self.is_unsigned) = true] || ch_p('l'))
- | (ch_p('l') || ch_p('u')[var(self.is_unsigned) = true])
+ (ch_p('u')[phx::var(self.is_unsigned) = true] || ch_p('l'))
+ | (ch_p('l') || ch_p('u')[phx::var(self.is_unsigned) = true])
                             ]
                     ,
 
@@ -107,23 +101,23 @@
                             (ch_p('X') | ch_p('x'))
>> uint_parser<uint_literal_type, 16>()
                             [
- self.val = arg1,
- var(self.is_unsigned) = true
+ self.val = phx::arg1,
+ phx::var(self.is_unsigned) = true
                             ]
                     ,
                         
                     oct_lit =
                        !uint_parser<uint_literal_type, 8>()
                         [
- self.val = arg1,
- var(self.is_unsigned) = true
+ self.val = phx::arg1,
+ phx::var(self.is_unsigned) = true
                         ]
                     ,
                         
                     dec_lit =
                         uint_parser<uint_literal_type, 10>()
                         [
- self.val = arg1
+ self.val = phx::arg1
                         ]
                     )
                 ;
@@ -164,7 +158,7 @@
 intlit_grammar_gen<TokenT>::evaluate(TokenT const &token,
     bool &is_unsigned)
 {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
     
 intlit_grammar g(is_unsigned);
 uint_literal_type result = 0;

Modified: branches/release/boost/wave/grammars/cpp_predef_macros_gen.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_predef_macros_gen.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_predef_macros_gen.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -11,7 +11,7 @@
 #if !defined(CPP_PREDEF_MACROS_GEN_HPP_CADB6D2C_76A4_4988_83E1_EFFC6902B9A2_INCLUDED)
 #define CPP_PREDEF_MACROS_GEN_HPP_CADB6D2C_76A4_4988_83E1_EFFC6902B9A2_INCLUDED
 
-#include <boost/spirit/tree/parse_tree.hpp>
+#include <boost/spirit/include/classic_parse_tree.hpp>
 
 #include <boost/wave/wave_config.hpp>
 
@@ -59,7 +59,7 @@
     typedef LexIteratorT iterator_type;
 
 // parse the cpp_grammar and return the resulting parse tree
- static boost::spirit::tree_parse_info<iterator_type>
+ static boost::spirit::classic::tree_parse_info<iterator_type>
     parse_predefined_macro (iterator_type const &first, iterator_type const &last);
 };
 

Modified: branches/release/boost/wave/grammars/cpp_predef_macros_grammar.hpp
==============================================================================
--- branches/release/boost/wave/grammars/cpp_predef_macros_grammar.hpp (original)
+++ branches/release/boost/wave/grammars/cpp_predef_macros_grammar.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -11,10 +11,10 @@
 #if !defined(CPP_PREDEF_MACROS_GRAMMAR_HPP_53858C9A_C202_4D60_AD92_DC9CAE4DBB43_INCLUDED)
 #define CPP_PREDEF_MACROS_GRAMMAR_HPP_53858C9A_C202_4D60_AD92_DC9CAE4DBB43_INCLUDED
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/tree/parse_tree.hpp>
-#include <boost/spirit/utility/confix.hpp>
-#include <boost/spirit/utility/lists.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_parse_tree.hpp>
+#include <boost/spirit/include/classic_confix.hpp>
+#include <boost/spirit/include/classic_lists.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/token_ids.hpp>
@@ -40,13 +40,14 @@
 ///////////////////////////////////////////////////////////////////////////////
 // Encapsulation of the grammar for command line driven predefined macros.
 struct predefined_macros_grammar :
- public boost::spirit::grammar<predefined_macros_grammar>
+ public boost::spirit::classic::grammar<predefined_macros_grammar>
 {
     template <typename ScannerT>
     struct definition
     {
     // 'normal' (parse_tree generating) rule type
- typedef boost::spirit::rule<ScannerT, boost::spirit::dynamic_parser_tag>
+ typedef boost::spirit::classic::rule<
+ ScannerT, boost::spirit::classic::dynamic_parser_tag>
             rule_type;
 
         rule_type plain_define, macro_definition, macro_parameters;
@@ -54,7 +55,7 @@
         definition(predefined_macros_grammar const &/*self*/)
         {
         // import the spirit and cpplexer namespaces here
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             using namespace boost::wave;
             using namespace boost::wave::util;
             
@@ -150,12 +151,12 @@
 
 template <typename LexIteratorT>
 BOOST_WAVE_PREDEF_MACROS_GRAMMAR_GEN_INLINE
-boost::spirit::tree_parse_info<LexIteratorT>
+boost::spirit::classic::tree_parse_info<LexIteratorT>
 predefined_macros_grammar_gen<LexIteratorT>::parse_predefined_macro (
     LexIteratorT const &first, LexIteratorT const &last)
 {
     predefined_macros_grammar g;
- return boost::spirit::pt_parse (first, last, g);
+ return boost::spirit::classic::pt_parse (first, last, g);
 }
 
 #undef BOOST_WAVE_PREDEF_MACROS_GRAMMAR_GEN_INLINE

Modified: branches/release/boost/wave/preprocessing_hooks.hpp
==============================================================================
--- branches/release/boost/wave/preprocessing_hooks.hpp (original)
+++ branches/release/boost/wave/preprocessing_hooks.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -263,9 +263,9 @@
 
     ///////////////////////////////////////////////////////////////////////////
     //
- // The function 'interpret_pragma' is called, whenever a #pragma command
+ // The function 'interpret_pragma' is called, whenever a '#pragma command'
     // directive is found which isn't known to the core Wave library, where
- // command is the value defined as the BOOST_WAVE_PRAGMA_KEYWORD constant
+ // 'command' is the value defined as the BOOST_WAVE_PRAGMA_KEYWORD constant
     // which defaults to "wave".
     //
     // The parameter 'ctx' is a reference to the context object used for

Modified: branches/release/boost/wave/token_ids.hpp
==============================================================================
--- branches/release/boost/wave/token_ids.hpp (original)
+++ branches/release/boost/wave/token_ids.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -295,7 +295,7 @@
     T_PLACEHOLDER = TOKEN_FROM_ID(T_LAST_TOKEN+2, WhiteSpaceTokenType),
     T_PLACEMARKER = TOKEN_FROM_ID(T_LAST_TOKEN+3, InternalTokenType),
     T_PARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ParameterTokenType),
- T_EXTPARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+5, ExtParameterTokenType)
+ T_EXTPARAMETERBASE = TOKEN_FROM_ID(T_LAST_TOKEN+4, ExtParameterTokenType)
 };
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/wave/util/cpp_include_paths.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_include_paths.hpp (original)
+++ branches/release/boost/wave/util/cpp_include_paths.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -328,7 +328,7 @@
         
         if (fs::exists(currpath)) {
             fs::path dirpath (s, fs::native);
- if (!dirpath.has_root_name()) {
+ if (!dirpath.has_root_directory()) {
                 dirpath = fs::path((*it).second, fs::native);
                 dirpath /= fs::path(s, fs::native);
             }
@@ -364,7 +364,7 @@
             // if 0 != current_path (#include_next handling) it can't be
             // the file in the current directory
                 fs::path dirpath (s, fs::native);
- if (!dirpath.has_root_name()) {
+ if (!dirpath.has_root_directory()) {
                     dirpath = fs::path(current_rel_dir.string(), fs::native);
                     dirpath /= fs::path(s, fs::native);
                 }

Modified: branches/release/boost/wave/util/cpp_iterator.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_iterator.hpp (original)
+++ branches/release/boost/wave/util/cpp_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -23,8 +23,8 @@
 #include <boost/shared_ptr.hpp>
 #include <boost/filesystem/path.hpp>
 #include <boost/filesystem/operations.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
-#include <boost/spirit/tree/parse_tree_utils.hpp>
+#include <boost/spirit/include/classic_multi_pass.hpp>
+#include <boost/spirit/include/classic_parse_tree_utils.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/pool/pool_alloc.hpp>
@@ -65,11 +65,12 @@
>
 inline bool
 retrieve_macroname(ContextT& ctx, ParseNodeT const &node,
- boost::spirit::parser_id id, TokenT &macroname, PositionT const &act_pos)
+ boost::spirit::classic::parser_id id, TokenT &macroname, PositionT& act_pos,
+ bool update_position)
 {
 ParseNodeT const *name_node = 0;
 
- using boost::spirit::find_node;
+ using boost::spirit::classic::find_node;
     if (!find_node(node, id, &name_node))
     {
         // ill formed define statement (unexpected, should not happen)
@@ -91,16 +92,20 @@
 
 // retrieve the macro name
     macroname = *children.front().value.begin();
+ if (update_position) {
+ macroname.set_position(act_pos);
+ act_pos.set_column(act_pos.get_column() + macroname.get_value().size());
+ }
     return true;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 // retrieve the macro parameters or the macro definition from the parse tree
-template <typename ParseNodeT, typename TokenT, typename ContainerT>
+template <typename ParseNodeT, typename ContainerT, typename PositionT>
 inline bool
 retrieve_macrodefinition(
- ParseNodeT const &node, boost::spirit::parser_id id,
- ContainerT &macrodefinition, TokenT const &/*t*/)
+ ParseNodeT const &node, boost::spirit::classic::parser_id id,
+ ContainerT &macrodefinition, PositionT& act_pos, bool update_position)
 {
     using namespace boost::wave;
     typedef typename ParseNodeT::const_tree_iterator const_tree_iterator;
@@ -108,7 +113,7 @@
 // find macro parameters/macro definition inside the parse tree
 std::pair<const_tree_iterator, const_tree_iterator> nodes;
 
- using boost::spirit::get_node_range;
+ using boost::spirit::classic::get_node_range;
     if (get_node_range(node, id, nodes)) {
     // copy all parameters to the supplied container
         typename ContainerT::iterator last_nonwhite = macrodefinition.end();
@@ -125,11 +130,21 @@
                 {
                     last_nonwhite = inserted;
                 }
+
+ if (update_position) {
+ (*inserted).set_position(act_pos);
+ act_pos.set_column(
+ act_pos.get_column() + (*inserted).get_value().size());
+ }
             }
         }
         
     // trim trailing whitespace (leading whitespace is trimmed by the grammar)
         if (last_nonwhite != macrodefinition.end()) {
+ if (update_position) {
+ act_pos.set_column((*last_nonwhite).get_position().get_column() +
+ (*last_nonwhite).get_value().size());
+ }
             macrodefinition.erase(++last_nonwhite, macrodefinition.end());
         }
         return true;
@@ -161,8 +176,8 @@
         ++begin;
         
 // parse the macro definition
-position_type act_pos("<command line>", 0);
-boost::spirit::tree_parse_info<lexer_type> hit =
+position_type act_pos("<command line>");
+boost::spirit::classic::tree_parse_info<lexer_type> hit =
     predef_macros_type::parse_predefined_macro(
         lexer_type(begin, end, position_type(), language), lexer_type());
 
@@ -171,7 +186,7 @@
             macrostring.c_str(), act_pos);
         return false;
     }
-
+
 // retrieve the macro definition from the parse tree
 token_type macroname;
 std::vector<token_type> macroparameters;
@@ -179,12 +194,12 @@
 bool has_parameters = false;
 
     if (!boost::wave::util::retrieve_macroname(ctx, *hit.trees.begin(),
- BOOST_WAVE_PLAIN_DEFINE_ID, macroname, act_pos))
+ BOOST_WAVE_PLAIN_DEFINE_ID, macroname, act_pos, true))
         return false;
     has_parameters = boost::wave::util::retrieve_macrodefinition(*hit.trees.begin(),
- BOOST_WAVE_MACRO_PARAMETERS_ID, macroparameters, token_type());
+ BOOST_WAVE_MACRO_PARAMETERS_ID, macroparameters, act_pos, true);
     boost::wave::util::retrieve_macrodefinition(*hit.trees.begin(),
- BOOST_WAVE_MACRO_DEFINITION_ID, macrodefinition, token_type());
+ BOOST_WAVE_MACRO_DEFINITION_ID, macrodefinition, act_pos, true);
 
 // If no macrodefinition is given, and the macro string does not end with a
 // '=', then the macro should be defined with the value '1'
@@ -218,7 +233,7 @@
 class pp_iterator_functor {
 
 public:
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::multi_pass_policies::functor_input policy
     typedef typename ContextT::token_type result_type;
 
 // eof token
@@ -242,9 +257,9 @@
 
 // parse tree related types
     typedef typename cpp_grammar_type::node_factory_type node_factory_type;
- typedef boost::spirit::tree_parse_info<lexer_type, node_factory_type>
+ typedef boost::spirit::classic::tree_parse_info<lexer_type, node_factory_type>
         tree_parse_info_type;
- typedef boost::spirit::tree_match<lexer_type, node_factory_type>
+ typedef boost::spirit::classic::tree_match<lexer_type, node_factory_type>
         parse_tree_match_type;
     typedef typename parse_tree_match_type::node_t parse_node_type; // tree_node<node_val_data<> >
     typedef typename parse_tree_match_type::parse_node_t parse_node_value_type; // node_val_data<>
@@ -286,9 +301,16 @@
     result_type const &get_next_token();
     result_type const &pp_token();
 
+ template <typename IteratorT>
+ bool extract_identifier(IteratorT &it);
+ template <typename IteratorT>
+ bool ensure_is_last_on_line(IteratorT& it);
+ template <typename IteratorT>
+ bool skip_to_eol_with_check(IteratorT &it);
+
     bool pp_directive();
     template <typename IteratorT>
- bool can_ignore_pp_directive(IteratorT &it);
+ bool handle_pp_directive(IteratorT &it);
     bool dispatch_directive(tree_parse_info_type const &hit,
         result_type const& found_directive,
         token_sequence_type const& found_eoltokens);
@@ -299,14 +321,12 @@
         typename parse_tree_type::const_iterator const &end, bool include_next);
 
     void on_define(parse_node_type const &node);
- void on_undefine(result_type const &t);
+ void on_undefine(lexer_type const &it);
     
- void on_ifdef(result_type const& found_directive,
- typename parse_tree_type::const_iterator const &begin,
- typename parse_tree_type::const_iterator const &end);
- void on_ifndef(result_type const& found_directive,
- typename parse_tree_type::const_iterator const &begin,
- typename parse_tree_type::const_iterator const &end);
+ void on_ifdef(result_type const& found_directive, lexer_type const &it);
+// typename parse_tree_type::const_iterator const &end);
+ void on_ifndef(result_type const& found_directive, lexer_type const& it);
+// typename parse_tree_type::const_iterator const &end);
     void on_else();
     void on_endif();
     void on_illformed(typename result_type::string_type s);
@@ -378,7 +398,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
         ctx.get_hooks().returning_from_include_file();
 #else
- ctx.get_hooks().returning_from_include_file(ctx);
+ ctx.get_hooks().returning_from_include_file(ctx.derived());
 #endif
 
     // restore the previous iteration context after finishing the preprocessing
@@ -483,11 +503,11 @@
                 act_token.set_value("\n");
             }
             
- } while (ctx.get_hooks().may_skip_whitespace(ctx, act_token, skipped_newline));
+ } while (ctx.get_hooks().may_skip_whitespace(ctx.derived(), act_token, skipped_newline));
     }
     catch (boost::wave::cpplexer::lexing_exception const& e) {
     // dispatch any lexer exceptions to the context hook function
- ctx.get_hooks().throw_exception(ctx, e);
+ ctx.get_hooks().throw_exception(ctx.derived(), e);
         return act_token;
     }
         
@@ -499,7 +519,7 @@
         if (need_emit_line_directives(ctx.get_language()) && emit_line_directive())
         {
             skipped_newline = false;
- ctx.get_hooks().may_skip_whitespace(ctx, act_token, skipped_newline); // feed ws eater FSM
+ ctx.get_hooks().may_skip_whitespace(ctx.derived(), act_token, skipped_newline); // feed ws eater FSM
             id = token_id(act_token);
         }
     }
@@ -532,11 +552,14 @@
         {
             token_sequence_type rescanned;
             
- std::string pp_number(act_token.get_value().c_str());
+ std::string pp_number(
+ util::to_string<std::string>(act_token.get_value()));
+
             lexer_type it = lexer_type(pp_number.begin(),
                 pp_number.end(), act_token.get_position(),
                 ctx.get_language());
             lexer_type end = lexer_type();
+
             for (/**/; it != end && T_EOF != token_id(*it); ++it)
                 rescanned.push_back(*it);
                 
@@ -567,7 +590,7 @@
             act_token.get_position());
     }
     whitespace.shift_tokens(id);
- return ctx.get_hooks().generated_token(ctx, act_token);
+ return ctx.get_hooks().generated_token(ctx.derived(), act_token);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -599,12 +622,11 @@
                 return act_token = pending_queue.front();
             }
             
- // fetch the current token
- act_token = *iter_ctx->first;
-
         // adjust the current position (line and column)
         bool was_seen_newline = seen_newline || returned_from_include_file;
 
+ // fetch the current token
+ act_token = *iter_ctx->first;
             act_pos = act_token.get_position();
             
         // act accordingly on the current token
@@ -637,7 +659,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
                     ctx.get_hooks().skipped_token(act_token);
 #else
- ctx.get_hooks().skipped_token(ctx, act_token);
+ ctx.get_hooks().skipped_token(ctx.derived(), act_token);
 #endif
                     continue;
                 }
@@ -672,7 +694,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
                 ctx.get_hooks().skipped_token(act_token);
 #else
- ctx.get_hooks().skipped_token(ctx, act_token);
+ ctx.get_hooks().skipped_token(ctx.derived(), act_token);
 #endif
                 ++iter_ctx->first;
             }
@@ -829,8 +851,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace impl {
 
- template <typename ContexT, typename IteratorT>
- bool next_token_is_pp_directive(ContexT &ctx, IteratorT &it, IteratorT const &end)
+ template <typename ContextT, typename IteratorT>
+ bool next_token_is_pp_directive(ContextT &ctx, IteratorT &it, IteratorT const &end)
     {
         using namespace boost::wave;
         
@@ -846,34 +868,58 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
             ctx.get_hooks().skipped_token(*it);
 #else
- ctx.get_hooks().skipped_token(ctx, *it);
+ ctx.get_hooks().skipped_token(ctx.derived(), *it);
 #endif
         }
         BOOST_ASSERT(it == end || id != T_UNKNOWN);
         return it != end && IS_CATEGORY(id, PPTokenType);
     }
     
- template <typename ContexT, typename IteratorT>
- bool pp_is_last_on_line(ContexT &ctx, IteratorT &it, IteratorT const &end)
+ // call 'found_directive' preprocessing hook
+ template <typename ContextT>
+ bool call_found_directive_hook(ContextT& ctx,
+ typename ContextT::token_type const& found_directive)
     {
- using namespace boost::wave;
- // this token get's skipped
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().skipped_token(*it);
+ ctx.get_hooks().found_directive(found_directive);
 #else
- ctx.get_hooks().skipped_token(ctx, *it);
+ if (ctx.get_hooks().found_directive(ctx.derived(), found_directive))
+ return true; // skip this directive and return newline only
 #endif
+ return false;
+ }
+
+ // call 'skipped_token' preprocessing hook
+ template <typename ContextT>
+ void call_skipped_token_hook(ContextT& ctx,
+ typename ContextT::token_type const& skipped)
+ {
+#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
+ ctx.get_hooks().skipped_token(skipped);
+#else
+ ctx.get_hooks().skipped_token(ctx.derived(), skipped);
+#endif
+ }
+
+ // verify that there is'nt anything significant left on the line
+ template <typename ContextT, typename IteratorT>
+ bool pp_is_last_on_line(ContextT &ctx, IteratorT &it, IteratorT const &end,
+ bool call_hook = true)
+ {
+ using namespace boost::wave;
+
+ // this token get's skipped
+ if (call_hook)
+ call_skipped_token_hook(ctx, *it);
 
         for (++it; it != end; ++it) {
- token_id id = token_id(*it);
+ token_id id = token_id(*it);
+
             if (T_CPPCOMMENT == id || T_NEWLINE == id ||
                 context_policies::util::ccomment_has_newline(*it))
             {
-#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().skipped_token(*it);
-#else
- ctx.get_hooks().skipped_token(ctx, *it);
-#endif
+ if (call_hook)
+ call_skipped_token_hook(ctx, *it);
                 ++it; // skip eol/C/C++ comment
                 return true; // no more significant tokens on this line
             }
@@ -882,28 +928,22 @@
                 break;
 
             // this token get's skipped
-#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().skipped_token(*it);
-#else
- ctx.get_hooks().skipped_token(ctx, *it);
-#endif
+ if (call_hook)
+ call_skipped_token_hook(ctx, *it);
         }
         return false;
     }
 
- template <typename ContexT, typename IteratorT>
- bool skip_to_eol(ContexT &ctx, IteratorT &it, IteratorT const &end)
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename ContextT, typename IteratorT>
+ bool skip_to_eol(ContextT &ctx, IteratorT &it, IteratorT const &end)
     {
         using namespace boost::wave;
         
         for (/**/; it != end; ++it) {
         token_id id = token_id(*it);
         
-#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().skipped_token(*it);
-#else
- ctx.get_hooks().skipped_token(ctx, *it);
-#endif
+ call_skipped_token_hook(ctx, *it);
             if (T_CPPCOMMENT == id || T_NEWLINE == id ||
                 context_policies::util::ccomment_has_newline(*it))
             {
@@ -913,90 +953,279 @@
         }
         return false;
     }
+
+}
+
+///////////////////////////////////////////////////////////////////////////////
+template <typename ContextT>
+template <typename IteratorT>
+inline bool
+pp_iterator_functor<ContextT>::extract_identifier(IteratorT &it)
+{
+ token_id id = util::impl::skip_whitespace(it, iter_ctx->last);
+ if (T_IDENTIFIER == id || IS_CATEGORY(id, KeywordTokenType) ||
+ IS_EXTCATEGORY(id, OperatorTokenType|AltExtTokenType) ||
+ IS_CATEGORY(id, BoolLiteralTokenType))
+ {
+ IteratorT save = it;
+ if (impl::pp_is_last_on_line(ctx, save, iter_ctx->last, false))
+ return true;
+ }
+
+ // report the ill formed directive
+ impl::skip_to_eol(ctx, it, iter_ctx->last);
+
+string_type str(util::impl::as_string<string_type>(iter_ctx->first, it));
+
+ seen_newline = true;
+ iter_ctx->first = it;
+ on_illformed(str);
+ return false;
+}
+
+///////////////////////////////////////////////////////////////////////////////
+template <typename ContextT>
+template <typename IteratorT>
+inline bool
+pp_iterator_functor<ContextT>::ensure_is_last_on_line(IteratorT& it)
+{
+ if (!impl::pp_is_last_on_line(ctx, it, iter_ctx->last, false))
+ {
+ // enable error recovery (start over with the next line)
+ impl::skip_to_eol(ctx, it, iter_ctx->last);
+
+ string_type str(util::impl::as_string<string_type>(
+ iter_ctx->first, it));
+
+ seen_newline = true;
+ iter_ctx->first = it;
+
+ // report an invalid directive
+ on_illformed(str);
+ return false;
+ }
+
+ if (it == iter_ctx->last && !need_single_line(ctx.get_language()))
+ {
+ // The line doesn't end with an eol but eof token.
+ seen_newline = true; // allow to resume after warning
+ iter_ctx->first = it;
+
+ // Trigger a warning that the last line was not terminated with a
+ // newline.
+ BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
+ last_line_not_terminated, "", act_pos);
+
+ return false;
+ }
+ return true;
 }
 
+template <typename ContextT>
+template <typename IteratorT>
+inline bool
+pp_iterator_functor<ContextT>::skip_to_eol_with_check(IteratorT &it)
+{
+ typename ContextT::string_type value ((*it).get_value());
+ if (!impl::skip_to_eol(ctx, it, iter_ctx->last) &&
+ !need_single_line(ctx.get_language()))
+ {
+ // The line doesn't end with an eol but eof token.
+ seen_newline = true; // allow to resume after warning
+ iter_ctx->first = it;
+
+ // Trigger a warning, that the last line was not terminated with a
+ // newline.
+ BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
+ last_line_not_terminated, "", act_pos);
+ return false;
+ }
+
+// normal line ending reached, adjust iterator and flag
+ seen_newline = true;
+ iter_ctx->first = it;
+ return true;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
-// can_ignore_pp_directive: handle certain pp_directives if if_block_status is
-// false
+// handle_pp_directive: handle certain pp_directives
 template <typename ContextT>
 template <typename IteratorT>
 inline bool
-pp_iterator_functor<ContextT>::can_ignore_pp_directive(IteratorT &it)
+pp_iterator_functor<ContextT>::handle_pp_directive(IteratorT &it)
 {
+ token_id id = token_id(*it);
     bool can_exit = true;
- if (IS_EXTCATEGORY(*it, PPConditionalTokenType)) {
- // simulate the if block hierarchy
- switch (static_cast<unsigned int>(token_id(*it))) {
- case T_PP_IFDEF: // #ifdef
- case T_PP_IFNDEF: // #ifndef
- case T_PP_IF: // #if
- ctx.enter_if_block(false);
- break;
+ if (!ctx.get_if_block_status()) {
+ if (IS_EXTCATEGORY(*it, PPConditionalTokenType)) {
+ // simulate the if block hierarchy
+ switch (static_cast<unsigned int>(id)) {
+ case T_PP_IFDEF: // #ifdef
+ case T_PP_IFNDEF: // #ifndef
+ case T_PP_IF: // #if
+ ctx.enter_if_block(false);
+ break;
 
- case T_PP_ELIF: // #elif
- if (!ctx.get_enclosing_if_block_status()) {
- if (!ctx.enter_elif_block(false)) {
- // #else without matching #if
- BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
- missing_matching_if, "#elif", act_pos);
- return true; // do not analyze this directive any further
+ case T_PP_ELIF: // #elif
+ if (!ctx.get_enclosing_if_block_status()) {
+ if (!ctx.enter_elif_block(false)) {
+ // #else without matching #if
+ BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
+ missing_matching_if, "#elif", act_pos);
+ return true; // do not analyze this directive any further
+ }
+ }
+ else {
+ can_exit = false; // #elif is not always safe to skip
                 }
+ break;
+
+ case T_PP_ELSE: // #else
+ case T_PP_ENDIF: // #endif
+ {
+ // handle this directive
+ if (T_PP_ELSE == token_id(*it))
+ on_else();
+ else
+ on_endif();
+
+ // make sure, there are no (non-whitespace) tokens left on
+ // this line
+ ensure_is_last_on_line(it);
+
+ // we skipped to the end of this line already
+ seen_newline = true;
+ iter_ctx->first = it;
+ }
+ return true;
+
+ default: // #something else
+ on_illformed((*it).get_value());
+ break;
             }
- else {
- can_exit = false; // #elif is not always safe to skip
+ }
+ }
+ else {
+ // try to handle the simple pp directives without parsing
+ result_type directive = *it;
+ bool include_next = false;
+ switch (static_cast<unsigned int>(id)) {
+ case T_PP_QHEADER: // #include "..."
+#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+ case T_PP_QHEADER_NEXT:
+#endif
+ include_next = (T_PP_QHEADER_NEXT == id) ? true : false;
+ if (!impl::call_found_directive_hook(ctx, *it))
+ {
+ string_type dir((*it).get_value());
+
+ // make sure, there are no (non-whitespace) tokens left on
+ // this line
+ if (ensure_is_last_on_line(it))
+ {
+ seen_newline = true;
+ iter_ctx->first = it;
+ on_include (dir, false, include_next);
+ }
+ return true;
+ }
+ break;
+
+ case T_PP_HHEADER: // #include <...>
+#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+ case T_PP_HHEADER_NEXT:
+#endif
+ include_next = (T_PP_HHEADER_NEXT == id) ? true : false;
+ if (!impl::call_found_directive_hook(ctx, *it))
+ {
+ string_type dir((*it).get_value());
+
+ // make sure, there are no (non-whitespace) tokens left on
+ // this line
+ if (ensure_is_last_on_line(it))
+ {
+ seen_newline = true;
+ iter_ctx->first = it;
+ on_include (dir, true, include_next);
+ }
+ return true;
             }
             break;
 
         case T_PP_ELSE: // #else
         case T_PP_ENDIF: // #endif
+ if (!impl::call_found_directive_hook(ctx, *it))
             {
- // handle this directive
+ // handle this directive
                 if (T_PP_ELSE == token_id(*it))
                     on_else();
                 else
                     on_endif();
 
- // make sure, there are no (non-whitespace) tokens left on this line
- string_type value ((*it).get_value());
- if (!impl::pp_is_last_on_line(ctx, it, iter_ctx->last)) {
- // enable error recovery (start over with the next line)
- impl::skip_to_eol(ctx, it, iter_ctx->last);
- seen_newline = true;
- iter_ctx->first = it;
-
- // report an invalid #else directive
- on_illformed(value);
- break;
- }
+ // make sure, there are no (non-whitespace) tokens left on
+ // this line
+ ensure_is_last_on_line(it);
 
             // we skipped to the end of this line already
                 seen_newline = true;
                 iter_ctx->first = it;
+ return true;
+ }
+ break;
+
+ // extract everything on this line as arguments
+// case T_PP_IF: // #if
+// case T_PP_ELIF: // #elif
+// case T_PP_ERROR: // #error
+// case T_PP_WARNING: // #warning
+// case T_PP_PRAGMA: // #pragma
+// case T_PP_LINE: // #line
+// break;
+
+ // extract first non-whitespace token as argument
+ case T_PP_UNDEF: // #undef
+ if (!impl::call_found_directive_hook(ctx, *it) &&
+ extract_identifier(it))
+ {
+ on_undefine(it);
+ }
+ break;
+
+ case T_PP_IFDEF: // #ifdef
+ if (!impl::call_found_directive_hook(ctx, *it) &&
+ extract_identifier(it))
+ {
+ on_ifdef(directive, it);
+ }
+ break;
+
+ case T_PP_IFNDEF: // #ifndef
+ if (!impl::call_found_directive_hook(ctx, *it) &&
+ extract_identifier(it))
+ {
+ on_ifndef(directive, it);
             }
- return true;
-
- default: // #something else
- on_illformed((*it).get_value());
+ break;
+
+#if BOOST_WAVE_SUPPORT_MS_EXTENSIONS != 0
+// case T_MSEXT_PP_REGION: // #region ...
+// break;
+//
+// case T_MSEXT_PP_ENDREGION: // #endregion
+// break;
+#endif
+
+ default:
+ can_exit = false;
             break;
         }
     }
 
 // start over with the next line, if only possible
     if (can_exit) {
- string_type value ((*it).get_value());
- if (!impl::skip_to_eol(ctx, it, iter_ctx->last)) {
- // The line doesn't end with an eol but eof token.
- seen_newline = true; // allow to resume after warning
- iter_ctx->first = it;
-
- // Trigger a warning, that the last line was not terminated with a
- // newline.
- BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
- last_line_not_terminated, "", act_pos);
- }
+ skip_to_eol_with_check(it);
         return true; // may be safely ignored
     }
-
     return false; // do not ignore this pp directive
 }
 
@@ -1012,7 +1241,7 @@
 lexer_type it = iter_ctx->first;
 
     if (!impl::next_token_is_pp_directive(ctx, it, iter_ctx->last)) {
- // eventually skip null pp directive (no need to do it via the parser)
+ // skip null pp directive (no need to do it via the parser)
         if (it != iter_ctx->last && T_POUND == BASE_TOKEN(token_id(*it))) {
             if (impl::pp_is_last_on_line(ctx, it, iter_ctx->last)) {
             // start over with the next line
@@ -1036,11 +1265,10 @@
 
 // ignore/handle all pp directives not related to conditional compilation while
 // if block status is false
- if (!ctx.get_if_block_status() && can_ignore_pp_directive(it)) {
- // we may skip pp directives only, if the current if block status is false
- seen_newline = true;
- iter_ctx->first = it;
- return true; // the pp directive was handled/skipped
+ if (handle_pp_directive(it)) {
+ // we may skip pp directives only if the current if block status is
+ // false or if it was a #include directive we could handle directly
+ return true; // the pp directive has been handled/skipped
     }
     
 // found a pp directive, so try to identify it, start with the pp_token
@@ -1062,7 +1290,7 @@
     // the found pp directive
     bool result = dispatch_directive (hit, found_directive, found_eoltokens);
     
- if (found_eof) {
+ if (found_eof && !need_single_line(ctx.get_language())) {
         // The line was terminated with an end of file token.
         // So trigger a warning, that the last line was not terminated with a
         // newline.
@@ -1115,29 +1343,25 @@
 token_id id = token_id(found_directive);
 
     // call preprocessing hook
-#if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().found_directive(found_directive);
-#else
- if (ctx.get_hooks().found_directive(ctx, found_directive))
+ if (impl::call_found_directive_hook(ctx, found_directive))
         return true; // skip this directive and return newline only
-#endif
-
- switch (static_cast<unsigned int>(id)) {
- case T_PP_QHEADER: // #include "..."
-#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
- case T_PP_QHEADER_NEXT: // #include_next "..."
-#endif
- on_include ((*nodeval.begin()).get_value(), false,
- T_PP_QHEADER_NEXT == id);
- break;
 
- case T_PP_HHEADER: // #include <...>
-#if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
- case T_PP_HHEADER_NEXT: // #include_next <...>
-#endif
- on_include ((*nodeval.begin()).get_value(), true,
- T_PP_HHEADER_NEXT == id);
- break;
+ switch (static_cast<unsigned int>(id)) {
+// case T_PP_QHEADER: // #include "..."
+// #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+// case T_PP_QHEADER_NEXT: // #include_next "..."
+// #endif
+// on_include ((*nodeval.begin()).get_value(), false,
+// T_PP_QHEADER_NEXT == id);
+// break;
+
+// case T_PP_HHEADER: // #include <...>
+// #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
+// case T_PP_HHEADER_NEXT: // #include_next <...>
+// #endif
+// on_include ((*nodeval.begin()).get_value(), true,
+// T_PP_HHEADER_NEXT == id);
+// break;
     
     case T_PP_INCLUDE: // #include ...
 #if BOOST_WAVE_SUPPORT_INCLUDE_NEXT != 0
@@ -1150,17 +1374,17 @@
         on_define (*begin);
         break;
 
- case T_PP_UNDEF: // #undef
- on_undefine(*nodeval.begin());
- break;
-
- case T_PP_IFDEF: // #ifdef
- on_ifdef(found_directive, begin_child_it, end_child_it);
- break;
-
- case T_PP_IFNDEF: // #ifndef
- on_ifndef(found_directive, begin_child_it, end_child_it);
- break;
+// case T_PP_UNDEF: // #undef
+// on_undefine(*nodeval.begin());
+// break;
+//
+// case T_PP_IFDEF: // #ifdef
+// on_ifdef(found_directive, begin_child_it, end_child_it);
+// break;
+//
+// case T_PP_IFNDEF: // #ifndef
+// on_ifndef(found_directive, begin_child_it, end_child_it);
+// break;
 
     case T_PP_IF: // #if
         on_if(found_directive, begin_child_it, end_child_it);
@@ -1170,13 +1394,13 @@
         on_elif(found_directive, begin_child_it, end_child_it, found_eoltokens);
         break;
 
- case T_PP_ELSE: // #else
- on_else();
- break;
-
- case T_PP_ENDIF: // #endif
- on_endif();
- break;
+// case T_PP_ELSE: // #else
+// on_else();
+// break;
+
+// case T_PP_ENDIF: // #endif
+// on_endif();
+// break;
 
     case T_PP_LINE: // #line
         on_line(begin_child_it, end_child_it);
@@ -1278,7 +1502,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
     ctx.get_hooks().found_include_directive(f, include_next);
 #else
- if (ctx.get_hooks().found_include_directive(ctx, f, include_next))
+ if (ctx.get_hooks().found_include_directive(ctx.derived(), f, include_next))
         return true; // client returned false: skip file to include
 #endif
 
@@ -1315,7 +1539,7 @@
         ctx.get_hooks().opened_include_file(dir_path, file_path,
             ctx.get_iteration_depth(), is_system);
 #else
- ctx.get_hooks().opened_include_file(ctx, dir_path, file_path,
+ ctx.get_hooks().opened_include_file(ctx.derived(), dir_path, file_path,
             is_system);
 #endif
 
@@ -1415,14 +1639,15 @@
 std::vector<result_type> macroparameters;
 token_sequence_type macrodefinition;
 bool has_parameters = false;
+position_type pos(act_token.get_position());
 
     if (!boost::wave::util::retrieve_macroname(ctx, node,
- BOOST_WAVE_PLAIN_DEFINE_ID, macroname, act_token.get_position()))
+ BOOST_WAVE_PLAIN_DEFINE_ID, macroname, pos, false))
         return;
     has_parameters = boost::wave::util::retrieve_macrodefinition(node,
- BOOST_WAVE_MACRO_PARAMETERS_ID, macroparameters, act_token);
+ BOOST_WAVE_MACRO_PARAMETERS_ID, macroparameters, pos, false);
     boost::wave::util::retrieve_macrodefinition(node,
- BOOST_WAVE_MACRO_DEFINITION_ID, macrodefinition, act_token);
+ BOOST_WAVE_MACRO_DEFINITION_ID, macrodefinition, pos, false);
 
     if (has_parameters) {
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
@@ -1517,12 +1742,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename ContextT>
 inline void
-pp_iterator_functor<ContextT>::on_undefine (result_type const &token)
+pp_iterator_functor<ContextT>::on_undefine (lexer_type const &it)
 {
     BOOST_ASSERT(ctx.get_if_block_status());
 
 // retrieve the macro name to undefine from the parse tree
- ctx.remove_macro_definition(token.get_value()); // throws for predefined macros
+ ctx.remove_macro_definition((*it).get_value()); // throws for predefined macros
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -1533,27 +1758,30 @@
 template <typename ContextT>
 inline void
 pp_iterator_functor<ContextT>::on_ifdef(
- result_type const& found_directive,
- typename parse_tree_type::const_iterator const &begin,
- typename parse_tree_type::const_iterator const &end)
+ result_type const& found_directive, lexer_type const &it)
+// typename parse_tree_type::const_iterator const &it)
+// typename parse_tree_type::const_iterator const &end)
 {
-get_token_value<result_type, parse_node_type> get_value;
-token_sequence_type toexpand;
-
- std::copy(make_ref_transform_iterator((*begin).children.begin(), get_value),
- make_ref_transform_iterator((*begin).children.end(), get_value),
- std::inserter(toexpand, toexpand.end()));
+// get_token_value<result_type, parse_node_type> get_value;
+// token_sequence_type toexpand;
+//
+// std::copy(make_ref_transform_iterator((*begin).children.begin(), get_value),
+// make_ref_transform_iterator((*begin).children.end(), get_value),
+// std::inserter(toexpand, toexpand.end()));
 
 bool is_defined = false;
+token_sequence_type directive;
+
+ directive.insert(directive.end(), *it);
 
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- is_defined = ctx.is_defined_macro(toexpand.begin(), toexpand.end());
- ctx.get_hooks().evaluated_conditional_expression(toexpand, is_defined);
+ is_defined = ctx.is_defined_macro((*it).get_value()); // toexpand.begin(), toexpand.end());
+ ctx.get_hooks().evaluated_conditional_expression(directive, is_defined);
 #else
     do {
- is_defined = ctx.is_defined_macro(toexpand.begin(), toexpand.end());
- } while (ctx.get_hooks().evaluated_conditional_expression(ctx,
- found_directive, toexpand, is_defined));
+ is_defined = ctx.is_defined_macro((*it).get_value()); // toexpand.begin(), toexpand.end());
+ } while (ctx.get_hooks().evaluated_conditional_expression(ctx.derived(),
+ found_directive, directive, is_defined));
 #endif
     ctx.enter_if_block(is_defined);
 }
@@ -1566,27 +1794,30 @@
 template <typename ContextT>
 inline void
 pp_iterator_functor<ContextT>::on_ifndef(
- result_type const& found_directive,
- typename parse_tree_type::const_iterator const &begin,
- typename parse_tree_type::const_iterator const &end)
+ result_type const& found_directive, lexer_type const &it)
+// typename parse_tree_type::const_iterator const &it)
+// typename parse_tree_type::const_iterator const &end)
 {
-get_token_value<result_type, parse_node_type> get_value;
-token_sequence_type toexpand;
-
- std::copy(make_ref_transform_iterator((*begin).children.begin(), get_value),
- make_ref_transform_iterator((*begin).children.end(), get_value),
- std::inserter(toexpand, toexpand.end()));
+// get_token_value<result_type, parse_node_type> get_value;
+// token_sequence_type toexpand;
+//
+// std::copy(make_ref_transform_iterator((*begin).children.begin(), get_value),
+// make_ref_transform_iterator((*begin).children.end(), get_value),
+// std::inserter(toexpand, toexpand.end()));
 
 bool is_defined = false;
+token_sequence_type directive;
+
+ directive.insert(directive.end(), *it);
 
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- is_defined = ctx.is_defined_macro(toexpand.begin(), toexpand.end());
- ctx.get_hooks().evaluated_conditional_expression(toexpand, is_defined);
+ is_defined = ctx.is_defined_macro((*it).get_value()); // toexpand.begin(), toexpand.end());
+ ctx.get_hooks().evaluated_conditional_expression(directive, is_defined);
 #else
     do {
- is_defined = ctx.is_defined_macro(toexpand.begin(), toexpand.end());
- } while (ctx.get_hooks().evaluated_conditional_expression(ctx,
- found_directive, toexpand, is_defined));
+ is_defined = ctx.is_defined_macro((*it).get_value()); // toexpand.begin(), toexpand.end());
+ } while (ctx.get_hooks().evaluated_conditional_expression(ctx.derived(),
+ found_directive, directive, is_defined));
 #endif
     ctx.enter_if_block(!is_defined);
 }
@@ -1695,7 +1926,7 @@
         }
         catch (boost::wave::preprocess_exception const& e) {
         // any errors occurred have to be dispatched to the context hooks
- ctx.get_hooks().throw_exception(ctx, e);
+ ctx.get_hooks().throw_exception(ctx.derived(), e);
             break;
         }
                         
@@ -1703,7 +1934,7 @@
         ctx.get_hooks().evaluated_conditional_expression(toexpand, if_status);
     } while (false);
 #else
- } while (ctx.get_hooks().evaluated_conditional_expression(ctx,
+ } while (ctx.get_hooks().evaluated_conditional_expression(ctx.derived(),
                 found_directive, toexpand, if_status)
              && status == grammars::error_noerror);
 #endif
@@ -1799,14 +2030,14 @@
         }
         catch (boost::wave::preprocess_exception const& e) {
         // any errors occurred have to be dispatched to the context hooks
- ctx.get_hooks().throw_exception(ctx, e);
+ ctx.get_hooks().throw_exception(ctx.derived(), e);
         }
                 
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
         ctx.get_hooks().evaluated_conditional_expression(toexpand, if_status);
     } while (false);
 #else
- } while (ctx.get_hooks().evaluated_conditional_expression(ctx,
+ } while (ctx.get_hooks().evaluated_conditional_expression(ctx.derived(),
                 found_directive, toexpand, if_status)
              && status == grammars::error_noerror);
 #endif
@@ -1884,7 +2115,7 @@
                 error = preprocess_exception::bad_line_number;
 
         // re-extract line number with spirit to diagnose overflow
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             if (!parse((*first).get_value().c_str(), int_p).full)
                 error = preprocess_exception::bad_line_number;
                 
@@ -1964,12 +2195,12 @@
         }
 
     // call the corresponding pp hook function
- ctx.get_hooks().found_line_directive(ctx, expanded, line,
+ ctx.get_hooks().found_line_directive(ctx.derived(), expanded, line,
             file_name.c_str());
     }
     else {
     // call the corresponding pp hook function
- ctx.get_hooks().found_line_directive(ctx, toexpand, line,
+ ctx.get_hooks().found_line_directive(ctx.derived(), toexpand, line,
             file_name.c_str());
     }
     
@@ -2028,13 +2259,13 @@
     typename token_sequence_type::iterator begin2 = toexpand.begin();
     ctx.expand_whole_tokensequence(begin2, toexpand.end(), expanded,
         false);
- if (!ctx.get_hooks().found_error_directive(ctx, toexpand))
+ if (!ctx.get_hooks().found_error_directive(ctx.derived(), toexpand))
 #else
 // simply copy the body of this #error message to the issued diagnostic
 // message
     std::copy(first, make_ref_transform_iterator(end, get_value),
         std::inserter(expanded, expanded.end()));
- if (!ctx.get_hooks().found_error_directive(ctx, expanded))
+ if (!ctx.get_hooks().found_error_directive(ctx.derived(), expanded))
 #endif
     {
     // report the corresponding error
@@ -2076,13 +2307,13 @@
     typename token_sequence_type::iterator begin2 = toexpand.begin();
     ctx.expand_whole_tokensequence(begin2, toexpand.end(), expanded,
         false);
- if (!ctx.get_hooks().found_warning_directive(ctx, toexpand))
+ if (!ctx.get_hooks().found_warning_directive(ctx.derived(), toexpand))
 #else
 // simply copy the body of this #warning message to the issued diagnostic
 // message
     std::copy(first, make_ref_transform_iterator(end, get_value),
         std::inserter(expanded, expanded.end()));
- if (!ctx.get_hooks().found_warning_directive(ctx, expanded))
+ if (!ctx.get_hooks().found_warning_directive(ctx.derived(), expanded))
 #endif
     {
     // report the corresponding error
@@ -2192,7 +2423,8 @@
     if (it == end) // eof reached
         return false;
 
- return boost::wave::util::interpret_pragma(ctx, act_token, it, end, result);
+ return boost::wave::util::interpret_pragma(
+ ctx.derived(), act_token, it, end, result);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -2209,7 +2441,7 @@
 
 template <typename ContextT>
 class pp_iterator
-: public boost::spirit::multi_pass<
+: public boost::spirit::classic::multi_pass<
         boost::wave::impl::pp_iterator_functor<ContextT>,
         boost::wave::util::functor_input
>
@@ -2219,7 +2451,7 @@
 
 private:
     typedef
- boost::spirit::multi_pass<input_policy_type, boost::wave::util::functor_input>
+ boost::spirit::classic::multi_pass<input_policy_type, boost::wave::util::functor_input>
         base_type;
     typedef pp_iterator<ContextT> self_type;
     typedef boost::wave::util::functor_input functor_input_type;

Modified: branches/release/boost/wave/util/cpp_macromap.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_macromap.hpp (original)
+++ branches/release/boost/wave/util/cpp_macromap.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -100,13 +100,12 @@
         typename defined_macros_type::iterator &it,
         defined_macros_type *scope = 0) const;
         
- // expects a token sequence as its parameters
+// expects a token sequence as its parameters
     template <typename IteratorT>
     bool is_defined(IteratorT const &begin, IteratorT const &end) const;
     
- // expects an arbitrary string as its parameter
- template<typename StringT>
- bool is_defined(StringT const &str) const;
+// expects an arbitrary string as its parameter
+ bool is_defined(string_type const &str) const;
 
 // Get the macro definition for the given macro scope
     bool get_macro(string_type const &name, bool &has_parameters,
@@ -116,7 +115,8 @@
         defined_macros_type *scope = 0) const;
         
 // Remove a macro name from the given macro scope
- bool remove_macro(token_type const &token, bool even_predefined = false);
+ bool remove_macro(string_type const &name, position_type const& pos,
+ bool even_predefined = false);
     
     template <typename IteratorT, typename ContainerT>
     token_type const &expand_tokensequence(IteratorT &first,
@@ -309,9 +309,10 @@
 
     if (it != current_scope->end()) {
     // redefinition, should not be different
- if ((*it).second->is_functionlike != has_parameters ||
- !impl::parameters_equal((*it).second->macroparameters, parameters) ||
- !impl::definition_equals((*it).second->macrodefinition, definition))
+ macro_definition_type* macrodef = (*it).second.get();
+ if (macrodef->is_functionlike != has_parameters ||
+ !impl::parameters_equal(macrodef->macroparameters, parameters) ||
+ !impl::definition_equals(macrodef->macrodefinition, definition))
         {
             BOOST_WAVE_THROW_NAME_CTX(ctx, macro_handling_exception,
                 macro_redefinition, name.get_value().c_str(), main_pos,
@@ -373,7 +374,7 @@
         (*p.first).second->macroparameters,
         (*p.first).second->macrodefinition, is_predefined);
 #else
- ctx.get_hooks().defined_macro(ctx, name, has_parameters,
+ ctx.get_hooks().defined_macro(ctx.derived(), name, has_parameters,
         (*p.first).second->macroparameters,
         (*p.first).second->macrodefinition, is_predefined);
 #endif
@@ -426,7 +427,7 @@
 
 IteratorT it = begin;
 string_type name ((*it).get_value());
-typename defined_macros_type::iterator cit(current_macros -> find(name));
+typename defined_macros_type::iterator cit;
 
     if (++it != end) {
     // there should be only one token as the inspected name
@@ -434,20 +435,17 @@
             impl::get_full_name(begin, end).c_str(), main_pos);
         return false;
     }
- return cit != current_macros -> end();
+ return is_defined(name, cit, 0);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
 // same as above, only takes an arbitrary string type as its parameter
 template <typename ContextT>
-template<typename StringT>
 inline bool
-macromap<ContextT>::is_defined(StringT const &str) const
+macromap<ContextT>::is_defined(string_type const &str) const
 {
-string_type name (str.c_str());
-typename defined_macros_type::iterator cit(current_macros -> find(name));
-
- return cit != current_macros -> end();
+ typename defined_macros_type::iterator cit;
+ return is_defined(str, cit, 0);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -484,10 +482,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 template <typename ContextT>
 inline bool
-macromap<ContextT>::remove_macro(token_type const &token,
- bool even_predefined)
+macromap<ContextT>::remove_macro(string_type const &name,
+ position_type const& pos, bool even_predefined)
 {
- string_type name (token.get_value());
     typename defined_macros_type::iterator it = current_macros->find(name);
     
     if (it != current_macros->end()) {
@@ -501,16 +498,18 @@
         current_macros->erase(it);
         
     // call the context supplied preprocessing hook function
+ token_type tok(T_IDENTIFIER, name, pos);
+
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
- ctx.get_hooks().undefined_macro(token);
+ ctx.get_hooks().undefined_macro(tok);
 #else
- ctx.get_hooks().undefined_macro(ctx, token);
+ ctx.get_hooks().undefined_macro(ctx.derived(), tok);
 #endif
         return true;
     }
     else if (impl::is_special_macroname(name)) {
         BOOST_WAVE_THROW_CTX(ctx, preprocess_exception, bad_undefine_statement,
- name.c_str(), main_pos);
+ name.c_str(), pos);
     }
     return false; // macro was not defined
 }
@@ -870,10 +869,10 @@
 bool seen_newline;
     
     while (!pending_queue.empty() || first_it != last_it) {
- token_type t = expand_tokensequence_worker(pending_queue, first_it,
- last_it, seen_newline, expand_operator_defined);
-
- expanded.push_back(t);
+ expanded.push_back(
+ expand_tokensequence_worker(pending_queue, first_it,
+ last_it, seen_newline, expand_operator_defined)
+ );
     }
 
 // should have returned all expanded tokens
@@ -1269,8 +1268,8 @@
                 macro_def.macroname, macro_def.macroparameters,
                 macro_def.macrodefinition, curr_token, arguments);
 #else
- if (ctx.get_hooks().expanding_function_like_macro(
- ctx, macro_def.macroname, macro_def.macroparameters,
+ if (ctx.get_hooks().expanding_function_like_macro(ctx.derived(),
+ macro_def.macroname, macro_def.macroparameters,
                     macro_def.macrodefinition, curr_token, arguments,
                     seqstart, seqend))
             {
@@ -1291,9 +1290,8 @@
             ctx.get_hooks().expanding_object_like_macro(
                 macro_def.macroname, macro_def.macrodefinition, curr_token);
 #else
- if (ctx.get_hooks().expanding_object_like_macro(
- ctx, macro_def.macroname, macro_def.macrodefinition,
- curr_token))
+ if (ctx.get_hooks().expanding_object_like_macro(ctx.derived(),
+ macro_def.macroname, macro_def.macrodefinition, curr_token))
             {
                 // do not expand this macro, just copy the whole sequence
                 replacement_list.push_back(curr_token);
@@ -1335,9 +1333,8 @@
             ctx.get_hooks().expanding_object_like_macro(
                 macro_def.macroname, macro_def.macrodefinition, curr_token);
 #else
- if (ctx.get_hooks().expanding_object_like_macro(
- ctx, macro_def.macroname, macro_def.macrodefinition,
- curr_token))
+ if (ctx.get_hooks().expanding_object_like_macro(ctx.derived(),
+ macro_def.macroname, macro_def.macrodefinition, curr_token))
             {
                 // do not expand this macro, just copy the whole sequence
                 replacement_list.push_back(curr_token);
@@ -1368,7 +1365,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
     ctx.get_hooks().expanded_macro(replacement_list);
 #else
- ctx.get_hooks().expanded_macro(ctx, replacement_list);
+ ctx.get_hooks().expanded_macro(ctx.derived(), replacement_list);
 #endif
     
     rescan_replacement_list(curr_token, macro_def, replacement_list,
@@ -1377,7 +1374,7 @@
 #if BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS != 0
     ctx.get_hooks().rescanned_macro(expanded_list);
 #else
- ctx.get_hooks().rescanned_macro(ctx, expanded_list);
+ ctx.get_hooks().rescanned_macro(ctx.derived(), expanded_list);
 #endif
     expanded.splice(expanded.end(), expanded_list);
     return true; // rescan is required
@@ -1387,7 +1384,7 @@
 //
 // If the token under inspection points to a certain predefined macro it will
 // be expanded, otherwise false is returned.
-// (only __FILE__, __LINE__ and __INCLUDE_LEVEL__ macros are expaned here)
+// (only __FILE__, __LINE__ and __INCLUDE_LEVEL__ macros are expanded here)
 //
 ///////////////////////////////////////////////////////////////////////////////
 template <typename ContextT>
@@ -1454,7 +1451,7 @@
 
 ContainerT result;
 IteratorT start = first;
-boost::spirit::parse_info<IteratorT> hit =
+boost::spirit::classic::parse_info<IteratorT> hit =
     defined_grammar_gen<typename ContextT::lexer_type>::
         parse_operator_defined(start, last, result);
     

Modified: branches/release/boost/wave/util/cpp_macromap_utils.hpp
==============================================================================
--- branches/release/boost/wave/util/cpp_macromap_utils.hpp (original)
+++ branches/release/boost/wave/util/cpp_macromap_utils.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -100,7 +100,8 @@
     //
     ///////////////////////////////////////////////////////////////////////////
     template <typename IteratorT, typename UnputIteratorT>
- class assign {
+ class assign
+ {
     public:
         assign(IteratorT &it_, UnputIteratorT const &uit_)
         : it(it_), uit(uit_) {}
@@ -170,13 +171,7 @@
 {
     using namespace boost::wave;
     
-#if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
- if (T_PARAMETERBASE == token_id(left) ||
- T_EXTPARAMETERBASE == token_id(left))
-#else
- if (T_PARAMETERBASE == token_id(left))
-#endif
- {
+ if (IS_CATEGORY(left, ParameterTokenType)) {
     // if the existing token is of type T_PARAMETERBASE, then the right token
     // must be of type T_IDENTIFIER or a keyword
     token_id id = token_id(right);
@@ -500,8 +495,52 @@
 };
 
 ///////////////////////////////////////////////////////////////////////////////
+// Convert a string of an arbitrary string compatible type to a internal
+// string (BOOST_WAVE_STRING)
+template <typename Target, typename Src>
+struct to_string_helper
+{
+ typedef Target type;
+
+ static Target call(Src const& str)
+ {
+ return Target(str.c_str());
+ }
+};
+
+// do nothing if types are equal
+template <typename Src>
+struct to_string_helper<Src, Src>
+{
+ typedef Src const& type;
+
+ static Src const& call(Src const& str)
+ {
+ return str;
+ }
+};
+
+template <typename Target>
+struct to_string_helper<Target, char const*>
+{
+ typedef Target type;
+
+ static Target call(char const* str)
+ {
+ return Target(str);
+ }
+};
+
+///////////////////////////////////////////////////////////////////////////////
 } // namespace impl
 
+template <typename Target, typename Src>
+inline typename impl::to_string_helper<Target, Src>::type
+to_string(Src const& src)
+{
+ return impl::to_string_helper<Target, Src>::call(src);
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 } // namespace util
 } // namespace wave

Modified: branches/release/boost/wave/util/file_position.hpp
==============================================================================
--- branches/release/boost/wave/util/file_position.hpp (original)
+++ branches/release/boost/wave/util/file_position.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,8 +17,8 @@
 #include <ostream>
 
 #include <boost/assert.hpp>
-#include <boost/spirit/version.hpp>
-#include <boost/spirit/iterator/position_iterator.hpp>
+#include <boost/spirit/include/classic_version.hpp>
+#include <boost/spirit/include/classic_position_iterator.hpp>
 #include <boost/wave/wave_config.hpp>
 #if BOOST_WAVE_SERIALIZATION != 0
 #include <boost/serialization/serialization.hpp>
@@ -144,16 +144,16 @@
 //
 // The position_iterator used by Wave is now based on the corresponding Spirit
 // type. This type is used with our own file_position though. The needed
-// specialization of the boost::spirit::position_policy class is provided
-// below.
+// specialization of the boost::spirit::classic::position_policy class is
+// provided below.
 //
 ///////////////////////////////////////////////////////////////////////////////
 
 template <typename IteratorT, typename PositionT>
 struct position_iterator
-: boost::spirit::position_iterator<IteratorT, PositionT>
+: boost::spirit::classic::position_iterator<IteratorT, PositionT>
 {
- typedef boost::spirit::position_iterator<IteratorT, PositionT> base_type;
+ typedef boost::spirit::classic::position_iterator<IteratorT, PositionT> base_type;
     
     position_iterator()
     {
@@ -172,13 +172,11 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 
-#if SPIRIT_VERSION >= 0x1700
-
-namespace spirit {
+namespace spirit { namespace classic {
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// The boost::spirit::position_policy has to be specialized for our
+// The boost::spirit::classic::position_policy has to be specialized for our
 // file_position class
 //
 ///////////////////////////////////////////////////////////////////////////////
@@ -218,9 +216,7 @@
     };
 
 ///////////////////////////////////////////////////////////////////////////////
-} // namespace spirit
-
-#endif // SPIRIT_VERSION >= 0x1700
+}} // namespace spirit::classic
 
 } // namespace boost
 

Modified: branches/release/boost/wave/util/flex_string.hpp
==============================================================================
--- branches/release/boost/wave/util/flex_string.hpp (original)
+++ branches/release/boost/wave/util/flex_string.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -1430,7 +1430,6 @@
 
     struct Invariant;
     friend struct Invariant;
-
     struct Invariant
     {
         Invariant(const flex_string& s) : s_(s)

Modified: branches/release/boost/wave/util/functor_input.hpp
==============================================================================
--- branches/release/boost/wave/util/functor_input.hpp (original)
+++ branches/release/boost/wave/util/functor_input.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -12,7 +12,7 @@
 #define FUNCTOR_INPUT_HPP_ED3A4C21_8F8A_453F_B438_08214FAC106A_INCLUDED
 
 #include <boost/assert.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/spirit/include/classic_multi_pass.hpp>
 #include <boost/wave/wave_config.hpp>
 
 // this must occur after all of the includes and before any code appears
@@ -100,7 +100,7 @@
 
         void swap(inner &x)
         {
- boost::spirit::impl::mp_swap(data, x.data);
+ boost::spirit::classic::impl::mp_swap(data, x.data);
         }
         
         void ensure_initialized() const

Modified: branches/release/boost/wave/util/insert_whitespace_detection.hpp
==============================================================================
--- branches/release/boost/wave/util/insert_whitespace_detection.hpp (original)
+++ branches/release/boost/wave/util/insert_whitespace_detection.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -388,10 +388,18 @@
             break;
 
         case T_GREATER:
- if (T_MINUS == prev)
- return true; // prevent ->
- // fall through
+ if (T_MINUS == prev || T_GREATER == prev)
+ return true; // prevent -> or >>
+ if (!impl::handle_parens(prev))
+ return false;
+ if (T_QUESTION_MARK == prev && T_QUESTION_MARK == beforeprev)
+ return true;
+ break;
+
         case T_LESS:
+ if (T_LESS == prev)
+ return true; // prevent <<
+ // fall through
         case T_CHARLIT:
         case T_NOT:
         case T_NOTEQUAL:

Modified: branches/release/boost/wave/util/interpret_pragma.hpp
==============================================================================
--- branches/release/boost/wave/util/interpret_pragma.hpp (original)
+++ branches/release/boost/wave/util/interpret_pragma.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,11 +14,10 @@
 #include <string>
 #include <list>
 
-#include <boost/spirit/core.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
+#include <boost/spirit/include/classic_confix.hpp>
 
 #include <boost/wave/wave_config.hpp>
 
@@ -31,13 +30,8 @@
 #include <boost/wave/language_support.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -82,7 +76,7 @@
         //
         // All recognized #pragma operators are forwarded to the supplied
         // preprocessing hook.
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             token_type option;
             ContainerT values;
             
@@ -105,12 +99,10 @@
                                     spirit_assign_actor(option)
                                 ]
                             )
- >> !( ch_p(T_LEFTPAREN)
- >> lexeme_d[
- *(anychar_p[spirit_append_actor(values)] - ch_p(T_RIGHTPAREN))
- ]
- >> ch_p(T_RIGHTPAREN)
- ),
+ >> !comment_nest_p(
+ ch_p(T_LEFTPAREN),
+ ch_p(T_RIGHTPAREN)
+ )[spirit_assign_actor(values)],
                     pattern_p(WhiteSpaceTokenType, TokenTypeMask)).hit)
             {
                 BOOST_WAVE_THROW_CTX(ctx, preprocess_exception,
@@ -120,16 +112,17 @@
                 return false;
             }
         
- // remove the falsely matched closing parenthesis
- if (values.size() > 0) {
- BOOST_ASSERT(T_RIGHTPAREN == values.back());
+ // remove the falsely matched surrounding parenthesis's
+ if (values.size() >= 2) {
+ BOOST_ASSERT(T_LEFTPAREN == values.front() && T_RIGHTPAREN == values.back());
+ values.erase(values.begin());
                 typename ContainerT::reverse_iterator rit = values.rbegin();
                 values.erase((++rit).base());
             }
             
         // decode the option (call the context_policy hook)
             if (!ctx.get_hooks().interpret_pragma(
- ctx, pending, option, values, act_token))
+ ctx.derived(), pending, option, values, act_token))
             {
             // unknown #pragma option
             string_type option_str ((*it).get_value());
@@ -156,7 +149,7 @@
 #if BOOST_WAVE_SUPPORT_PRAGMA_MESSAGE != 0
         else if ((*it).get_value() == "message") {
         // #pragma message(...) or #pragma message ...
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             ContainerT values;
             
             if (!parse (++it, end,

Modified: branches/release/boost/wave/util/macro_definition.hpp
==============================================================================
--- branches/release/boost/wave/util/macro_definition.hpp (original)
+++ branches/release/boost/wave/util/macro_definition.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,6 +14,9 @@
 #include <vector>
 #include <list>
 
+#include <boost/detail/atomic_count.hpp>
+#include <boost/intrusive_ptr.hpp>
+
 #include <boost/wave/wave_config.hpp>
 #if BOOST_WAVE_SERIALIZATION != 0
 #include <boost/serialization/serialization.hpp>
@@ -59,6 +62,7 @@
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
         , has_ellipsis(false)
 #endif
+ , use_count(0)
     {
     }
     // generated copy constructor
@@ -131,6 +135,7 @@
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
     bool has_ellipsis;
 #endif
+ boost::detail::atomic_count use_count;
 
 #if BOOST_WAVE_SERIALIZATION != 0
     // default constructor is needed for serialization only
@@ -140,6 +145,7 @@
 #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0
       , has_ellipsis(false)
 #endif
+ , use_count(0)
     {}
 
 private:
@@ -163,6 +169,24 @@
 #endif
 };
 
+#if BOOST_WAVE_SERIALIZATION == 0
+///////////////////////////////////////////////////////////////////////////////
+template <typename TokenT, typename ContainerT>
+inline void
+intrusive_ptr_add_ref(macro_definition<TokenT, ContainerT>* p)
+{
+ ++p->use_count;
+}
+
+template <typename TokenT, typename ContainerT>
+inline void
+intrusive_ptr_release(macro_definition<TokenT, ContainerT>* p)
+{
+ if (--p->use_count == 0)
+ delete p;
+}
+#endif
+
 ///////////////////////////////////////////////////////////////////////////////
 } // namespace util
 } // namespace wave

Modified: branches/release/boost/wave/util/macro_helpers.hpp
==============================================================================
--- branches/release/boost/wave/util/macro_helpers.hpp (original)
+++ branches/release/boost/wave/util/macro_helpers.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,6 +17,7 @@
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/cpplexer/validate_universal_char.hpp>
+#include <boost/wave/util/unput_queue_iterator.hpp>
 
 // this must occur after all of the includes and before any code appears
 #ifdef BOOST_HAS_ABI_HEADERS
@@ -63,13 +64,21 @@
         typename StringT::size_type pos1 = value.find_first_of ("\\", 0);
         if (StringT::npos != pos1) {
             do {
- if ('\\' == value[pos1+1] || '\"' == value[pos1+1] ||
- '?' == value[pos1+1])
- {
+ switch (value[pos1+1]) {
+ case '\\':
+ case '\"':
+ case '?':
                     result = result + value.substr(pos, pos1-pos);
                     pos1 = value.find_first_of ("\\", (pos = pos1+1)+1);
- }
- else {
+ break;
+
+ case 'n':
+ result = result + value.substr(pos, pos1-pos) + "\n";
+ pos1 = value.find_first_of ("\\", pos = pos1+1);
+ ++pos;
+ break;
+
+ default:
                     result = result + value.substr(pos, pos1-pos+1);
                     pos1 = value.find_first_of ("\\", pos = pos1+1);
                 }
@@ -245,6 +254,40 @@
     }
 #endif
 
+ // Skip all whitespace characters and queue the skipped characters into the
+ // given container
+ template <typename IteratorT>
+ inline boost::wave::token_id
+ skip_whitespace(IteratorT &first, IteratorT const &last)
+ {
+ token_id id = util::impl::next_token<IteratorT>::peek(first, last, false);
+ if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
+ do {
+ ++first;
+ id = util::impl::next_token<IteratorT>::peek(first, last, false);
+ } while (IS_CATEGORY(id, WhiteSpaceTokenType));
+ }
+ ++first;
+ return id;
+ }
+
+ template <typename IteratorT, typename ContainerT>
+ inline boost::wave::token_id
+ skip_whitespace(IteratorT &first, IteratorT const &last, ContainerT &queue)
+ {
+ queue.push_back (*first); // queue up the current token
+
+ token_id id = util::impl::next_token<IteratorT>::peek(first, last, false);
+ if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
+ do {
+ queue.push_back(*++first); // queue up the next whitespace
+ id = util::impl::next_token<IteratorT>::peek(first, last, false);
+ } while (IS_CATEGORY(id, WhiteSpaceTokenType));
+ }
+ ++first;
+ return id;
+ }
+
 } // namespace impl
 
 ///////////////////////////////////////////////////////////////////////////////

Modified: branches/release/boost/wave/util/pattern_parser.hpp
==============================================================================
--- branches/release/boost/wave/util/pattern_parser.hpp (original)
+++ branches/release/boost/wave/util/pattern_parser.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,7 +13,7 @@
 #if !defined(BOOST_SPIRIT_PATTERN_PARSER_HPP)
 #define BOOST_SPIRIT_PATTERN_PARSER_HPP
 
-#include <boost/spirit/core/primitives/primitives.hpp>
+#include <boost/spirit/include/classic_primitives.hpp>
 #include <boost/wave/wave_config.hpp>
 
 // this must occur after all of the includes and before any code appears
@@ -32,7 +32,8 @@
     //
     ///////////////////////////////////////////////////////////////////////////
     template <typename CharT = char>
- struct pattern_and : public boost::spirit::char_parser<pattern_and<CharT> >
+ struct pattern_and
+ : public boost::spirit::classic::char_parser<pattern_and<CharT> >
     {
         pattern_and(CharT pattern_, unsigned long pattern_mask_ = 0UL)
         : pattern(pattern_),

Modified: branches/release/boost/wave/util/symbol_table.hpp
==============================================================================
--- branches/release/boost/wave/util/symbol_table.hpp (original)
+++ branches/release/boost/wave/util/symbol_table.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,11 +14,14 @@
 #include <map>
 
 #include <boost/wave/wave_config.hpp>
-#include <boost/shared_ptr.hpp>
+#include <boost/intrusive_ptr.hpp>
 
 #if BOOST_WAVE_SERIALIZATION != 0
 #include <boost/serialization/serialization.hpp>
 #include <boost/serialization/map.hpp>
+#include <boost/shared_ptr.hpp>
+#else
+#include <boost/intrusive_ptr.hpp>
 #endif
 
 #include <boost/iterator/transform_iterator.hpp>
@@ -41,9 +44,17 @@
 
 template <typename StringT, typename MacroDefT>
 struct symbol_table
+#if BOOST_WAVE_SERIALIZATION != 0
 : public std::map<StringT, boost::shared_ptr<MacroDefT> >
+#else
+: public std::map<StringT, boost::intrusive_ptr<MacroDefT> >
+#endif
 {
+#if BOOST_WAVE_SERIALIZATION != 0
     typedef std::map<StringT, boost::shared_ptr<MacroDefT> > base_type;
+#else
+ typedef std::map<StringT, boost::intrusive_ptr<MacroDefT> > base_type;
+#endif
     typedef typename base_type::iterator iterator_type;
     typedef typename base_type::const_iterator const_iterator_type;
     

Modified: branches/release/boost/wave/util/time_conversion_helper.hpp
==============================================================================
--- branches/release/boost/wave/util/time_conversion_helper.hpp (original)
+++ branches/release/boost/wave/util/time_conversion_helper.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,21 +15,14 @@
 #include <cstring>
 
 #include <boost/config.hpp>
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/symbols.hpp>
-#if SPIRIT_VERSION >= 0x1700
-#include <boost/spirit/actor/assign_actor.hpp>
-#include <boost/spirit/actor/push_back_actor.hpp>
-#endif // SPIRIT_VERSION >= 0x1700
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_symbols.hpp>
+#include <boost/spirit/include/classic_assign_actor.hpp>
+#include <boost/spirit/include/classic_push_back_actor.hpp>
 
 #if !defined(spirit_append_actor)
-#if SPIRIT_VERSION >= 0x1700
-#define spirit_append_actor(actor) boost::spirit::push_back_a(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign_a(actor)
-#else
-#define spirit_append_actor(actor) boost::spirit::append(actor)
-#define spirit_assign_actor(actor) boost::spirit::assign(actor)
-#endif // SPIRIT_VERSION >= 0x1700
+#define spirit_append_actor(actor) boost::spirit::classic::push_back_a(actor)
+#define spirit_assign_actor(actor) boost::spirit::classic::assign_a(actor)
 #endif // !defined(spirit_append_actor)
 
 // this must occur after all of the includes and before any code appears
@@ -56,7 +49,7 @@
 // Grammar for parsing a date/time string generated by the C++ compiler from
 // __DATE__ and __TIME__
     class time_conversion_grammar :
- public boost::spirit::grammar<time_conversion_grammar>
+ public boost::spirit::classic::grammar<time_conversion_grammar>
     {
     public:
         time_conversion_grammar() : fYearIsCorrected(false)
@@ -72,8 +65,8 @@
         
             definition(time_conversion_grammar const &self)
             {
- using boost::spirit::int_p;
- using boost::spirit::add;
+ using boost::spirit::classic::int_p;
+ using boost::spirit::classic::add;
                 
             char const *m[] = {
                     "Jan", "Feb", "Mar", "Apr", "May", "Jun",
@@ -95,10 +88,10 @@
                 BOOST_SPIRIT_DEBUG_TRACE_RULE(time_rule, TRACE_CPP_TIME_CONVERSION);
             }
             
- boost::spirit::rule<ScannerT> time_rule;
- boost::spirit::symbols<> month;
+ boost::spirit::classic::rule<ScannerT> time_rule;
+ boost::spirit::classic::symbols<> month;
 
- boost::spirit::rule<ScannerT> const&
+ boost::spirit::classic::rule<ScannerT> const&
             start() const { return time_rule; }
         };
     
@@ -122,7 +115,7 @@
     public:
         time_conversion_helper(char const *act_time) : compile_time(0)
         {
- using namespace boost::spirit;
+ using namespace boost::spirit::classic;
             
         time_conversion_grammar g;
         parse_info<> pi = parse (act_time, g, space_p);

Modified: branches/release/boost/wave/util/unput_queue_iterator.hpp
==============================================================================
--- branches/release/boost/wave/util/unput_queue_iterator.hpp (original)
+++ branches/release/boost/wave/util/unput_queue_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -411,40 +411,6 @@
         }
     };
 
- // Skip all whitespace characters and queue the skipped characters into the
- // given container
- template <typename IteratorT>
- inline boost::wave::token_id
- skip_whitespace(IteratorT &first, IteratorT const &last)
- {
- token_id id = next_token<IteratorT>::peek(first, last, false);
- if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
- do {
- ++first;
- id = next_token<IteratorT>::peek(first, last, false);
- } while (IS_CATEGORY(id, WhiteSpaceTokenType));
- }
- ++first;
- return id;
- }
-
- template <typename IteratorT, typename ContainerT>
- inline boost::wave::token_id
- skip_whitespace(IteratorT &first, IteratorT const &last, ContainerT &queue)
- {
- queue.push_back (*first); // queue up the current token
-
- token_id id = next_token<IteratorT>::peek(first, last, false);
- if (IS_CATEGORY(id, WhiteSpaceTokenType)) {
- do {
- queue.push_back(*++first); // queue up the next whitespace
- id = next_token<IteratorT>::peek(first, last, false);
- } while (IS_CATEGORY(id, WhiteSpaceTokenType));
- }
- ++first;
- return id;
- }
-
 ///////////////////////////////////////////////////////////////////////////////
 } // namespace impl
 

Modified: branches/release/boost/wave/wave_config.hpp
==============================================================================
--- branches/release/boost/wave/wave_config.hpp (original)
+++ branches/release/boost/wave/wave_config.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,7 +16,7 @@
 #include <boost/config.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/version.hpp>
-#include <boost/spirit/version.hpp>
+#include <boost/spirit/include/classic_version.hpp>
 #include <boost/wave/wave_version.hpp>
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -177,44 +177,22 @@
 #endif
 
 #else
+
 // use the following, if you have a fast std::allocator<char>
-#define BOOST_WAVE_STRINGTYPE boost::wave::util::flex_string< \
- char, std::char_traits<char>, std::allocator<char>, \
- boost::wave::util::CowString</*char, */\
- boost::wave::util::AllocatorStringStorage<char> \
- > \
- > \
+#define BOOST_WAVE_STRINGTYPE boost::wave::util::flex_string< \
+ char, std::char_traits<char>, std::allocator<char>, \
+ boost::wave::util::CowString< \
+ boost::wave::util::AllocatorStringStorage<char> \
+ > \
+ > \
     /**/
     
-/* #define BOOST_WAVE_STRINGTYPE boost::wave::util::flex_string< \
- char, std::char_traits<char>, boost::fast_pool_allocator<char>, \
- boost::wave::util::CowString<char, \
- boost::wave::util::AllocatorStringStorage<char, \
- boost::fast_pool_allocator<char> \
- > \
- > \
- > \
-*/ /**/
-
 // This include is needed for the flex_string class used in the
 // BOOST_WAVE_STRINGTYPE above.
 #include <boost/wave/util/flex_string.hpp>
 
-// This include is needed for the boost::fast_allocator class used in the
-// BOOST_WAVE_STRINGTYPE above.
-// #include <boost/pool/pool_alloc.hpp>
-
-// Use the following, if you want to incorporate Maxim Yegorushkin's
-// const_string library (http://sourceforge.net/projects/conststring/), which
-// may be even faster than using the flex_string class from above
-//#define BOOST_WAVE_STRINGTYPE boost::const_string<char>
-//
-//#include <boost/const_string/const_string.hpp>
-//#include <boost/const_string/io.hpp>
-//#include <boost/const_string/concatenation.hpp>
-
-#endif // BOOST_WORKAROUND(_MSC_VER, <= 1300)
-#endif
+#endif // BOOST_WORKAROUND(_MSC_VER, <= 1300) et.al.
+#endif // !defined(BOOST_WAVE_STRINGTYPE)
 
 ///////////////////////////////////////////////////////////////////////////////
 // The following definition forces the Spirit tree code to use list's instead
@@ -417,7 +395,7 @@
 #define PHOENIX_LIMIT 6
 #endif
 #if PHOENIX_LIMIT < 6
-// boost/spirit/attribute.hpp sets PHOENIX_LIMIT to 3!
+// boost/home/classic/spirit/classic_attribute.hpp sets PHOENIX_LIMIT to 3!
 #error "Boost.Wave: the constant PHOENIX_LIMIT must be at least defined to 6" \
 " to compile the library."
 #endif

Modified: branches/release/boost/wave/wave_version.hpp
==============================================================================
--- branches/release/boost/wave/wave_version.hpp (original)
+++ branches/release/boost/wave/wave_version.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,11 +16,11 @@
 // BOOST_WAVE_VERSION & 0x0000FF is the sub-minor version
 // BOOST_WAVE_VERSION & 0x00FF00 is the minor version
 // BOOST_WAVE_VERSION & 0xFF0000 is the major version
-#define BOOST_WAVE_VERSION 0x010300
+#define BOOST_WAVE_VERSION 0x020000
 
 // The following defines contain the same information as above
-#define BOOST_WAVE_VERSION_MAJOR 1
-#define BOOST_WAVE_VERSION_MINOR 3
+#define BOOST_WAVE_VERSION_MAJOR 2
+#define BOOST_WAVE_VERSION_MINOR 0
 #define BOOST_WAVE_VERSION_SUBMINOR 0
 
 #endif // !defined(WAVE_VERSION_H_9D79ABDB_AC54_4C0A_89B1_F70A2DCFE21E_INCLUDED)

Modified: branches/release/libs/wave/ChangeLog
==============================================================================
--- branches/release/libs/wave/ChangeLog (original)
+++ branches/release/libs/wave/ChangeLog 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/doc/compiletime_config.html
==============================================================================
--- branches/release/libs/wave/doc/compiletime_config.html (original)
+++ branches/release/libs/wave/doc/compiletime_config.html 2008-06-22 12:16:14 EDT (Sun, 22 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&lt;&gt;</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&lt;&gt;</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/release/libs/wave/doc/tracing_facility.html
==============================================================================
--- branches/release/libs/wave/doc/tracing_facility.html (original)
+++ branches/release/libs/wave/doc/tracing_facility.html 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/samples/Jamfile.v2 (original)
+++ branches/release/libs/wave/samples/Jamfile.v2 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/cpp_tokens.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -32,7 +32,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // import required names
-using namespace boost::spirit;
+using namespace boost::spirit::classic;
 
 using std::string;
 using std::getline;

Modified: branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex/cpp_slex_lexer.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,7 +19,7 @@
 #endif // defined(BOOST_SPIRIT_DEBUG)
 
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
+#include <boost/spirit/include/classic_core.hpp>
 
 #include <boost/wave/wave_config.hpp>
 #include <boost/wave/language_support.hpp>
@@ -60,7 +60,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 //
-// encapsulation of the boost::spirit::slex based cpp lexer
+// encapsulation of the boost::spirit::classic::slex based cpp lexer
 //
 ///////////////////////////////////////////////////////////////////////////////
 
@@ -69,14 +69,14 @@
 // bug (at least up to CW V9.5).
 template <typename IteratorT, typename PositionT>
 class lexer_base
-: public boost::spirit::lexer<
+: public boost::spirit::classic::lexer<
         boost::wave::util::position_iterator<IteratorT, PositionT> >
 {
 protected:
     typedef boost::wave::util::position_iterator<IteratorT, PositionT>
         iterator_type;
     typedef typename std::iterator_traits<IteratorT>::value_type char_type;
- typedef boost::spirit::lexer<iterator_type> base_type;
+ typedef boost::spirit::classic::lexer<iterator_type> base_type;
 
     lexer_base();
     
@@ -578,10 +578,8 @@
     virtual ~slex_functor() {}
 
 // get the next token from the input stream
- token_type get()
+ token_type& get(token_type& result)
     {
- token_type token;
-
         if (!at_eof) {
             do {
             // generate and return the next token
@@ -673,17 +671,18 @@
                         break;
                     }
                     
+ result = token_type(id, token_val, pos);
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- return guards.detect_guard(token_type(id, token_val, pos));
+ return guards.detect_guard(result);
 #else
- return token_type(id, token_val, pos);
+ return result;
 #endif
                 }
             
             // skip the T_CONTLINE token
             } while (true);
         }
- return token; // return T_EOI
+ return result = token_type(); // return T_EOI
     }
     
     void set_position(PositionT const &pos)

Modified: branches/release/libs/wave/samples/cpp_tokens/slex/lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex/lexer.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex/lexer.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -42,10 +42,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 #include <boost/throw_exception.hpp>
 
-#include <boost/spirit/core.hpp>
-#include <boost/spirit/symbols/symbols.hpp>
-#include <boost/spirit/utility/chset.hpp>
-#include <boost/spirit/utility/escape_char.hpp>
+#include <boost/spirit/include/classic_core.hpp>
+#include <boost/spirit/include/classic_symbols.hpp>
+#include <boost/spirit/include/classic_chset.hpp>
+#include <boost/spirit/include/classic_escape_char.hpp>
 
 #include <set>
 #include <map>
@@ -57,10 +57,6 @@
 #include <boost/assert.hpp>
 #include <boost/limits.hpp>
 
-#if SPIRIT_VERSION < 0x1700 && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
-#include <boost/spirit/core/impl/msvc.hpp>
-#endif
-
 #if defined(BOOST_NO_STD_ITERATOR_TRAITS)
 #define BOOST_SPIRIT_IT_NS impl
 #else
@@ -70,6 +66,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 namespace boost {
 namespace spirit {
+namespace classic {
 
 typedef unsigned char uchar;
 typedef unsigned int node_id_t;
@@ -1887,7 +1884,7 @@
 // lexeme definitions passed to lexer::register_regex.
 //
 ///////////////////////////////////////////////////////////////////////////////
-class lexer_grammar : public boost::spirit::grammar<lexer_grammar>
+class lexer_grammar : public boost::spirit::classic::grammar<lexer_grammar>
 {
 public:
     lexer_grammar(std::stack<node*> &node_stack_)
@@ -2890,6 +2887,7 @@
     return m_ignore_current_token;
 }
 
+} // namespace classic
 } // namespace spirit
 } // namespace boost
 

Modified: branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/cpp_tokens/slex_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,7 +18,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/shared_ptr.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/spirit/include/support_multi_pass.hpp>
 
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
@@ -26,7 +26,7 @@
 
 #include "slex_interface.hpp"
 
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 #define BOOST_WAVE_EOF_PREFIX static
 #else
 #define BOOST_WAVE_EOF_PREFIX
@@ -48,38 +48,48 @@
 template <typename TokenT>
 class slex_iterator_functor_shim
 {
+ typedef typename TokenT::position_type position_type;
+
 public:
- template <typename IteratorT>
- slex_iterator_functor_shim(IteratorT const &first, IteratorT const &last,
- typename TokenT::position_type const &pos,
- boost::wave::language_support language)
- : functor_ptr(slex_input_interface<TokenT>
- ::new_lexer(first, last, pos, language))
-#if 0 != __DECCXX_VER || BOOST_INTEL_CXX_VERSION > 900 || defined(__PGI)
- , eof()
+ slex_iterator_functor_shim()
+#if /*0 != __DECCXX_VER || */defined(__PGI)
+ : eof()
 #endif // 0 != __DECCXX_VER
     {}
 
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// policy
     typedef TokenT result_type;
+ typedef slex_iterator_functor_shim unique;
+ typedef lex_input_interface<TokenT>* shared;
 
     BOOST_WAVE_EOF_PREFIX result_type const eof;
     
- result_type operator()()
+ template <typename MultiPass>
+ static result_type& get_next(MultiPass& mp, result_type& result)
     {
- BOOST_ASSERT(0 != functor_ptr.get());
- return functor_ptr->get();
+ return mp.shared->ftor->get(result);
     }
- void set_position(typename TokenT::position_type const &pos)
+
+ // this will be called whenever the last reference to a multi_pass will
+ // be released
+ template <typename MultiPass>
+ static void destroy(MultiPass& mp)
+ {
+ delete mp.shared->ftor;
+ }
+
+ template <typename MultiPass>
+ static void set_position(MultiPass& mp, position_type const &pos)
     {
- BOOST_ASSERT(0 != functor_ptr.get());
- functor_ptr->set_position(pos);
+ mp.shared->ftor->set_position(pos);
     }
     
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
- bool has_include_guards(std::string& guard_name) const
+ template <typename MultiPass>
+ static bool has_include_guards(MultiPass& mp, std::string& guard_name)
     {
- return functor_ptr->has_include_guards(guard_name);
+ return mp.shared->ftor->has_include_guards(guard_name);
     }
 #endif
 
@@ -87,7 +97,7 @@
     boost::shared_ptr<lex_input_interface<TokenT> > functor_ptr;
 };
 
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 ///////////////////////////////////////////////////////////////////////////////
 // eof token
 template <typename TokenT>
@@ -120,18 +130,45 @@
 //
 ///////////////////////////////////////////////////////////////////////////////
 
+///////////////////////////////////////////////////////////////////////////////
+// Divide the given functor type into its components (unique and shared)
+// and build a std::pair from these parts
+template <typename FunctorData>
+struct make_multi_pass
+{
+ typedef
+ std::pair<typename FunctorData::unique, typename FunctorData::shared>
+ functor_data_type;
+ typedef typename FunctorData::result_type result_type;
+
+ typedef boost::spirit::multi_pass_policies::split_functor_input input_policy;
+ typedef boost::spirit::multi_pass_policies::ref_counted ownership_policy;
+#if defined(BOOST_WAVE_DEBUG)
+ typedef boost::spirit::multi_pass_policies::buf_id_check check_policy;
+#else
+ typedef boost::spirit::multi_pass_policies::no_check check_policy;
+#endif
+ typedef boost::spirit::multi_pass_policies::split_std_deque storage_policy;
+
+ typedef boost::spirit::multi_pass_policies::default_policy<
+ ownership_policy, check_policy, input_policy, storage_policy>
+ policy_type;
+ typedef boost::spirit::multi_pass<functor_data_type, policy_type> type;
+};
+
+///////////////////////////////////////////////////////////////////////////////
 template <typename TokenT>
 class slex_iterator
-: public boost::spirit::multi_pass<
- impl::slex_iterator_functor_shim<TokenT>,
- boost::wave::util::functor_input
- >
+: public make_multi_pass<impl::slex_iterator_functor_shim<TokenT> >::type
 {
     typedef impl::slex_iterator_functor_shim<TokenT> input_policy_type;
- typedef
- boost::spirit::multi_pass<input_policy_type,
- boost::wave::util::functor_input>
- base_type;
+
+ typedef typename make_multi_pass<input_policy_type>::type base_type;
+ typedef typename make_multi_pass<input_policy_type>::functor_data_type
+ functor_data_type;
+
+ typedef typename input_policy_type::unique unique_functor_type;
+ typedef typename input_policy_type::shared shared_functor_type;
     
 public:
     typedef TokenT token_type;
@@ -143,7 +180,13 @@
     slex_iterator(IteratorT const &first, IteratorT const &last,
             typename TokenT::position_type const &pos,
             boost::wave::language_support language)
- : base_type(input_policy_type(first, last, pos, language))
+ : base_type(
+ functor_data_type(
+ unique_functor_type(),
+ slex_input_interface<TokenT>
+ ::new_lexer(first, last, pos, language)
+ )
+ )
     {}
 
     void set_position(typename TokenT::position_type const &pos)
@@ -164,7 +207,7 @@
         {
             currpos.set_line(pos.get_line() + 1);
         }
- base_type::get_functor().set_position(currpos);
+ unique_functor_type::get_functor().set_position(currpos);
     }
 
 #if BOOST_WAVE_SUPPORT_PRAGMA_ONCE != 0
@@ -173,7 +216,7 @@
     // completely
     bool has_include_guards(std::string& guard_name) const
     {
- return base_type::get_functor().has_include_guards(guard_name);
+ return unique_functor_type::has_include_guards(guard_name);
     }
 #endif
 };

Modified: branches/release/libs/wave/samples/hannibal/hannibal.cpp
==============================================================================
--- branches/release/libs/wave/samples/hannibal/hannibal.cpp (original)
+++ branches/release/libs/wave/samples/hannibal/hannibal.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/hannibal/translation_unit_parser.h
==============================================================================
--- branches/release/libs/wave/samples/hannibal/translation_unit_parser.h (original)
+++ branches/release/libs/wave/samples/hannibal/translation_unit_parser.h 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/hannibal/translation_unit_skipper.h
==============================================================================
--- branches/release/libs/wave/samples/hannibal/translation_unit_skipper.h (original)
+++ branches/release/libs/wave/samples/hannibal/translation_unit_skipper.h 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/list_includes/lexertl_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp (original)
+++ branches/release/libs/wave/samples/list_includes/lexertl_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,7 +17,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/shared_ptr.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/spirit/include/classic_multi_pass.hpp>
 
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
@@ -25,7 +25,7 @@
 
 #include "lexertl_interface.hpp"
 
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 #define BOOST_WAVE_EOF_PREFIX static
 #else
 #define BOOST_WAVE_EOF_PREFIX
@@ -54,12 +54,13 @@
             wave::language_support language)
     : functor_ptr(lexertl_input_interface<TokenT>
             ::new_lexer(first, last, pos, language))
-#if 0 != __DECCXX_VER
+#if 0 != __DECCXX_VER || defined(__PGI)
       , eof()
 #endif // 0 != __DECCXX_VER
     {}
 
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// policy
     typedef TokenT result_type;
 
     BOOST_WAVE_EOF_PREFIX result_type const eof;
@@ -87,7 +88,7 @@
     boost::shared_ptr<lex_input_interface<TokenT> > functor_ptr;
 };
 
-#if 0 != __COMO_VERSION__
+#if 0 != __COMO_VERSION__ || !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
 ///////////////////////////////////////////////////////////////////////////////
 // eof token
 template <typename TokenT>
@@ -122,14 +123,14 @@
 
 template <typename TokenT>
 class lex_iterator
-: public boost::spirit::multi_pass<
+: public boost::spirit::classic::multi_pass<
         impl::iterator_functor_shim<TokenT>,
         boost::wave::util::functor_input
>
 {
     typedef impl::iterator_functor_shim<TokenT> input_policy_type;
     typedef
- boost::spirit::multi_pass<input_policy_type,
+ boost::spirit::classic::multi_pass<input_policy_type,
                 boost::wave::util::functor_input>
         base_type;
     typedef lex_iterator<TokenT> self_type;

Modified: branches/release/libs/wave/samples/list_includes/list_includes.cpp
==============================================================================
--- branches/release/libs/wave/samples/list_includes/list_includes.cpp (original)
+++ branches/release/libs/wave/samples/list_includes/list_includes.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -44,7 +44,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // import required names
-using namespace boost::spirit;
+using namespace boost::spirit::classic;
 
 using std::string;
 using std::vector;

Modified: branches/release/libs/wave/samples/quick_start/quick_start.cpp
==============================================================================
--- branches/release/libs/wave/samples/quick_start/quick_start.cpp (original)
+++ branches/release/libs/wave/samples/quick_start/quick_start.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -35,6 +35,8 @@
 boost::wave::util::file_position_type current_position;
 
     try {
+//[quick_start_main
+ // The following preprocesses the given input file (given by argv[1]).
     // Open and read in the specified input file.
     std::ifstream instream(argv[1]);
     std::string instring;
@@ -47,12 +49,14 @@
         instring = std::string(std::istreambuf_iterator<char>(instream.rdbuf()),
                                 std::istreambuf_iterator<char>());
             
- // The template boost::wave::cpplexer::lex_token<> is the token type to be
- // used by the Wave library.
+ // This token type is one of the central types used throughout the library,
+ // because it is a template parameter to some of the public classes and
+ // instances of this type are returned from the iterators.
         typedef boost::wave::cpplexer::lex_token<> token_type;
     
     // The template boost::wave::cpplexer::lex_iterator<> is the lexer type to
- // be used by the Wave library.
+ // to use as the token source for the preprocessing engine. It is
+ // parametrized with the token type.
         typedef boost::wave::cpplexer::lex_iterator<token_type> lex_iterator_type;
         
     // This is the resulting context type to use. The first template parameter
@@ -70,15 +74,20 @@
     // scenes during iteration over the context_type::iterator_type stream.
     context_type ctx (instring.begin(), instring.end(), argv[1]);
 
- // analyze the input file
+ // Get the preprocessor iterators and use them to generate
+ // the token sequence.
     context_type::iterator_type first = ctx.begin();
     context_type::iterator_type last = ctx.end();
         
+
+ // The input stream is preprocessed for you while iterating over the range
+ // [first, last)
         while (first != last) {
             current_position = (*first).get_position();
             std::cout << (*first).get_value();
             ++first;
         }
+//]
     }
     catch (boost::wave::cpp_exception const& e) {
     // some preprocessing error

Modified: branches/release/libs/wave/samples/token_statistics/token_statistics.cpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/token_statistics.cpp (original)
+++ branches/release/libs/wave/samples/token_statistics/token_statistics.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -28,7 +28,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // import required names
-using namespace boost::spirit;
+using namespace boost::spirit::classic;
 
 using std::string;
 using std::vector;

Modified: branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex/xlex_lexer.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,7 +22,7 @@
 
 #include <boost/concept_check.hpp>
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
+#include <boost/spirit/include/classic_core.hpp>
 
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/language_support.hpp>

Modified: branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/token_statistics/xlex_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,7 +18,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/shared_ptr.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/spirit/include/classic_multi_pass.hpp>
 
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
@@ -51,7 +51,8 @@
             ::new_lexer(first, last, pos, language))
     {}
 
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// policy
     typedef TokenT result_type;
 
     /*static*/ result_type const eof;
@@ -111,14 +112,14 @@
 
 template <typename TokenT>
 class xlex_iterator
-: public boost::spirit::multi_pass<
+: public boost::spirit::classic::multi_pass<
         impl::xlex_iterator_functor_shim<TokenT>,
         boost::wave::util::functor_input
>
 {
     typedef impl::xlex_iterator_functor_shim<TokenT> input_policy_type;
     typedef
- boost::spirit::multi_pass<input_policy_type,
+ boost::spirit::classic::multi_pass<input_policy_type,
                 boost::wave::util::functor_input>
         base_type;
     

Modified: branches/release/libs/wave/samples/waveidl/idl.cpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idl.cpp (original)
+++ branches/release/libs/wave/samples/waveidl/idl.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/samples/waveidl/idllexer/idl.re
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl.re (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl.re 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -5,7 +5,7 @@
 
     http://www.boost.org/
 
- Copyright (c) 2001-2008 Hartmut Kaiser. Distributed under the Boost
+ 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)
 =============================================================================*/
@@ -33,7 +33,7 @@
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/cpplexer/re2clex/aq.hpp>
 #include <boost/wave/cpplexer/re2clex/scanner.hpp>
-#include <boost/wave/cpplexer/cpplexer_exceptions.hpp>
+#include <boost/wave/cpplexer/cpplexer_exceptions.hpp>
 
 #include "idl_re.hpp"
 
@@ -200,11 +200,11 @@
             if (buf == 0)
             {
                 using namespace std; // some systems have printf in std
- if (0 != s->error_proc) {
- (*s->error_proc)(s,
- cpplexer::lexing_exception::unexpected_error,
- "Out of memory!");
- }
+ if (0 != s->error_proc) {
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::unexpected_error,
+ "Out of memory!");
+ }
                 else
                     printf("Out of memory!\n");
                     
@@ -477,11 +477,11 @@
         if(cursor != s->eof)
         {
             using namespace std; // some systems have printf in std
- if (0 != s->error_proc) {
- (*s->error_proc)(s,
- cpplexer::lexing_exception::generic_lexing_error,
- "'\\000' in input stream");
- }
+ if (0 != s->error_proc) {
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::generic_lexing_error,
+ "'\\000' in input stream");
+ }
             else
                 printf("Error: 0 in file\n");
         }
@@ -513,18 +513,18 @@
         if(cursor == s->eof)
         {
             if (s->error_proc)
- (*s->error_proc)(s,
- cpplexer::lexing_exception::generic_lexing_warning,
- "Unterminated comment");
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::generic_lexing_warning,
+ "Unterminated comment");
             else
                 printf("Error: Unterminated comment\n");
         }
         else
         {
             if (s->error_proc)
- (*s->error_proc)(s,
- cpplexer::lexing_exception::generic_lexing_error,
- "'\\000' in input stream");
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::generic_lexing_error,
+ "'\\000' in input stream");
             else
                 printf("Error: 0 in file");
         }
@@ -537,9 +537,9 @@
     anyctrl
     {
         if (s->error_proc)
- (*s->error_proc)(s,
- cpplexer::lexing_exception::generic_lexing_error,
- "invalid character in input stream");
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::generic_lexing_error,
+ "invalid character in input stream");
         else
             printf("Error: 0 in file");
     }
@@ -564,9 +564,9 @@
         if(cursor != s->eof)
         {
             if (s->error_proc)
- (*s->error_proc)(s,
- cpplexer::lexing_exception::generic_lexing_error,
- "'\\000' in input stream");
+ (*s->error_proc)(s,
+ cpplexer::lexing_exception::generic_lexing_error,
+ "'\\000' in input stream");
             else
                 printf("Error: 0 in file");
         }

Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_lex_iterator.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,7 +19,7 @@
 
 #include <boost/assert.hpp>
 #include <boost/shared_ptr.hpp>
-#include <boost/spirit/iterator/multi_pass.hpp>
+#include <boost/spirit/include/classic_multi_pass.hpp>
 
 #include <boost/wave/language_support.hpp>
 #include <boost/wave/util/file_position.hpp>
@@ -58,7 +58,8 @@
     : functor_ptr(lex_input_interface_type::new_lexer(first, last, pos, language))
     {}
 
-// interface to the boost::spirit::multi_pass_policies::functor_input policy
+// interface to the boost::spirit::classic::multi_pass_policies::functor_input
+// policy
     typedef TokenT result_type;
 
     BOOST_WAVE_EOF_PREFIX result_type const eof;
@@ -110,14 +111,14 @@
 
 template <typename TokenT>
 class lex_iterator
-: public boost::spirit::multi_pass<
+: public boost::spirit::classic::multi_pass<
         impl::lex_iterator_functor_shim<TokenT>,
         boost::wave::util::functor_input
>
 {
     typedef impl::lex_iterator_functor_shim<TokenT> input_policy_type;
     typedef
- boost::spirit::multi_pass<input_policy_type,
+ boost::spirit::classic::multi_pass<input_policy_type,
                 boost::wave::util::functor_input>
         base_type;
     typedef lex_iterator<TokenT> self_type;

Modified: branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp
==============================================================================
--- branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp (original)
+++ branches/release/libs/wave/samples/waveidl/idllexer/idl_re2c_lexer.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,7 +22,7 @@
 
 #include <boost/concept_check.hpp>
 #include <boost/assert.hpp>
-#include <boost/spirit/core.hpp>
+#include <boost/spirit/include/classic_core.hpp>
 
 #include <boost/wave/token_ids.hpp>
 #include <boost/wave/language_support.hpp>

Modified: branches/release/libs/wave/src/cpplexer/re2clex/cpp.re
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/cpp.re (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/cpp.re 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/cpp_re.inc 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp.re 2008-06-22 12:16:14 EDT (Sun, 22 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 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.
-=============================================================================*/
-
-/*!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 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.
+=============================================================================*/
+
+/*!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/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc
==============================================================================
--- branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc (original)
+++ branches/release/libs/wave/src/cpplexer/re2clex/strict_cpp_re.inc 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -1,6994 +1,6994 @@
-/* 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"
+
+ }
+}

Modified: branches/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp (original)
+++ branches/release/libs/wave/src/instantiate_cpp_exprgrammar.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/instantiate_cpp_grammar.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_cpp_grammar.cpp (original)
+++ branches/release/libs/wave/src/instantiate_cpp_grammar.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/instantiate_cpp_literalgrs.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_cpp_literalgrs.cpp (original)
+++ branches/release/libs/wave/src/instantiate_cpp_literalgrs.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/instantiate_defined_grammar.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_defined_grammar.cpp (original)
+++ branches/release/libs/wave/src/instantiate_defined_grammar.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/instantiate_predef_macros.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_predef_macros.cpp (original)
+++ branches/release/libs/wave/src/instantiate_predef_macros.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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/release/libs/wave/src/instantiate_re2c_lexer.cpp
==============================================================================
--- branches/release/libs/wave/src/instantiate_re2c_lexer.cpp (original)
+++ branches/release/libs/wave/src/instantiate_re2c_lexer.cpp 2008-06-22 12:16:14 EDT (Sun, 22 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<

Modified: branches/release/libs/wave/test/build/Jamfile.v2
==============================================================================
--- branches/release/libs/wave/test/build/Jamfile.v2 (original)
+++ branches/release/libs/wave/test/build/Jamfile.v2 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -21,7 +21,7 @@
 SOURCES = $(SOURCE_STATIC) $(SOURCES_DYNAMIC)
     ;
     
-path-constant TESTWAVE_DIR : ../testwave/testfiles
+path-constant TESTWAVE_DIR : $(BOOST_ROOT)/libs/wave/test/testwave/testfiles
     ;
 
 #

Modified: branches/release/libs/wave/test/testlexers/test_slex_lexer.cpp
==============================================================================
--- branches/release/libs/wave/test/testlexers/test_slex_lexer.cpp (original)
+++ branches/release/libs/wave/test/testlexers/test_slex_lexer.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -57,7 +57,7 @@
             boost::wave::support_option_long_long);
         lexer_type end = lexer_type();
 
- // verify the correct outcome of the tokenisation
+ // verify the correct outcome of the tokenization
 #if defined(TESTLEXERS_VERBOSE)
         std::cerr << boost::wave::get_token_name(data->id) << std::endl;
 #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_001.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_001.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_001.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,19 @@
 
 //R #line 16 "t_1_001.cpp"
 C( A(2, 3) ) //R [2][3]
+
+//H 10: t_1_001.cpp(11): #define
+//H 08: t_1_001.cpp(11): A(x, y)=x, y
+//H 10: t_1_001.cpp(12): #define
+//H 08: t_1_001.cpp(12): B(x, y)=[x][y]
+//H 10: t_1_001.cpp(13): #define
+//H 08: t_1_001.cpp(13): C(x)=B(x)
+//H 00: t_1_001.cpp(16): C( A(2, 3) ), [t_1_001.cpp(13): C(x)=B(x)]
+//H 00: t_1_001.cpp(16): A(2, 3), [t_1_001.cpp(11): A(x, y)=x, y]
+//H 02: 2, 3
+//H 03: 2, 3
+//H 02: B(2, 3)
+//H 00: t_1_001.cpp(13): B(2, 3), [t_1_001.cpp(12): B(x, y)=[x][y]]
+//H 02: [2][3]
+//H 03: [2][3]
+//H 03: [2][3]

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_002.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_002.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_002.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,12 @@
 
 //R #line 16 "t_1_002.cpp"
 ABC() //R 1
+
+//H 10: t_1_002.cpp(11): #if
+//H 11: t_1_002.cpp(11): #if defined(TEST): 1
+//H 10: t_1_002.cpp(12): #define
+//H 08: t_1_002.cpp(12): ABC()=1
+//H 10: t_1_002.cpp(13): #endif
+//H 00: t_1_002.cpp(16): ABC(), [t_1_002.cpp(12): ABC()=1]
+//H 02: 1
+//H 03: 1

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_003.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_003.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_003.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -25,7 +25,36 @@
 //R #line 27 "t_1_003.cpp"
 //R CONCAT(1, 2)
 CONCAT(CONCAT_, INDIRECT())(1, 2)
-// E t_1_003.cpp(29): error: pasting the following two tokens does not give a valid preprocessing token: "1" and "CONCAT"
+
 //R #line 31 "t_1_003.cpp"
 //R 1 CONCAT(2, 3)
 CONCAT(1, CONCAT(2, 3))
+
+//H 10: t_1_003.cpp(13): #define
+//H 08: t_1_003.cpp(13): CONCAT(a, b)=a ## b
+//H 10: t_1_003.cpp(14): #define
+//H 08: t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT
+//H 00: t_1_003.cpp(18): CONCAT(CON, CAT), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 00: t_1_003.cpp(21): CONCAT(CON, CAT(1, 2)), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: CONCAT(1, 2)
+//H 03: CONCAT(1, 2)
+//H 00: t_1_003.cpp(24): CONCAT(CONCAT_, INDIRECT), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: CONCAT_INDIRECT
+//H 03: CONCAT_INDIRECT
+//H 00: t_1_003.cpp(24): CONCAT_INDIRECT(), [t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 00: t_1_003.cpp(14): CONCAT(1, 2), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: 12
+//H 03: 12
+//H 00: t_1_003.cpp(27): CONCAT(CONCAT_, INDIRECT()), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: CONCAT_INDIRECT()
+//H 00: t_1_003.cpp(27): CONCAT_INDIRECT(), [t_1_003.cpp(14): CONCAT_INDIRECT()=CONCAT]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 03: CONCAT
+//H 00: t_1_003.cpp(31): CONCAT(1, CONCAT(2, 3)), [t_1_003.cpp(13): CONCAT(a, b)=a ## b]
+//H 02: 1CONCAT(2, 3)
+//H 03: 1CONCAT(2, 3)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_004.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_004.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_004.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -30,3 +30,59 @@
 //R #line 32 "t_1_004.cpp"
 //R 1 CONCAT(2, 3)
 CONCAT(1, CONCAT(2, 3))
+
+//H 10: t_1_004.cpp(15): #define
+//H 08: t_1_004.cpp(15): CONCAT(a, b)=a ## b
+//H 10: t_1_004.cpp(16): #define
+//H 08: t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT
+//H 00: t_1_004.cpp(20): CONCAT(CON, CAT), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 00: t_1_004.cpp(23): CONCAT(CON, CAT(1, 2)), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: CONCAT(1, 2)
+//H 03: CONCAT(1, 2)
+//H 00: t_1_004.cpp(26): CONCAT(CONCAT_, INDIRECT), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: CONCAT_INDIRECT
+//H 03: CONCAT_INDIRECT
+//H 00: t_1_004.cpp(26): CONCAT_INDIRECT(), [t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 00: t_1_004.cpp(16): CONCAT(1, 2), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: 12
+//H 03: 12
+//H 00: t_1_004.cpp(29): CONCAT(CONCAT_, INDIRECT()), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: CONCAT_INDIRECT()
+//H 00: t_1_004.cpp(29): CONCAT_INDIRECT(), [t_1_004.cpp(16): CONCAT_INDIRECT()=CONCAT]
+//H 02: CONCAT
+//H 03: CONCAT
+//H 03: CONCAT
+//H 00: t_1_004.cpp(32): CONCAT(1, CONCAT(2, 3)), [t_1_004.cpp(15): CONCAT(a, b)=a ## b]
+//H 02: 1CONCAT(2, 3)
+//H 03: 1CONCAT(2, 3)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_005.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_005.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_005.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,3 +15,13 @@
 //R #line 16 "t_1_005.cpp"
 A()(123) //R 123
 
+//H 10: t_1_005.cpp(12): #define
+//H 08: t_1_005.cpp(12): A()=B
+//H 10: t_1_005.cpp(13): #define
+//H 08: t_1_005.cpp(13): B(x)=x
+//H 00: t_1_005.cpp(16): A(), [t_1_005.cpp(12): A()=B]
+//H 02: B
+//H 03: B
+//H 00: t_1_005.cpp(12): B(123), [t_1_005.cpp(13): B(x)=x]
+//H 02: 123
+//H 03: 123

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_006.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_006.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_006.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -23,3 +23,33 @@
 //R #line 25 "t_1_006.cpp"
 //R 1 CONCAT(2, 3)
 PRIMITIVE_CONCAT(1, CONCAT(2, 3))
+
+//H 10: t_1_006.cpp(13): #define
+//H 08: t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)
+//H 10: t_1_006.cpp(14): #define
+//H 08: t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b
+//H 00: t_1_006.cpp(18): CONCAT(1, PRIMITIVE_CONCAT(2, 3)), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 00: t_1_006.cpp(18): PRIMITIVE_CONCAT(2, 3), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 23
+//H 03: 23
+//H 02: PRIMITIVE_CONCAT(1, 23)
+//H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(1, 23), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 123
+//H 03: 123
+//H 03: 123
+//H 00: t_1_006.cpp(21): CONCAT(1, CONCAT(2, 3)), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 00: t_1_006.cpp(21): CONCAT(2, 3), [t_1_006.cpp(13): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 02: PRIMITIVE_CONCAT(2, 3)
+//H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(2, 3), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 23
+//H 03: 23
+//H 03: 23
+//H 02: PRIMITIVE_CONCAT(1, 23)
+//H 00: t_1_006.cpp(13): PRIMITIVE_CONCAT(1, 23), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 123
+//H 03: 123
+//H 03: 123
+//H 00: t_1_006.cpp(25): PRIMITIVE_CONCAT(1, CONCAT(2, 3)), [t_1_006.cpp(14): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 1CONCAT(2, 3)
+//H 03: 1CONCAT(2, 3)
+

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_007.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_007.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_007.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -24,3 +24,32 @@
 //R #line 26 "t_1_007.cpp"
 //R 1 CONCAT(2, 3)
 PRIMITIVE_CONCAT(1, CONCAT(2, 3))
+
+//H 10: t_1_007.cpp(15): #define
+//H 08: t_1_007.cpp(15): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)
+//H 10: t_1_007.cpp(16): #define
+//H 08: t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b
+//H 00: t_1_007.cpp(20): CONCAT(1, PRIMITIVE_CONCAT(2, 3)), [t_1_007.cpp(15): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 00: t_1_007.cpp(20): PRIMITIVE_CONCAT(2, 3), [t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 23
+//H 03: 23
+//H 02: PRIMITIVE_CONCAT(1, 23)
+//H 00: t_1_007.cpp(15): PRIMITIVE_CONCAT(1, 23), [t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 123
+//H 03: 123
+//H 03: 123
+//H 00: t_1_007.cpp(23): CONCAT(1, CONCAT(2, 3)), [t_1_007.cpp(15): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 00: t_1_007.cpp(23): CONCAT(2, 3), [t_1_007.cpp(15): CONCAT(a, b)=PRIMITIVE_CONCAT(a, b)]
+//H 02: PRIMITIVE_CONCAT(2, 3)
+//H 00: t_1_007.cpp(15): PRIMITIVE_CONCAT(2, 3), [t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 23
+//H 03: 23
+//H 03: 23
+//H 02: PRIMITIVE_CONCAT(1, 23)
+//H 00: t_1_007.cpp(15): PRIMITIVE_CONCAT(1, 23), [t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 123
+//H 03: 123
+//H 03: 123
+//H 00: t_1_007.cpp(26): PRIMITIVE_CONCAT(1, CONCAT(2, 3)), [t_1_007.cpp(16): PRIMITIVE_CONCAT(a, b)=a ## b]
+//H 02: 1CONCAT(2, 3)
+//H 03: 1CONCAT(2, 3)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_008.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_008.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_008.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -38,3 +38,108 @@
 //R #line 40 "t_1_008.cpp"
 //R XY
 PARTIAL_CAT(3)( PARTIAL X, Y PARTIAL )
+
+//H 10: t_1_008.cpp(14): #define
+//H 08: t_1_008.cpp(14): CAT(a, b)=a ## b
+//H 10: t_1_008.cpp(16): #define
+//H 08: t_1_008.cpp(16): PARTIAL_CAT(i)=CAT(PARTIAL_CAT_, i)
+//H 10: t_1_008.cpp(18): #define
+//H 08: t_1_008.cpp(18): PARTIAL_CAT_0(a, b)=CAT(a, b)
+//H 10: t_1_008.cpp(19): #define
+//H 08: t_1_008.cpp(19): PARTIAL_CAT_1(a, b)=CAT(PARTIAL ## a, b)
+//H 10: t_1_008.cpp(20): #define
+//H 08: t_1_008.cpp(20): PARTIAL_CAT_2(a, b)=CAT(a, b ## PARTIAL)
+//H 10: t_1_008.cpp(21): #define
+//H 08: t_1_008.cpp(21): PARTIAL_CAT_3(a, b)=CAT(PARTIAL ## a, b ## PARTIAL)
+//H 10: t_1_008.cpp(23): #define
+//H 08: t_1_008.cpp(23): PARTIAL=
+//H 10: t_1_008.cpp(24): #define
+//H 08: t_1_008.cpp(24): PARTIALPARTIAL=
+//H 10: t_1_008.cpp(26): #define
+//H 08: t_1_008.cpp(26): X=Token1
+//H 10: t_1_008.cpp(27): #define
+//H 08: t_1_008.cpp(27): Y=Token2
+//H 00: t_1_008.cpp(31): PARTIAL_CAT(0), [t_1_008.cpp(16): PARTIAL_CAT(i)=CAT(PARTIAL_CAT_, i)]
+//H 02: CAT(PARTIAL_CAT_, 0)
+//H 00: t_1_008.cpp(16): CAT(PARTIAL_CAT_, 0), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIAL_CAT_0
+//H 03: PARTIAL_CAT_0
+//H 03: PARTIAL_CAT_0
+//H 00: t_1_008.cpp(16): PARTIAL_CAT_0( PARTIAL X, Y PARTIAL ), [t_1_008.cpp(18): PARTIAL_CAT_0(a, b)=CAT(a, b)]
+//H 01: t_1_008.cpp(23): PARTIAL
+//H 02:
+//H 03: _
+//H 01: t_1_008.cpp(26): X
+//H 02: Token1
+//H 03: Token1
+//H 01: t_1_008.cpp(27): Y
+//H 02: Token2
+//H 03: Token2
+//H 01: t_1_008.cpp(23): PARTIAL
+//H 02:
+//H 03: _
+//H 02: CAT(Token1, Token2)
+//H 00: t_1_008.cpp(18): CAT(Token1, Token2), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: Token1Token2
+//H 03: Token1Token2
+//H 03: Token1Token2
+//H 00: t_1_008.cpp(34): PARTIAL_CAT(1), [t_1_008.cpp(16): PARTIAL_CAT(i)=CAT(PARTIAL_CAT_, i)]
+//H 02: CAT(PARTIAL_CAT_, 1)
+//H 00: t_1_008.cpp(16): CAT(PARTIAL_CAT_, 1), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIAL_CAT_1
+//H 03: PARTIAL_CAT_1
+//H 03: PARTIAL_CAT_1
+//H 00: t_1_008.cpp(16): PARTIAL_CAT_1( PARTIAL X, Y PARTIAL ), [t_1_008.cpp(19): PARTIAL_CAT_1(a, b)=CAT(PARTIAL ## a, b)]
+//H 01: t_1_008.cpp(27): Y
+//H 02: Token2
+//H 03: Token2
+//H 01: t_1_008.cpp(23): PARTIAL
+//H 02:
+//H 03: _
+//H 02: CAT(PARTIALPARTIAL X, Token2)
+//H 00: t_1_008.cpp(19): CAT(PARTIALPARTIAL X, Token2), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIALPARTIAL XToken2
+//H 01: t_1_008.cpp(24): PARTIALPARTIAL
+//H 02:
+//H 03: _
+//H 03: XToken2
+//H 03: XToken2
+//H 00: t_1_008.cpp(37): PARTIAL_CAT(2), [t_1_008.cpp(16): PARTIAL_CAT(i)=CAT(PARTIAL_CAT_, i)]
+//H 02: CAT(PARTIAL_CAT_, 2)
+//H 00: t_1_008.cpp(16): CAT(PARTIAL_CAT_, 2), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIAL_CAT_2
+//H 03: PARTIAL_CAT_2
+//H 03: PARTIAL_CAT_2
+//H 00: t_1_008.cpp(16): PARTIAL_CAT_2( PARTIAL X, Y PARTIAL ), [t_1_008.cpp(20): PARTIAL_CAT_2(a, b)=CAT(a, b ## PARTIAL)]
+//H 01: t_1_008.cpp(23): PARTIAL
+//H 02:
+//H 03: _
+//H 01: t_1_008.cpp(26): X
+//H 02: Token1
+//H 03: Token1
+//H 02: CAT(Token1, Y PARTIALPARTIAL)
+//H 00: t_1_008.cpp(20): CAT(Token1, Y PARTIALPARTIAL), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: Token1Y PARTIALPARTIAL
+//H 01: t_1_008.cpp(24): PARTIALPARTIAL
+//H 02:
+//H 03: _
+//H 03: Token1Y_
+//H 03: Token1Y_
+//H 00: t_1_008.cpp(40): PARTIAL_CAT(3), [t_1_008.cpp(16): PARTIAL_CAT(i)=CAT(PARTIAL_CAT_, i)]
+//H 02: CAT(PARTIAL_CAT_, 3)
+//H 00: t_1_008.cpp(16): CAT(PARTIAL_CAT_, 3), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIAL_CAT_3
+//H 03: PARTIAL_CAT_3
+//H 03: PARTIAL_CAT_3
+//H 00: t_1_008.cpp(16): PARTIAL_CAT_3( PARTIAL X, Y PARTIAL ), [t_1_008.cpp(21): PARTIAL_CAT_3(a, b)=CAT(PARTIAL ## a, b ## PARTIAL)]
+//H 02: CAT(PARTIALPARTIAL X, Y PARTIALPARTIAL)
+//H 00: t_1_008.cpp(21): CAT(PARTIALPARTIAL X, Y PARTIALPARTIAL), [t_1_008.cpp(14): CAT(a, b)=a ## b]
+//H 02: PARTIALPARTIAL XY PARTIALPARTIAL
+//H 01: t_1_008.cpp(24): PARTIALPARTIAL
+//H 02:
+//H 03: _
+//H 01: t_1_008.cpp(24): PARTIALPARTIAL
+//H 02:
+//H 03: _
+//H 03: XY_
+//H 03: XY_

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_009.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_009.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_009.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,13 @@
 TEST1()
 //E t_1_009.cpp(19): error: ill formed preprocessing operator: concat ('##')
 TEST2() // error
+
+//H 10: t_1_009.cpp(12): #define
+//H 08: t_1_009.cpp(12): TEST1()=A ## B
+//H 10: t_1_009.cpp(13): #define
+//H 08: t_1_009.cpp(13): TEST2()=## A
+//H 00: t_1_009.cpp(17): TEST1(), [t_1_009.cpp(12): TEST1()=A ## B]
+//H 02: AB
+//H 03: AB
+//H 00: t_1_009.cpp(19): TEST2(), [t_1_009.cpp(13): TEST2()=## A]
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_010.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_010.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_010.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,13 @@
 TEST1()
 //E t_1_010.cpp(19): error: ill formed preprocessing operator: concat ('##')
 TEST2() // error
+
+//H 10: t_1_010.cpp(12): #define
+//H 08: t_1_010.cpp(12): TEST1()=A ## B
+//H 10: t_1_010.cpp(13): #define
+//H 08: t_1_010.cpp(13): TEST2()=A ##
+//H 00: t_1_010.cpp(17): TEST1(), [t_1_010.cpp(12): TEST1()=A ## B]
+//H 02: AB
+//H 03: AB
+//H 00: t_1_010.cpp(19): TEST2(), [t_1_010.cpp(13): TEST2()=A ##]
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_011.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_011.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_011.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,16 @@
 //R #line 19 "t_1_011.cpp"
 //R XMACRO(*)
 CAT( MACRO(*) )
+
+//H 10: t_1_011.cpp(12): #define
+//H 08: t_1_011.cpp(12): MACRO()=
+//H 10: t_1_011.cpp(13): #define
+//H 08: t_1_011.cpp(13): ID(x)=
+//H 10: t_1_011.cpp(14): #define
+//H 08: t_1_011.cpp(14): CAT(x)=X ## x
+//H 00: t_1_011.cpp(16): ID( MACRO(*) ), [t_1_011.cpp(13): ID(x)=]
+//H 02:
+//H 03: _
+//H 00: t_1_011.cpp(19): CAT( MACRO(*) ), [t_1_011.cpp(14): CAT(x)=X ## x]
+//H 02: XMACRO(*)
+//H 03: XMACRO(*)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_012.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_012.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_012.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -28,3 +28,30 @@
 //R #line 30 "t_1_012.cpp"
 //R 12
 EXPAND(CAT ARGS)
+
+//H 10: t_1_012.cpp(13): #define
+//H 08: t_1_012.cpp(13): CAT(a, b)=a ## b
+//H 10: t_1_012.cpp(14): #define
+//H 08: t_1_012.cpp(14): ARGS=(1, 2)
+//H 01: t_1_012.cpp(14): ARGS
+//H 02: (1, 2)
+//H 03: (1, 2)
+//H 10: t_1_012.cpp(20): #define
+//H 08: t_1_012.cpp(20): INVOKE(macro)=macro ARGS
+//H 00: t_1_012.cpp(24): INVOKE(CAT), [t_1_012.cpp(20): INVOKE(macro)=macro ARGS]
+//H 02: CAT ARGS
+//H 01: t_1_012.cpp(14): ARGS
+//H 02: (1, 2)
+//H 03: (1, 2)
+//H 03: CAT (1, 2)
+//H 10: t_1_012.cpp(26): #define
+//H 08: t_1_012.cpp(26): EXPAND(x)=x
+//H 00: t_1_012.cpp(30): EXPAND(CAT ARGS), [t_1_012.cpp(26): EXPAND(x)=x]
+//H 01: t_1_012.cpp(14): ARGS
+//H 02: (1, 2)
+//H 03: (1, 2)
+//H 02: CAT (1, 2)
+//H 00: t_1_012.cpp(30): CAT(1, 2), [t_1_012.cpp(13): CAT(a, b)=a ## b]
+//H 02: 12
+//H 03: 12
+//H 03: 12

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_013.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_013.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_013.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -34,3 +34,56 @@
 //R "vers2.hpp"
 //R "hello";
 //R "hello" ", world"
+
+//H 10: t_1_013.cpp(13): #define
+//H 08: t_1_013.cpp(13): str(s)=# s
+//H 10: t_1_013.cpp(14): #define
+//H 08: t_1_013.cpp(14): xstr(s)=str(s)
+//H 10: t_1_013.cpp(15): #define
+//H 08: t_1_013.cpp(15): debug(s, t)=printf("x" # s "= %d, x" # t "= %s", x ## s, x ## t)
+//H 10: t_1_013.cpp(17): #define
+//H 08: t_1_013.cpp(17): INCFILE(n)=vers ## n
+//H 10: t_1_013.cpp(18): #define
+//H 08: t_1_013.cpp(18): glue(a, b)=a ## b
+//H 10: t_1_013.cpp(19): #define
+//H 08: t_1_013.cpp(19): xglue(a, b)=glue(a, b)
+//H 10: t_1_013.cpp(20): #define
+//H 08: t_1_013.cpp(20): HIGHLOW="hello"
+//H 10: t_1_013.cpp(21): #define
+//H 08: t_1_013.cpp(21): LOW=LOW ", world"
+//H 00: t_1_013.cpp(22): debug(1, 2), [t_1_013.cpp(15): debug(s, t)=printf("x" # s "= %d, x" # t "= %s", x ## s, x ## t)]
+//H 02: printf("x" "1" "= %d, x" "2" "= %s", x1, x2)
+//H 03: printf("x" "1" "= %d, x" "2" "= %s", x1, x2)
+//H 00: t_1_013.cpp(23): str(strncmp("abc\0d?", "abc", '\4', "\u1234") == 0), [t_1_013.cpp(13): str(s)=# s]
+//H 02: "strncmp(\"abc\\0d\?\", \"abc\", '\\4', \"\\u1234\") == 0"
+//H 03: "strncmp(\"abc\\0d\?\", \"abc\", '\\4', \"\\u1234\") == 0"
+//H 00: t_1_013.cpp(24): str(: @\n), [t_1_013.cpp(13): str(s)=# s]
+//H 02: ": @\n"
+//H 03: ": @\n"
+//H 00: t_1_013.cpp(25): xstr(INCFILE(2).hpp), [t_1_013.cpp(14): xstr(s)=str(s)]
+//H 00: t_1_013.cpp(25): INCFILE(2), [t_1_013.cpp(17): INCFILE(n)=vers ## n]
+//H 02: vers2
+//H 03: vers2
+//H 02: str(vers2.hpp)
+//H 00: t_1_013.cpp(14): str(vers2.hpp), [t_1_013.cpp(13): str(s)=# s]
+//H 02: "vers2.hpp"
+//H 03: "vers2.hpp"
+//H 03: "vers2.hpp"
+//H 00: t_1_013.cpp(26): glue(HIGH, LOW), [t_1_013.cpp(18): glue(a, b)=a ## b]
+//H 02: HIGHLOW
+//H 01: t_1_013.cpp(20): HIGHLOW
+//H 02: "hello"
+//H 03: "hello"
+//H 03: "hello"
+//H 00: t_1_013.cpp(27): xglue(HIGH, LOW), [t_1_013.cpp(19): xglue(a, b)=glue(a, b)]
+//H 01: t_1_013.cpp(21): LOW
+//H 02: LOW ", world"
+//H 03: LOW ", world"
+//H 02: glue(HIGH, LOW ", world")
+//H 00: t_1_013.cpp(19): glue(HIGH, LOW ", world"), [t_1_013.cpp(18): glue(a, b)=a ## b]
+//H 02: HIGHLOW ", world"
+//H 01: t_1_013.cpp(20): HIGHLOW
+//H 02: "hello"
+//H 03: "hello"
+//H 03: "hello" ", world"
+//H 03: "hello" ", world"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_014.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_014.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_014.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -30,6 +30,6 @@
 
 //R #line 27 "t_1_014.cpp"
 //R f(2 * (y+1)) + f(2 * (f(2 * (z[0])))) % f(2 * (0)) + t(1);
-//R f(2 * (2+ (3,4) -0,1))
+//R f(2 * (2+(3,4)-0,1))
 //E t_1_014.cpp(29): error: improperly terminated macro invocation or replacement-list terminates in partial macro expansion (not supported yet): missing ')'
 // should expand to: f(2 * g( ~ 5)) & f(2 * (0,1))^m(0,1);

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_015.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_015.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_015.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,12 @@
 //R #line 16 "t_1_015.cpp"
 //R (4-f((4-f(1))))
 f(f(1))
+
+//H 10: t_1_015.cpp(12): #define
+//H 08: t_1_015.cpp(12): f(x)=(4-f(x))
+//H 00: t_1_015.cpp(16): f(f(1)), [t_1_015.cpp(12): f(x)=(4-f(x))]
+//H 00: t_1_015.cpp(16): f(1), [t_1_015.cpp(12): f(x)=(4-f(x))]
+//H 02: (4-f(1))
+//H 03: (4-f(1))
+//H 02: (4-f((4-f(1))))
+//H 03: (4-f((4-f(1))))

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_016.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_016.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_016.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,3 +16,14 @@
 //R #line 18 "t_1_016.cpp"
 //R Token1 Token2
 A()
+
+//H 10: t_1_016.cpp(13): #define
+//H 08: t_1_016.cpp(13): A=Token1 B
+//H 10: t_1_016.cpp(14): #define
+//H 08: t_1_016.cpp(14): B()=Token2
+//H 01: t_1_016.cpp(13): A
+//H 02: Token1 B
+//H 03: Token1 B
+//H 00: t_1_016.cpp(13): B(), [t_1_016.cpp(14): B()=Token2]
+//H 02: Token2
+//H 03: Token2

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_020.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_020.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_020.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -20,3 +20,15 @@
 //R B()
 A() // not 'anything'!
 
+//H 10: t_1_020.cpp(14): #define
+//H 08: t_1_020.cpp(14): NIL=
+//H 10: t_1_020.cpp(16): #define
+//H 08: t_1_020.cpp(16): A=B NIL
+//H 10: t_1_020.cpp(17): #define
+//H 08: t_1_020.cpp(17): B()=anything
+//H 01: t_1_020.cpp(16): A
+//H 02: B NIL
+//H 01: t_1_020.cpp(14): NIL
+//H 02:
+//H 03: _
+//H 03: B_

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_021.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_021.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_021.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,24 @@
 //R #line 20 "t_1_021.cpp"
 //R 1 + 2 ...
 MACRO()()
+
+//H 10: t_1_021.cpp(13): #define
+//H 08: t_1_021.cpp(13): MACRO()=X + Y NEXT
+//H 10: t_1_021.cpp(14): #define
+//H 08: t_1_021.cpp(14): X=1
+//H 10: t_1_021.cpp(15): #define
+//H 08: t_1_021.cpp(15): Y=2
+//H 10: t_1_021.cpp(16): #define
+//H 08: t_1_021.cpp(16): NEXT()=...
+//H 00: t_1_021.cpp(20): MACRO(), [t_1_021.cpp(13): MACRO()=X + Y NEXT]
+//H 02: X + Y NEXT
+//H 01: t_1_021.cpp(14): X
+//H 02: 1
+//H 03: 1
+//H 01: t_1_021.cpp(15): Y
+//H 02: 2
+//H 03: 2
+//H 03: 1 + 2 NEXT
+//H 00: t_1_021.cpp(13): NEXT(), [t_1_021.cpp(16): NEXT()=...]
+//H 02: ...
+//H 03: ...

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_022.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_022.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_022.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,3 +22,15 @@
 //R 123
 MACRO(
 )
+
+//H 10: t_1_022.cpp(12): #define
+//H 08: t_1_022.cpp(12): MACRO()=123
+//H 00: t_1_022.cpp(16): MACRO(), [t_1_022.cpp(12): MACRO()=123]
+//H 02: 123
+//H 03: 123
+//H 00: t_1_022.cpp(19): MACRO(), [t_1_022.cpp(12): MACRO()=123]
+//H 02: 123
+//H 03: 123
+//H 00: t_1_022.cpp(23): MACRO(), [t_1_022.cpp(12): MACRO()=123]
+//H 02: 123
+//H 03: 123

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_023.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_023.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_023.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,16 @@
 //R #line 20 "t_1_023.cpp"
 //R EAT_1...
 EAT(1)...
+
+//H 10: t_1_023.cpp(13): #define
+//H 08: t_1_023.cpp(13): PRIMITIVE_CAT(a, b)=a ## b
+//H 10: t_1_023.cpp(15): #define
+//H 08: t_1_023.cpp(15): EAT(n)=PRIMITIVE_CAT(EAT_, n)
+//H 10: t_1_023.cpp(16): #define
+//H 08: t_1_023.cpp(16): EAT_1(a)=
+//H 00: t_1_023.cpp(20): EAT(1), [t_1_023.cpp(15): EAT(n)=PRIMITIVE_CAT(EAT_, n)]
+//H 02: PRIMITIVE_CAT(EAT_, 1)
+//H 00: t_1_023.cpp(15): PRIMITIVE_CAT(EAT_, 1), [t_1_023.cpp(13): PRIMITIVE_CAT(a, b)=a ## b]
+//H 02: EAT_1
+//H 03: EAT_1
+//H 03: EAT_1

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_025.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_025.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_025.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,18 @@
 //R #line 19 "t_1_025.cpp"
 SCAN(BUG) 1 2 3 4 5 //R 1 2 3 4 5
 
+//H 10: t_1_025.cpp(13): #define
+//H 08: t_1_025.cpp(13): SCAN(x)=x
+//H 10: t_1_025.cpp(15): #define
+//H 08: t_1_025.cpp(15): BUG=BUG_2
+//H 10: t_1_025.cpp(16): #define
+//H 08: t_1_025.cpp(16): BUG_2=
+//H 00: t_1_025.cpp(19): SCAN(BUG), [t_1_025.cpp(13): SCAN(x)=x]
+//H 01: t_1_025.cpp(15): BUG
+//H 02: BUG_2
+//H 01: t_1_025.cpp(16): BUG_2
+//H 02:
+//H 03: _
+//H 03: _
+//H 02:
+//H 03: _

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_026.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_026.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_026.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,6 @@
            // ^ ^ this is illegal
 
 MACRO(1, 2)
+
+//H 10: t_1_026.cpp(13): #define
+//H 18: boost::wave::macro_handling_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_029.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_029.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_029.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -21,3 +21,24 @@
 //R
 CAT4_1(1, 0, 0, 2) //R 1002
 CAT4_2(1, 0, 0, 2) //R 1002
+
+//H 10: t_1_029.cpp(12): #define
+//H 08: t_1_029.cpp(12): CAT3_1(a, b, c)=a##b##c
+//H 10: t_1_029.cpp(13): #define
+//H 08: t_1_029.cpp(13): CAT3_2(a, b, c)=a ## b ## c
+//H 10: t_1_029.cpp(15): #define
+//H 08: t_1_029.cpp(15): CAT4_1(a, b, c, d)=a##b##c##d
+//H 10: t_1_029.cpp(16): #define
+//H 08: t_1_029.cpp(16): CAT4_2(a, b, c, d)=a ## b ## c ## d
+//H 00: t_1_029.cpp(19): CAT3_1(1, 0, 0), [t_1_029.cpp(12): CAT3_1(a, b, c)=a##b##c]
+//H 02: 100
+//H 03: 100
+//H 00: t_1_029.cpp(20): CAT3_2(1, 0, 0), [t_1_029.cpp(13): CAT3_2(a, b, c)=a ## b ## c]
+//H 02: 100
+//H 03: 100
+//H 00: t_1_029.cpp(22): CAT4_1(1, 0, 0, 2), [t_1_029.cpp(15): CAT4_1(a, b, c, d)=a##b##c##d]
+//H 02: 1002
+//H 03: 1002
+//H 00: t_1_029.cpp(23): CAT4_2(1, 0, 0, 2), [t_1_029.cpp(16): CAT4_2(a, b, c, d)=a ## b ## c ## d]
+//H 02: 1002
+//H 03: 1002

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_030.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_030.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_030.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,3 +15,19 @@
 
 //R #line 17 "t_1_030.cpp"
 SCAN( MACRO EMPTY() )(1) //R (1)
+
+//H 10: t_1_030.cpp(12): #define
+//H 08: t_1_030.cpp(12): EMPTY()=
+//H 10: t_1_030.cpp(13): #define
+//H 08: t_1_030.cpp(13): SCAN(x)=x
+//H 10: t_1_030.cpp(14): #define
+//H 08: t_1_030.cpp(14): MACRO(x)=(x)
+//H 00: t_1_030.cpp(17): SCAN( MACRO EMPTY() ), [t_1_030.cpp(13): SCAN(x)=x]
+//H 00: t_1_030.cpp(17): EMPTY(), [t_1_030.cpp(12): EMPTY()=]
+//H 02:
+//H 03: _
+//H 02: MACRO
+//H 03: MACRO
+//H 00: t_1_030.cpp(17): MACRO(1), [t_1_030.cpp(14): MACRO(x)=(x)]
+//H 02: (1)
+//H 03: (1)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_031.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_031.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_031.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,3 +16,12 @@
 //R #line 17 "t_1_031.cpp"
 is_empty( + ) //R is_empty_+other
 is_empty( +text ) //R is_empty_+textother
+
+//H 10: t_1_031.cpp(14): #define
+//H 08: t_1_031.cpp(14): is_empty(...)=is_empty_ ## __VA_ARGS__ ## other
+//H 00: t_1_031.cpp(17): is_empty( + ), [t_1_031.cpp(14): is_empty(...)=is_empty_ ## __VA_ARGS__ ## other]
+//H 02: is_empty_+other
+//H 03: is_empty_+other
+//H 00: t_1_031.cpp(18): is_empty( +text ), [t_1_031.cpp(14): is_empty(...)=is_empty_ ## __VA_ARGS__ ## other]
+//H 02: is_empty_+textother
+//H 03: is_empty_+textother

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_033.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_033.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_033.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,18 @@
 STR(1,2,3) //R "1,2,3"
 STR(1 , 2 , 3) //R "1 , 2 , 3"
 STR( 1 , 2 , 3 ) //R "1 , 2 , 3"
+
+//H 10: t_1_033.cpp(14): #define
+//H 08: t_1_033.cpp(14): STR(...)=#__VA_ARGS__
+//H 00: t_1_033.cpp(17): STR(1, 2, 3), [t_1_033.cpp(14): STR(...)=#__VA_ARGS__]
+//H 02: "1, 2, 3"
+//H 03: "1, 2, 3"
+//H 00: t_1_033.cpp(18): STR(1,2,3), [t_1_033.cpp(14): STR(...)=#__VA_ARGS__]
+//H 02: "1,2,3"
+//H 03: "1,2,3"
+//H 00: t_1_033.cpp(19): STR(1 , 2 , 3), [t_1_033.cpp(14): STR(...)=#__VA_ARGS__]
+//H 02: "1 , 2 , 3"
+//H 03: "1 , 2 , 3"
+//H 00: t_1_033.cpp(20): STR( 1 , 2 , 3 ), [t_1_033.cpp(14): STR(...)=#__VA_ARGS__]
+//H 02: "1 , 2 , 3"
+//H 03: "1 , 2 , 3"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_034.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_034.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_034.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,3 +19,19 @@
 MACRO1(1,) //R 1 ->
 MACRO2(1, 2) //R 1,2
 STR() //R ""
+
+//H 10: t_1_034.cpp(14): #define
+//H 08: t_1_034.cpp(14): MACRO1(x, ...)=x -> __VA_ARGS__
+//H 10: t_1_034.cpp(15): #define
+//H 08: t_1_034.cpp(15): MACRO2(...)=__VA_ARGS__
+//H 10: t_1_034.cpp(16): #define
+//H 08: t_1_034.cpp(16): STR(...)=#__VA_ARGS__
+//H 00: t_1_034.cpp(19): MACRO1(1,§), [t_1_034.cpp(14): MACRO1(x, ...)=x -> __VA_ARGS__]
+//H 02: 1 -> §
+//H 03: 1 ->
+//H 00: t_1_034.cpp(20): MACRO2(1, 2), [t_1_034.cpp(15): MACRO2(...)=__VA_ARGS__]
+//H 02: 1,2
+//H 03: 1,2
+//H 00: t_1_034.cpp(21): STR(§), [t_1_034.cpp(16): STR(...)=#__VA_ARGS__]
+//H 02: ""
+//H 03: ""

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_035.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_035.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_035.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,3 +22,26 @@
 PASTE2(1, ,3,4) //R 134
 PASTE2(1,,3,4) //R 134
 PASTE2(1, , , 4) //R 14
+
+//H 10: t_1_035.cpp(14): #define
+//H 08: t_1_035.cpp(14): PASTE1(a, b, c, d)=a ## b ## c ## d
+//H 10: t_1_035.cpp(15): #define
+//H 08: t_1_035.cpp(15): PASTE2(a, b, c, d)=a##b##c##d
+//H 00: t_1_035.cpp(18): PASTE1(1, §,3,4), [t_1_035.cpp(14): PASTE1(a, b, c, d)=a ## b ## c ## d]
+//H 02: 134
+//H 03: 134
+//H 00: t_1_035.cpp(19): PASTE1(1,§,3,4), [t_1_035.cpp(14): PASTE1(a, b, c, d)=a ## b ## c ## d]
+//H 02: 134
+//H 03: 134
+//H 00: t_1_035.cpp(20): PASTE1(1, §, §, 4), [t_1_035.cpp(14): PASTE1(a, b, c, d)=a ## b ## c ## d]
+//H 02: 14
+//H 03: 14
+//H 00: t_1_035.cpp(22): PASTE2(1, §,3,4), [t_1_035.cpp(15): PASTE2(a, b, c, d)=a##b##c##d]
+//H 02: 134
+//H 03: 134
+//H 00: t_1_035.cpp(23): PASTE2(1,§,3,4), [t_1_035.cpp(15): PASTE2(a, b, c, d)=a##b##c##d]
+//H 02: 134
+//H 03: 134
+//H 00: t_1_035.cpp(24): PASTE2(1, §, §, 4), [t_1_035.cpp(15): PASTE2(a, b, c, d)=a##b##c##d]
+//H 02: 14
+//H 03: 14

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_036.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_036.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_036.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,3 +13,9 @@
 
 //R #line 15 "t_1_036.cpp"
 OBJECT //R ab
+
+//H 10: t_1_036.cpp(12): #define
+//H 08: t_1_036.cpp(12): OBJECT=a ## b
+//H 01: t_1_036.cpp(12): OBJECT
+//H 02: ab
+//H 03: ab

Modified: branches/release/libs/wave/test/testwave/testfiles/t_1_037.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_1_037.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_1_037.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,9 @@
 //R // bool;
 #define _VARIANT_BOOL /##/
 _VARIANT_BOOL bool;
+
+//H 10: t_1_037.cpp(15): #define
+//H 08: t_1_037.cpp(15): _VARIANT_BOOL=/##/
+//H 01: t_1_037.cpp(15): _VARIANT_BOOL
+//H 02: //
+//H 03: //

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_001.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_001.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_001.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,3 +16,17 @@
 #define WARNING1 This is a
 #define WARNING2 warning
 #warning WARNING1 WARNING2
+
+//H 10: t_2_001.cpp(16): #define
+//H 08: t_2_001.cpp(16): WARNING1=This is a
+//H 10: t_2_001.cpp(17): #define
+//H 08: t_2_001.cpp(17): WARNING2=warning
+//H 10: t_2_001.cpp(18): #warning
+//H 01: t_2_001.cpp(16): WARNING1
+//H 02: This is a
+//H 03: This is a
+//H 01: t_2_001.cpp(17): WARNING2
+//H 02: warning
+//H 03: warning
+//H 15: WARNING1 WARNING2
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_002.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_002.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_002.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,9 @@
 //R
 //E a_nonexisting_file.cpp(8): fatal error: encountered #error directive or #pragma wave stop(): This error should occur at line 8 of "a_nonexisting_file.cpp"
 #error This error should occur at line 8 of "a_nonexisting_file.cpp"
+
+//H 10: t_2_002.cpp(12): #line
+//H 17: 5 "a_nonexisting_file.cpp" (5, "a_nonexisting_file.cpp")
+//H 10: a_nonexisting_file.cpp(8): #error
+//H 16: This error should occur at line 8 of "a_nonexisting_file.cpp"
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_003.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_003.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_003.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,9 @@
 //R
 //E t_2_003.cpp(8): fatal error: encountered #error directive or #pragma wave stop(): This error should occur at line 8 of "t_2_003.cpp"
 #error This error should occur at line 8 of "t_2_003.cpp"
+
+//H 10: t_2_003.cpp(12): #line
+//H 17: 5 (5, "")
+//H 10: t_2_003.cpp(8): #error
+//H 16: This error should occur at line 8 of "t_2_003.cpp"
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_004.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_004.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_004.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,3 +16,19 @@
 //R
 //E a_nonexisting_file.cpp(8): fatal error: encountered #error directive or #pragma wave stop(): This error should occur at line 8 of "a_nonexisting_file.cpp"
 #error This error should occur at line 8 of "a_nonexisting_file.cpp"
+
+//H 10: t_2_004.cpp(12): #define
+//H 08: t_2_004.cpp(12): LINE_NO=5
+//H 10: t_2_004.cpp(13): #define
+//H 08: t_2_004.cpp(13): FILE_NAME="a_nonexisting_file.cpp"
+//H 10: t_2_004.cpp(14): #line
+//H 01: t_2_004.cpp(12): LINE_NO
+//H 02: 5
+//H 03: 5
+//H 01: t_2_004.cpp(13): FILE_NAME
+//H 02: "a_nonexisting_file.cpp"
+//H 03: "a_nonexisting_file.cpp"
+//H 17: 5 "a_nonexisting_file.cpp" (5, "a_nonexisting_file.cpp")
+//H 10: a_nonexisting_file.cpp(8): #error
+//H 16: This error should occur at line 8 of "a_nonexisting_file.cpp"
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_005.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_005.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_005.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -12,3 +12,5 @@
 //R
 //E t_2_005.cpp(14): error: ill formed preprocessor directive: this_is_a_unknown_pp_directive
 #this_is_a_unknown_pp_directive with some parameter
+
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_006.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_006.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_006.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -23,3 +23,16 @@
 //R #line 25 "t_2_006.cpp"
 //R #pragma STDC preprocessed pragma body
 #pragma STDC PRAGMA_BODY
+
+//H 10: t_2_006.cpp(12): #define
+//H 08: t_2_006.cpp(12): PRAGMA_BODY=preprocessed pragma body
+//H 10: t_2_006.cpp(16): #pragma
+//H 10: t_2_006.cpp(19): #pragma
+//H 01: t_2_006.cpp(12): PRAGMA_BODY
+//H 02: preprocessed pragma body
+//H 03: preprocessed pragma body
+//H 10: t_2_006.cpp(22): #pragma
+//H 10: t_2_006.cpp(25): #pragma
+//H 01: t_2_006.cpp(12): PRAGMA_BODY
+//H 02: preprocessed pragma body
+//H 03: preprocessed pragma body

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_007.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_007.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_007.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -10,7 +10,7 @@
 //O --c99
 
 // Tests correctness of macro expansion inside #pragma directives
-// Note: in C99 mode the STDC prefix in pragmas supresses macro expansion
+// Note: in C99 mode the STDC prefix in pragma's suppresses macro expansion
 
 #define PRAGMA_BODY preprocessed pragma body
 
@@ -26,3 +26,13 @@
 //R #line 28 "t_2_007.cpp"
 //R #pragma STDC PRAGMA_BODY
 #pragma STDC PRAGMA_BODY
+
+//H 10: t_2_007.cpp(15): #define
+//H 08: t_2_007.cpp(15): PRAGMA_BODY=preprocessed pragma body
+//H 10: t_2_007.cpp(19): #pragma
+//H 10: t_2_007.cpp(22): #pragma
+//H 01: t_2_007.cpp(15): PRAGMA_BODY
+//H 02: preprocessed pragma body
+//H 03: preprocessed pragma body
+//H 10: t_2_007.cpp(25): #pragma
+//H 10: t_2_007.cpp(28): #pragma

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_008.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_008.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_008.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -7,9 +7,18 @@
     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-// Tests #include statements with macros as argmuments
+// Tests #include statements with macros as arguments
 
 //R
 //E t_2_008.cpp(15): error: could not find include file: some_include_file.h
 #define INCLUDE_FILE "some_include_file.h"
 #include INCLUDE_FILE
+
+//H 10: t_2_008.cpp(14): #define
+//H 08: t_2_008.cpp(14): INCLUDE_FILE="some_include_file.h"
+//H 10: t_2_008.cpp(15): #include
+//H 01: t_2_008.cpp(14): INCLUDE_FILE
+//H 02: "some_include_file.h"
+//H 03: "some_include_file.h"
+//H 04: "some_include_file.h"
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_009.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_009.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_009.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -7,9 +7,8 @@
     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-// The result of macro expansion must be
-// retokenized to find header-name tokens
-// of either <file> or "file"
+// The result of macro expansion must be re-tokenized to find header-name
+// tokens of either <file> or "file"
 
 //O -S.
 
@@ -19,14 +18,38 @@
 #define SYSTEM_HEADER <t_2_009.cpp>
 #define USER_HEADER "t_2_009.cpp"
 
-//R #line 24 "t_2_009.cpp"
+//R #line 23 "t_2_009.cpp"
 //R including <t_2_009.cpp>
 including <t_2_009.cpp>
 #include SYSTEM_HEADER
 
-//R #line 29 "t_2_009.cpp"
+//R #line 28 "t_2_009.cpp"
 //R including "t_2_009.cpp"
 including "t_2_009.cpp"
 #include USER_HEADER
 
 #endif // FILE_002_009_CPP
+
+//H 10: t_2_009.cpp(15): #if
+//H 11: t_2_009.cpp(15): #if !defined(FILE_002_009_CPP) : 1
+//H 10: t_2_009.cpp(16): #define
+//H 08: t_2_009.cpp(16): FILE_002_009_CPP=
+//H 10: t_2_009.cpp(18): #define
+//H 08: t_2_009.cpp(18): SYSTEM_HEADER=<t_2_009.cpp>
+//H 10: t_2_009.cpp(19): #define
+//H 08: t_2_009.cpp(19): USER_HEADER="t_2_009.cpp"
+//H 10: t_2_009.cpp(24): #include
+//H 01: t_2_009.cpp(18): SYSTEM_HEADER
+//H 02: <t_2_009.cpp>
+//H 03: <t_2_009.cpp>
+//H 04: <t_2_009.cpp>
+//H 05: $B(t_2_009.cpp) ($B(t_2_009.cpp))
+//H 10: t_2_009.cpp(15): #if
+//H 11: t_2_009.cpp(15): #if !defined(FILE_002_009_CPP) : 0
+//H 06:
+//H 10: t_2_009.cpp(29): #include
+//H 01: t_2_009.cpp(19): USER_HEADER
+//H 02: "t_2_009.cpp"
+//H 03: "t_2_009.cpp"
+//H 04: "t_2_009.cpp"
+//H 10: t_2_009.cpp(31): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_010.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_010.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_010.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -9,7 +9,13 @@
 
 // Tests error reporting for missing #endif
 
-//E t_2_010.cpp(16): error: detected at least one missing #endif directive
+//E t_2_010.cpp(22): error: detected at least one missing #endif directive
 #if 1
 #if 0
 #endif
+
+//H 10: t_2_010.cpp(13): #if
+//H 11: t_2_010.cpp(13): #if 1: 1
+//H 10: t_2_010.cpp(14): #if
+//H 11: t_2_010.cpp(14): #if 0: 0
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_011.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_011.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_011.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,3 +13,9 @@
 #if 1
 #endif
 #endif
+
+//H 10: t_2_011.cpp(13): #if
+//H 11: t_2_011.cpp(13): #if 1: 1
+//H 10: t_2_011.cpp(14): #endif
+//H 10: t_2_011.cpp(15): #endif
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_012.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_012.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_012.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -12,3 +12,6 @@
 //E t_2_012.cpp(13): error: the #if for this directive is missing: #else
 #else
 #endif
+
+//H 10: t_2_012.cpp(13): #else
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_013.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_013.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_013.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -9,7 +9,11 @@
 
 // Tests error reporting for missing #if
 
-//E t_2_013.cpp(16): error: detected at least one missing #endif directive
+//E t_2_013.cpp(20): error: detected at least one missing #endif directive
 #if 1
 #else
 
+//H 10: t_2_013.cpp(13): #if
+//H 11: t_2_013.cpp(13): #if 1: 1
+//H 10: t_2_013.cpp(14): #else
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_014.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_014.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_014.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -81,3 +81,31 @@
 #else
 false
 #endif
+
+//H 10: t_2_014.cpp(15): #if
+//H 11: t_2_014.cpp(15): #if compl 1: 1
+//H 10: t_2_014.cpp(17): #else
+//H 10: t_2_014.cpp(23): #if
+//H 11: t_2_014.cpp(23): #if not 1: 0
+//H 10: t_2_014.cpp(27): #endif
+//H 10: t_2_014.cpp(31): #if
+//H 11: t_2_014.cpp(31): #if 1 or 2: 1
+//H 10: t_2_014.cpp(33): #else
+//H 10: t_2_014.cpp(39): #if
+//H 11: t_2_014.cpp(39): #if 1 and 2: 1
+//H 10: t_2_014.cpp(41): #else
+//H 10: t_2_014.cpp(47): #if
+//H 11: t_2_014.cpp(47): #if not 1: 0
+//H 10: t_2_014.cpp(51): #endif
+//H 10: t_2_014.cpp(55): #if
+//H 11: t_2_014.cpp(55): #if 1 xor 2: 1
+//H 10: t_2_014.cpp(57): #else
+//H 10: t_2_014.cpp(63): #if
+//H 11: t_2_014.cpp(63): #if 1 bitand 2: 0
+//H 10: t_2_014.cpp(67): #endif
+//H 10: t_2_014.cpp(71): #if
+//H 11: t_2_014.cpp(71): #if 1 bitor 2: 1
+//H 10: t_2_014.cpp(73): #else
+//H 10: t_2_014.cpp(79): #if
+//H 11: t_2_014.cpp(79): #if 1 not_eq 2: 1
+//H 10: t_2_014.cpp(81): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_015.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_015.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_015.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -7,7 +7,7 @@
     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-// Tests, whether #if works when the expression is surrounded by paranthesis
+// Tests, whether #if works when the expression is surrounded by parenthesis
 
 #define WINVER 0x0500
 
@@ -16,3 +16,12 @@
 #if(WINVER >= 0x0500)
 true
 #endif
+
+//H 10: t_2_015.cpp(12): #define
+//H 08: t_2_015.cpp(12): WINVER=0x0500
+//H 10: t_2_015.cpp(16): #if
+//H 01: t_2_015.cpp(12): WINVER
+//H 02: 0x0500
+//H 03: 0x0500
+//H 11: t_2_015.cpp(16): #if (WINVER >= 0x0500): 1
+//H 10: t_2_015.cpp(18): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_016.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_016.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_016.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,10 @@
 #if defined (_MSC_VER) && (_MSC_VER >= 1020)
 true
 #endif
+
+//H 10: t_2_016.cpp(17): #if
+//H 01: <command line>(1): _MSC_VER
+//H 02: 1200
+//H 03: 1200
+//H 11: t_2_016.cpp(17): #if defined (_MSC_VER) && (_MSC_VER >= 1020): 1
+//H 10: t_2_016.cpp(19): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_2_017.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_2_017.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_2_017.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,3 +22,15 @@
 //R #line 24 "t_2_017.cpp"
 //R file t_2_017.cpp
 file t_2_017.cpp
+
+//H 10: t_2_017.cpp(13): #if
+//H 11: t_2_017.cpp(13): #if !defined(FILE_002_017_CPP) : 1
+//H 10: t_2_017.cpp(14): #define
+//H 08: t_2_017.cpp(14): FILE_002_017_CPP=
+//H 10: t_2_017.cpp(16): #include
+//H 04: "$P(t_2_017.cpp)"
+//H 05: $B(t_2_017.cpp) ($B(t_2_017.cpp))
+//H 10: t_2_017.cpp(13): #if
+//H 11: t_2_017.cpp(13): #if !defined(FILE_002_017_CPP) : 0
+//H 06:
+//H 10: t_2_017.cpp(18): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_3_001.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_3_001.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_3_001.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -12,3 +12,6 @@
 //R
 //E t_3_001.cpp(14): warning: #undef may not be used on this predefined name: __cplusplus
 #undef __cplusplus // should emit a warning
+
+//H 10: t_3_001.cpp(14): #undef
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_3_002.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_3_002.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_3_002.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,7 +15,7 @@
 __cplusplus //R 199711L
 __STDC_HOSTED__ //R __STDC_HOSTED__
 __LINE__ //R 17
-__FILE__ //R "$F"
+__FILE__ //R "$P"
 __BASE_FILE__ //R "$F"
 __WAVE_HAS_VARIADICS__ //R __WAVE_HAS_VARIADICS__
 __INCLUDE_LEVEL__ //R 0
@@ -31,3 +31,20 @@
 __FILE__ //R "test.cpp"
 __BASE_FILE__ //R "$F"
 
+//H 01: <built-in>(1): __STDC__
+//H 02: 1
+//H 03: 1
+//H 01: <built-in>(1): __cplusplus
+//H 02: 199711L
+//H 03: 199711L
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 10: t_3_002.cpp(23): #line
+//H 17: 50 "test.cpp" (50, "test.cpp")
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_3_003.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_3_003.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_3_003.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,7 +17,7 @@
 __cplusplus //R 199711L
 __STDC_HOSTED__ //R __STDC_HOSTED__
 __LINE__ //R 19
-__FILE__ //R "$F"
+__FILE__ //R "$P"
 __BASE_FILE__ //R "$F"
 __WAVE_HAS_VARIADICS__ //R 1
 __INCLUDE_LEVEL__ //R 0
@@ -33,3 +33,23 @@
 __FILE__ //R "test.cpp"
 __BASE_FILE__ //R "$F"
 
+//H 01: <built-in>(1): __STDC__
+//H 02: 1
+//H 03: 1
+//H 01: <built-in>(1): __cplusplus
+//H 02: 199711L
+//H 03: 199711L
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 01: <built-in>(1): __WAVE_HAS_VARIADICS__
+//H 02: 1
+//H 03: 1
+//H 10: t_3_003.cpp(25): #line
+//H 17: 50 "test.cpp" (50, "test.cpp")
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_3_004.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_3_004.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_3_004.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,7 +17,7 @@
 __cplusplus //R __cplusplus
 __STDC_HOSTED__ //R 0
 __LINE__ //R 19
-__FILE__ //R "$F"
+__FILE__ //R "$P"
 __BASE_FILE__ //R "$F"
 __WAVE_HAS_VARIADICS__ //R 1
 __INCLUDE_LEVEL__ //R 0
@@ -33,3 +33,26 @@
 __FILE__ //R "test.cpp"
 __BASE_FILE__ //R "$F"
 
+//H 01: <built-in>(1): __STDC__
+//H 02: 1
+//H 03: 1
+//H 01: <built-in>(1): __STDC_VERSION__
+//H 02: 199901L
+//H 03: 199901L
+//H 01: <built-in>(1): __STDC_HOSTED__
+//H 02: 0
+//H 03: 0
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 01: <built-in>(1): __WAVE_HAS_VARIADICS__
+//H 02: 1
+//H 03: 1
+//H 10: t_3_004.cpp(25): #line
+//H 17: 50 "test.cpp" (50, "test.cpp")
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"
+//H 01: <built-in>(1): __BASE_FILE__
+//H 02: "$F"
+//H 03: "$F"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_4_001.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_4_001.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_4_001.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,3 +16,7 @@
 #else
 false
 #endif
+
+//H 10: t_4_001.cpp(14): #if
+//H 11: t_4_001.cpp(14): #if 1 / 10 == 0: 1
+//H 10: t_4_001.cpp(16): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_4_002.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_4_002.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_4_002.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,12 @@
 #if !C
 true
 #endif
+
+//H 10: t_4_002.cpp(13): #define
+//H 08: t_4_002.cpp(13): C=C
+//H 10: t_4_002.cpp(17): #if
+//H 01: t_4_002.cpp(13): C
+//H 02: C
+//H 03: C
+//H 11: t_4_002.cpp(17): #if !C: 1
+//H 10: t_4_002.cpp(19): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_4_004.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_4_004.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_4_004.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -33,3 +33,29 @@
 #else
 false
 #endif
+
+//H 10: t_4_004.cpp(12): #define
+//H 08: t_4_004.cpp(12): USHRT_MAX=0xffffU
+//H 10: t_4_004.cpp(15): # if
+//H 11: t_4_004.cpp(15): # if !defined (SIZEOF_SHORT): 1
+//H 10: t_4_004.cpp(16): # if
+//H 01: t_4_004.cpp(12): USHRT_MAX
+//H 02: 0xffffU
+//H 03: 0xffffU
+//H 11: t_4_004.cpp(16): # if (USHRT_MAX) == 255U: 0
+//H 10: t_4_004.cpp(18): # elif
+//H 01: t_4_004.cpp(12): USHRT_MAX
+//H 02: 0xffffU
+//H 03: 0xffffU
+//H 11: t_4_004.cpp(18): # elif (USHRT_MAX) == 65535U: 1
+//H 10: t_4_004.cpp(19): #define
+//H 08: t_4_004.cpp(19): SIZEOF_SHORT=2
+//H 10: t_4_004.cpp(20): # elif
+//H 10: t_4_004.cpp(22): # elif
+//H 10: t_4_004.cpp(27): # endif
+//H 10: t_4_004.cpp(31): #if
+//H 01: t_4_004.cpp(19): SIZEOF_SHORT
+//H 02: 2
+//H 03: 2
+//H 11: t_4_004.cpp(31): #if SIZEOF_SHORT == 2: 1
+//H 10: t_4_004.cpp(33): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_5_030.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_5_030.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_5_030.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -15,7 +15,7 @@
 
 // Tests whether rescanning of a macro replace any macro call in the replacement
 // text after substitution of parameters by pre-expanded-arguments. This
-// re-examination may involve the succeding sequences from the source
+// re-examination may involve the succeeding sequences from the source
 // file (what a queer thing!).
 
 // Note: The tests 27.4 and 27.5 are currently disabled because of Wave's
@@ -57,7 +57,7 @@
 // 27.5: Queer thing.
 // R #line 28 "t_5_030.cpp"
 //#define HEAD SUB(
-//HEAD a,b ) // R
+// HEAD a,b ) // R
 
 // 27.6: Recursive macro.
 //R #line 66 "t_5_030.cpp"

Modified: branches/release/libs/wave/test/testwave/testfiles/t_6_023.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_6_023.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_6_023.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,7 +16,7 @@
 // Tests error reporting: Trailing junk of #else, #endif.
 
 // 16.1: Trailing junk of #else.
-//E t_6_023.cpp(22): error: ill formed preprocessor directive: #else
+//E t_6_023.cpp(22): error: ill formed preprocessor directive: #else MACRO_0
 #define MACRO_0 0
 #if MACRO_0
 #else MACRO_0

Modified: branches/release/libs/wave/test/testwave/testfiles/t_6_063.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_6_063.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_6_063.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,6 +22,11 @@
 //R #line 19 "t_6_063.hpp"
 //R int dummy = 0;
 
+//H 10: t_6_063.cpp(20): #include "t_6_063.hpp"
+//H 04: "t_6_063.hpp"
+//H 05: $B(t_6_063.hpp) ($B(t_6_063.hpp))
+//H 18: boost::wave::preprocess_exception
+
 /*-
  * Copyright (c) 1998, 2002-2005 Kiyoshi Matsui <kmatsui_at_[hidden]>
  * All rights reserved.

Modified: branches/release/libs/wave/test/testwave/testfiles/t_6_067.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_6_067.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_6_067.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -22,6 +22,11 @@
 //R #line 19 "t_6_067.hpp"
 //R int dummy = 0;
 
+//H 10: t_6_067.cpp(20): #include "t_6_067.hpp"
+//H 04: "t_6_067.hpp"
+//H 05: $B(t_6_067.hpp) ($B(t_6_067.hpp))
+//H 18: boost::wave::lexing_exception
+
 /*-
  * Copyright (c) 1998, 2002-2005 Kiyoshi Matsui <kmatsui_at_[hidden]>
  * All rights reserved.

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_001.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_001.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_001.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,6 @@
     void exposed() {} //R void exposed() {}
 #endif
 
+//H 10: t_9_001.cpp(16): #if
+//H 11: t_9_001.cpp(16): #if 1: 1
+//H 10: t_9_001.cpp(19): #endif

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_002.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_002.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_002.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -18,3 +18,6 @@
 1
 //R #line 18 "t_9_002.cpp"
 //R 1
+
+//H 10: t_9_002.cpp(10): #if
+//H 11: t_9_002.cpp(10): #if 0: 0

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_003.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_003.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_003.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -16,8 +16,10 @@
 #define PLUS() +
 #define MINUS() -
 #define DOT() .
+#define GREATER() >
+#define LESS() <
 
-//R #line 21 "t_9_003.cpp"
+//R #line 23 "t_9_003.cpp"
 X()2 //R 1 2
 STRINGIZE( X()2 ) //R "12"
 //R
@@ -35,3 +37,25 @@
 //R
 DOT()DOT()DOT() //R .. .
 STRINGIZE( DOT()DOT()DOT() ) //R "..."
+
+// the following are regressions reported by Stefan Seefeld
+//R #line 43 "t_9_003.cpp"
+GREATER()GREATER() //R > >
+STRINGIZE( GREATER()GREATER() ) //R ">>"
+//R
+LESS()LESS() //R < <
+STRINGIZE( LESS()LESS() ) //R "<<"
+
+#define COMMA() ,
+#define AND() &
+#define CHAR() char
+#define STAR() *
+
+// Make sure no whitespace gets inserted in between the operator symbols
+//R #line 56 "t_9_003.cpp"
+void foo(char&, char) //R void foo(char&, char)
+void foo(char *) //R void foo(char *)
+void foo(char *&) //R void foo(char *&)
+void foo(CHAR()AND()COMMA() CHAR()) //R void foo(char&, char)
+void foo(CHAR() STAR()) //R void foo(char *)
+void foo(CHAR() STAR()AND()) //R void foo(char *&)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_004.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_004.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_004.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,3 +19,10 @@
 #define \u0061 weird // 0x61 == 'a'
 
 \u0061
+
+//H 10: t_9_004.cpp(12): #define
+//H 08: t_9_004.cpp(12): \u00ff=...
+//H 01: t_9_004.cpp(12): \u00ff
+//H 02: ...
+//H 03: ...
+//H 18: boost::wave::lexing_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_006.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_006.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_006.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -36,3 +36,11 @@
 "X" is not defined.
 #endif
 
+//H 10: t_9_006.cpp(21): #define
+//H 08: t_9_006.cpp(21): X=
+//H 10: t_9_006.cpp(25): #if
+//H 11: t_9_006.cpp(25): #if defined(X): 1
+//H 10: t_9_006.cpp(27): #else
+//H 10: t_9_006.cpp(33): #if
+//H 11: t_9_006.cpp(33): #if defined X: 1
+//H 10: t_9_006.cpp(35): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_007.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_007.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_007.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -7,7 +7,7 @@
     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-// Test error reproting during redefinition of 'defined'
+// Test error reporting during redefinition of 'defined'
 
 //E t_9_007.cpp(13): warning: this predefined name may not be redefined: defined
 #define defined 1 // undefined in C++ (16.8/3), error in C99 (6.10.8/4)
@@ -15,3 +15,6 @@
 #if defined // error
 <error>
 #endif
+
+//H 10: t_9_007.cpp(13): #define
+//H 18: boost::wave::macro_handling_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_008.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_008.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_008.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -7,7 +7,10 @@
     LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 =============================================================================*/
 
-// Test error reproting during redefinition of 'defined'
+// Test error reporting during redefinition of 'defined'
 
 //E t_9_008.cpp(13): warning: #undef may not be used on this predefined name: defined
 #undef defined
+
+//H 10: t_9_008.cpp(13): #undef
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_009.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_009.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_009.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -14,3 +14,14 @@
 
 //R #line 16 "t_9_009.cpp"
 X() //R ...
+
+//H 10: t_9_009.cpp(12): #define
+//H 08: t_9_009.cpp(12): X()=X_ ## 0R()
+//H 10: t_9_009.cpp(13): #define
+//H 08: t_9_009.cpp(13): X_0R()=...
+//H 00: t_9_009.cpp(16): X(), [t_9_009.cpp(12): X()=X_ ## 0R()]
+//H 02: X_0R()
+//H 00: t_9_009.cpp(12): X_0R(), [t_9_009.cpp(13): X_0R()=...]
+//H 02: ...
+//H 03: ...
+//H 03: ...

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_010.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_010.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_010.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -27,3 +27,44 @@
 //R #line 28 "t_9_010.cpp"
 CAT(A, X() C) //R AB C
 CAT(A, X()C) //R AB C
+
+//H 10: t_9_010.cpp(13): #define
+//H 08: t_9_010.cpp(13): A(x)=x
+//H 00: t_9_010.cpp(16): A(1), [t_9_010.cpp(13): A(x)=x]
+//H 02: 1
+//H 03: 1
+//H 00: t_9_010.cpp(17): A(1), [t_9_010.cpp(13): A(x)=x]
+//H 02: 1
+//H 03: 1
+//H 00: t_9_010.cpp(18): A(X), [t_9_010.cpp(13): A(x)=x]
+//H 02: X
+//H 03: X
+//H 00: t_9_010.cpp(19): A(X), [t_9_010.cpp(13): A(x)=x]
+//H 02: X
+//H 03: X
+//H 10: t_9_010.cpp(21): #define
+//H 08: t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)
+//H 10: t_9_010.cpp(22): #define
+//H 08: t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b
+//H 10: t_9_010.cpp(24): #define
+//H 08: t_9_010.cpp(24): X()=B
+//H 10: t_9_010.cpp(25): #define
+//H 08: t_9_010.cpp(25): ABC=1
+//H 00: t_9_010.cpp(28): CAT(A, X() C), [t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)]
+//H 00: t_9_010.cpp(28): X(), [t_9_010.cpp(24): X()=B]
+//H 02: B
+//H 03: B
+//H 02: PRIMITIVE_CAT(A, B C)
+//H 00: t_9_010.cpp(21): PRIMITIVE_CAT(A, B C), [t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b]
+//H 02: AB C
+//H 03: AB C
+//H 03: AB C
+//H 00: t_9_010.cpp(29): CAT(A, X()C), [t_9_010.cpp(21): CAT(a, b)=PRIMITIVE_CAT(a, b)]
+//H 00: t_9_010.cpp(29): X(), [t_9_010.cpp(24): X()=B]
+//H 02: B
+//H 03: B
+//H 02: PRIMITIVE_CAT(A, BC)
+//H 00: t_9_010.cpp(21): PRIMITIVE_CAT(A, BC), [t_9_010.cpp(22): PRIMITIVE_CAT(a, b)=a ## b]
+//H 02: ABC
+//H 03: ABC
+//H 03: ABC

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_011.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_011.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_011.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,14 @@
 //R #line 18 "t_9_011.cpp"
 PRIMITIVE_CAT(1, ABC) //R 1 ABC
 PRIMITIVE_CAT3(ABC, 1, ABC) //R ABC1ABC
+
+//H 10: t_9_011.cpp(14): #define
+//H 08: t_9_011.cpp(14): PRIMITIVE_CAT(a, b)=a ## b
+//H 10: t_9_011.cpp(15): #define
+//H 08: t_9_011.cpp(15): PRIMITIVE_CAT3(a, b, c)=a ## b ## c
+//H 00: t_9_011.cpp(18): PRIMITIVE_CAT(1, ABC), [t_9_011.cpp(14): PRIMITIVE_CAT(a, b)=a ## b]
+//H 02: 1ABC
+//H 03: 1ABC
+//H 00: t_9_011.cpp(19): PRIMITIVE_CAT3(ABC, 1, ABC), [t_9_011.cpp(15): PRIMITIVE_CAT3(a, b, c)=a ## b ## c]
+//H 02: ABC1ABC
+//H 03: ABC1ABC

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_012.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_012.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_012.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,9 @@
 
 //R #line 19 "t_9_012.cpp"
 CreateWindowA(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11) //R CreateWindowExA(0L, 1, 2, 3, 4, 5,6, 7, 8, 9, 10, 11)
+
+//H 10: t_9_012.cpp(13): #define
+//H 08: t_9_012.cpp(13): 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)
+//H 00: t_9_012.cpp(19): CreateWindowA(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), [t_9_012.cpp(13): 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)]
+//H 02: CreateWindowExA(0L, 1, 2, 3, 4, 5,6, 7, 8, 9, 10, 11)
+//H 03: CreateWindowExA(0L, 1, 2, 3, 4, 5,6, 7, 8, 9, 10, 11)

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_013.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_013.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_013.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,3 +13,7 @@
 
 //E t_9_013.cpp(15): warning: empty macro arguments are not supported in pure C++ mode, use variadics mode to allow these: MACRO
 MACRO(1,, 3)
+
+//H 10: t_9_013.cpp(12): #define
+//H 08: t_9_013.cpp(12): MACRO(a, b, c)=a ## b ## c
+//H 18: boost::wave::preprocess_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_016.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_016.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_016.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -17,3 +17,25 @@
 #define EXPAND(x) x
 EXPAND(#) define later
 #endif
+
+//H 10: t_9_016.cpp(10): #if
+//H 11: t_9_016.cpp(10): #if !defined(inclusion): 1
+//H 10: t_9_016.cpp(11): #define
+//H 08: t_9_016.cpp(11): inclusion=
+//H 10: t_9_016.cpp(12): # include
+//H 04: "$P(t_9_016.cpp)"
+//H 05: $B(t_9_016.cpp) ($B(t_9_016.cpp))
+//H 10: t_9_016.cpp(10): #if
+//H 11: t_9_016.cpp(10): #if !defined(inclusion): 0
+//H 10: t_9_016.cpp(17): #define
+//H 08: t_9_016.cpp(17): EXPAND(x)=x
+//H 00: t_9_016.cpp(18): EXPAND(#), [t_9_016.cpp(17): EXPAND(x)=x]
+//H 02: #
+//H 03: #
+//H 10: t_9_016.cpp(19): #endif
+//H 06:
+//H 10: t_9_016.cpp(13): # include "t_9_016.hpp"
+//H 04: "t_9_016.hpp"
+//H 05: $B(t_9_016.hpp) ($B(t_9_016.hpp))
+//H 06:
+//H 10: t_9_016.cpp(14): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_017.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_017.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_017.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -46,3 +46,30 @@
 #else
 false is defined
 #endif
+
+//H 10: t_9_017.cpp(12): #define
+//H 08: t_9_017.cpp(12): true=1
+//H 10: t_9_017.cpp(13): #define
+//H 08: t_9_017.cpp(13): false=0
+//H 10: t_9_017.cpp(17): #if
+//H 11: t_9_017.cpp(17): #if defined(true): 1
+//H 01: t_9_017.cpp(12): true
+//H 02: 1
+//H 03: 1
+//H 10: t_9_017.cpp(19): #else
+//H 10: t_9_017.cpp(25): #if
+//H 11: t_9_017.cpp(25): #if defined(false): 1
+//H 01: t_9_017.cpp(13): false
+//H 02: 0
+//H 03: 0
+//H 10: t_9_017.cpp(27): #else
+//H 10: t_9_017.cpp(31): #undef
+//H 09: t_9_017.cpp(31): true
+//H 10: t_9_017.cpp(32): #undef
+//H 09: t_9_017.cpp(32): false
+//H 10: t_9_017.cpp(36): #ifndef
+//H 11: t_9_017.cpp(36): #ifndef true: 0
+//H 10: t_9_017.cpp(38): #else
+//H 10: t_9_017.cpp(44): #ifndef
+//H 11: t_9_017.cpp(44): #ifndef false: 0
+//H 10: t_9_017.cpp(46): #else

Modified: branches/release/libs/wave/test/testwave/testfiles/t_9_018.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/t_9_018.cpp (original)
+++ branches/release/libs/wave/test/testwave/testfiles/t_9_018.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -13,3 +13,8 @@
 //E t_9_018.cpp(15): warning: illegal macro redefinition: M1
 #define M1 1
 #define M1
+
+//H 10: t_9_018.cpp(14): #define
+//H 08: t_9_018.cpp(14): M1=1
+//H 10: t_9_018.cpp(15): #define
+//H 18: boost::wave::macro_handling_exception

Modified: branches/release/libs/wave/test/testwave/testfiles/test.cfg
==============================================================================
--- branches/release/libs/wave/test/testwave/testfiles/test.cfg (original)
+++ branches/release/libs/wave/test/testwave/testfiles/test.cfg 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -2,7 +2,7 @@
 # Boost.Wave: A Standard compliant C++ preprocessor library
 # http://www.boost.org/
 #
-# Copyright (c) 2003-2006 Hartmut Kaiser. Distributed under the Boost
+# Copyright (c) 2003-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)
 #
@@ -48,6 +48,7 @@
 t_1_035.cpp
 t_1_036.cpp
 t_1_037.cpp
+t_1_038.cpp
 
 #
 # t_2: Preprocessing directives
@@ -69,6 +70,7 @@
 t_2_015.cpp
 t_2_016.cpp
 t_2_017.cpp
+t_2_018.cpp
 
 #
 # t_3: Predefined macros

Modified: branches/release/libs/wave/test/testwave/testwave.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testwave.cpp (original)
+++ branches/release/libs/wave/test/testwave/testwave.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -37,6 +37,8 @@
 // level 3: prints the expected and real result for failed tests
 // level 4: prints the outcome of every test
 // level 5: prints the real result even for succeeded tests
+// level 6: prints the real hooks information recorded, even for succeeded
+// tests
 //
 // level 9: prints information about almost everything
 //
@@ -59,11 +61,13 @@
             ("copyright,c", "print out the copyright statement")
             ("config-file", po::value<std::vector<std::string> >()->composing(),
                 "specify a config file (alternatively: @arg)")
+ ("hooks", po::value<bool>()->default_value(true),
+ "test preprocessing hooks")
             ("debug,d", po::value<int>(), "set the debug level (0...9)")
         ;
 
     // Hidden options, will be used in in config file analysis to allow to
- // recognise positional arguments, will not be shown to the user.
+ // recognize positional arguments, will not be shown to the user.
         po::options_description desc_hidden("Hidden options");
         desc_hidden.add_options()
             ("input", po::value<std::vector<std::string> >()->composing(),
@@ -172,7 +176,7 @@
                     for (std::vector<std::string>::const_iterator iit = infiles.begin();
                          iit != iend; ++iit)
                     {
- // correct the file name (prepend the cfg file path)
+ // correct the file name (pre-pend the config file path)
                         fs::path cfgpath = fs::complete(
                             fs::path(*cit, fs::native), fs::current_path());
                         fs::path filepath =

Modified: branches/release/libs/wave/test/testwave/testwave_app.cpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testwave_app.cpp (original)
+++ branches/release/libs/wave/test/testwave/testwave_app.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -20,6 +20,10 @@
 #include <boost/detail/workaround.hpp>
 
 // include Wave
+
+// always use new hooks
+#define BOOST_WAVE_USE_DEPRECIATED_PREPROCESSING_HOOKS 0
+
 #include <boost/wave.hpp>
 
 // include the lexer related stuff
@@ -29,6 +33,7 @@
 // test application related headers
 #include "cmd_line_utils.hpp"
 #include "testwave_app.hpp"
+#include "collect_hooks_information.hpp"
 
 namespace po = boost::program_options;
 namespace fs = boost::filesystem;
@@ -36,27 +41,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 // testwave version definitions
 #define TESTWAVE_VERSION_MAJOR 0
-#define TESTWAVE_VERSION_MINOR 4
+#define TESTWAVE_VERSION_MINOR 5
 #define TESTWAVE_VERSION_SUBMINOR 0
 
-///////////////////////////////////////////////////////////////////////////////
-// workaround for missing ostringstream
-#ifdef BOOST_NO_STRINGSTREAM
-#include <strstream>
-#define BOOST_WAVETEST_OSSTREAM std::ostrstream
-std::string BOOST_WAVETEST_GETSTRING(std::ostrstream& ss)
-{
- ss << ends;
- std::string rval = ss.str();
- ss.freeze(false);
- return rval;
-}
-#else
-#include <sstream>
-#define BOOST_WAVETEST_GETSTRING(ss) ss.str()
-#define BOOST_WAVETEST_OSSTREAM std::ostringstream
-#endif
-
 namespace {
 
     ///////////////////////////////////////////////////////////////////////////
@@ -86,19 +73,6 @@
     }
 
     ///////////////////////////////////////////////////////////////////////////
- template <typename String>
- String const& handle_filepath(String &name)
- {
- using boost::wave::util::impl::unescape_lit;
-
- String unesc_name = unescape_lit(name);
- fs::path p (unesc_name.c_str(), fs::native);
-
- name = p.leaf().c_str();
- return name;
- }
-
- ///////////////////////////////////////////////////////////////////////////
     template <typename Iterator>
     bool handle_line_directive(Iterator &it, Iterator const& end,
         std::string &result)
@@ -123,15 +97,34 @@
         result = result + name.c_str();
         return true;
     }
+
+ template <typename T>
+ inline T const&
+ variables_map_as(po::variable_value const& v, T*)
+ {
+#if (__GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3)) || \
+ BOOST_WORKAROUND(__MWERKS__, < 0x3200)
+// gcc 3.2.x and 3.3.x choke on vm[...].as<...>()
+// CW 8.3 has problems with the v.as<T>() below
+ T const* r = boost::any_cast<T>(&v.value());
+ if (!r)
+ boost::throw_exception(boost::bad_any_cast());
+ return *r;
+#else
+ return v.as<T>();
+#endif
+ }
+
 }
 
 ///////////////////////////////////////////////////////////////////////////
 //
 // This function compares the real result and the expected one but first
-// replaces all occurences in the expected result of
+// replaces all occurrences in the expected result of
 // $E: to the result of preprocessing the given expression
 // $F: to the passed full filepath
 // $P: to the full path
+// $B: to the full path (same as $P, but using forward slash '/' on Windows)
 // $V: to the current Boost version number
 //
 ///////////////////////////////////////////////////////////////////////////
@@ -159,9 +152,9 @@
                             return false;
                         }
                         std::string source = expected.substr(pos1+3, p-pos1-3);
- std::string result, error;
+ std::string result, error, hooks;
                         bool pp_result = preprocess_file(filename, source,
- result, error, true);
+ result, error, hooks, true);
                         if (!pp_result) {
                             std::cerr
                                 << "testwave: preprocessing error in $E directive: "
@@ -183,10 +176,13 @@
                 break;
 
             case 'P': // insert full path
+ case 'B': // same as 'P', but forward slashs on Windows
                 {
- fs::path fullpath = fs::complete(
- fs::path(filename, fs::native),
- fs::current_path());
+ fs::path fullpath (
+ fs::complete(
+ fs::path(filename, fs::native), fs::current_path())
+ );
+
                     if ('(' == expected[pos1+2]) {
                     // the $P(basename) syntax is used
                         std::size_t p = expected.find_first_of(")", pos1+1);
@@ -199,17 +195,29 @@
                         std::string base = expected.substr(pos1+3, p-pos1-3);
                         fullpath = fullpath.branch_path() /
                             fs::path(base, fs::native);
- full_result = full_result +
- expected.substr(pos, pos1-pos) +
- escape_lit(fullpath.normalize().native_file_string());
+ full_result += expected.substr(pos, pos1-pos);
+ if ('P' == expected[pos1+1]) {
+ full_result +=
+ escape_lit(fullpath.normalize().native_file_string());
+ }
+ else {
+ full_result +=
+ escape_lit(fullpath.normalize().string());
+ }
                         pos1 = expected.find_first_of ("$",
                             pos = pos1 + 4 + base.size());
                     }
                     else {
                     // the $P is used on its own
- full_result = full_result +
- expected.substr(pos, pos1-pos) +
- escape_lit(fullpath.native_file_string());
+ full_result += expected.substr(pos, pos1-pos);
+ if ('P' == expected[pos1+1]) {
+ full_result +=
+ escape_lit(fullpath.native_file_string());
+ }
+ else {
+ full_result +=
+ escape_lit(fullpath.string());
+ }
                         pos1 = expected.find_first_of ("$", pos = pos1 + 2);
                     }
                 }
@@ -273,7 +281,8 @@
 //
 // Test the given file (i.e. preprocess the file and compare the result
 // against the embedded 'R' comments, if an error occurs compare the error
-// message against the given 'E' comments).
+// message against the given 'E' comments, if no error occurred, compare the
+// generated hooks result against the given 'H' comments).
 //
 ///////////////////////////////////////////////////////////////////////////////
 bool
@@ -284,12 +293,17 @@
     if (!read_file(filename, instr))
         return false; // error was reported already
 
+ bool test_hooks = true;
+ if (global_vm.count("hooks"))
+ test_hooks = variables_map_as(global_vm["hooks"], (bool *)NULL);
+
 // extract expected output, preprocess the data and compare results
- std::string expected;
- if (extract_expected_output(filename, instr, expected)) {
+ std::string expected, expected_hooks;
+ if (extract_expected_output(filename, instr, expected, expected_hooks)) {
         bool retval = true; // assume success
- std::string result, error;
- bool pp_result = preprocess_file(filename, instr, result, error);
+ bool printed_result = false;
+ std::string result, error, hooks;
+ bool pp_result = preprocess_file(filename, instr, result, error, hooks);
         if (pp_result || !result.empty()) {
         // did we expect an error?
             std::string expected_error;
@@ -332,13 +346,42 @@
                 }
                 retval = false;
             }
- else if (debuglevel > 4) {
- std::cerr
- << filename << ": succeeded" << std::endl
- << "result: " << std::endl << result << std::endl;
+ else {
+ // preprocessing succeeded, check hook information, if appropriate
+ if (test_hooks && !expected_hooks.empty() &&
+ !got_expected_result(filename, hooks, expected_hooks))
+ {
+ if (debuglevel > 2) {
+ std::cerr << filename << ": failed" << std::endl
+ << "hooks result: " << std::endl << hooks
+ << std::endl;
+ std::cerr << "expected hooks result: " << std::endl
+ << expected_hooks << std::endl;
+ }
+ else if (debuglevel > 1) {
+ std::cerr << filename << ": failed" << std::endl;
+ }
+ retval = false;
+ }
             }
- else if (debuglevel > 3) {
- std::cerr << filename << ": succeeded" << std::endl;
+
+ // print success message, if appropriate
+ if (retval) {
+ if (debuglevel > 5) {
+ std::cerr
+ << filename << ": succeeded" << std::endl
+ << "result: " << std::endl << result << std::endl
+ << "hooks result: " << std::endl << hooks << std::endl;
+ }
+ else if (debuglevel > 4) {
+ std::cerr
+ << filename << ": succeeded" << std::endl
+ << "result: " << std::endl << result << std::endl;
+ }
+ else if (debuglevel > 3) {
+ std::cerr << filename << ": succeeded" << std::endl;
+ }
+ printed_result = true;
             }
         }
         
@@ -356,7 +399,7 @@
 
                     if (!expected_error.empty()) {
                         std::cerr
- << "result: " << std::endl << error << std::endl
+ << "error result: " << std::endl << error << std::endl
                             << "expected error: " << std::endl
                             << expected_error << std::endl;
                     }
@@ -369,14 +412,30 @@
                 }
                 retval = false;
             }
- else if (debuglevel > 4) {
- std::cerr
- << filename << ": succeeded" << std::endl
- << "result: " << std::endl << error << std::endl;
- }
- else if (debuglevel > 3) {
- // caught the expected error message
- std::cerr << filename << ": succeeded" << std::endl;
+
+ if (retval) {
+ if (debuglevel > 5) {
+ std::cerr
+ << filename << ": succeeded (caught expected error)"
+ << std::endl << "error result: " << std::endl << error
+ << std::endl;
+
+ if (!printed_result) {
+ std::cerr
+ << "hooks result: " << std::endl << hooks
+ << std::endl;
+ }
+ }
+ else if (debuglevel > 4) {
+ std::cerr
+ << filename << ": succeeded (caught expected error)"
+ << std::endl << "error result: " << std::endl << error
+ << std::endl;
+ }
+ else if (debuglevel > 3) {
+ // caught the expected error message
+ std::cerr << filename << ": succeeded" << std::endl;
+ }
             }
         }
         return retval;
@@ -552,9 +611,9 @@
                             return false;
                         }
                         std::string source = value.substr(4, p-4);
- std::string result, error;
+ std::string result, error, hooks;
                         bool pp_result = preprocess_file(filename, source,
- result, error, true);
+ result, error, hooks, true);
                         if (!pp_result) {
                             std::cerr
                                 << "testwave: preprocessing error in '" << flag
@@ -598,9 +657,9 @@
                             return false;
                         }
                         std::string source = value.substr(4, p-4);
- std::string result, error;
+ std::string result, error, hooks;
                         bool pp_result = preprocess_file(filename, source,
- result, error, true);
+ result, error, hooks, true);
                         if (!pp_result) {
                             std::cerr
                                 << "testwave: preprocessing error in '" << flag
@@ -660,9 +719,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 inline bool
 testwave_app::extract_expected_output(std::string const& filename,
- std::string const& instr, std::string& expected)
+ std::string const& instr, std::string& expected, std::string& expectedhooks)
 {
- return extract_special_information(filename, instr, 'R', expected);
+ return extract_special_information(filename, instr, 'R', expected) &&
+ extract_special_information(filename, instr, 'H', expectedhooks);
 }
 
 ///////////////////////////////////////////////////////////////////////////////
@@ -709,26 +769,6 @@
     return true;
 }
 
-namespace {
-
- template <typename T>
- inline T const&
- variables_map_as(po::variable_value const& v, T*)
- {
-#if (__GNUC__ == 3 && (__GNUC_MINOR__ == 2 || __GNUC_MINOR__ == 3)) || \
- BOOST_WORKAROUND(__MWERKS__, < 0x3200)
-// gcc 3.2.x and 3.3.x choke on vm[...].as<...>()
-// CW 8.3 has problems with the v.as<T>() below
- T const* r = boost::any_cast<T>(&v.value());
- if (!r)
- boost::throw_exception(boost::bad_any_cast());
- return *r;
-#else
- return v.as<T>();
-#endif
- }
-}
-
 template <typename Context>
 bool
 testwave_app::initialise_options(Context& ctx, po::variables_map const& vm,
@@ -873,7 +913,7 @@
                 std::cerr << "initialise_options: option: -D" << *cit
                           << std::endl;
             }
- ctx.add_macro_definition(*cit);
+ ctx.add_macro_definition(*cit, true);
         }
     }
 
@@ -889,7 +929,7 @@
                 std::cerr << "initialise_options: option: -P" << *cit
                           << std::endl;
             }
- ctx.add_macro_definition(*cit);
+ ctx.add_macro_definition(*cit, true);
         }
     }
 
@@ -941,7 +981,7 @@
     strm << "__TESTWAVE_SIZEOF_" << name << "__=" << value;
 
     std::string macro(BOOST_WAVETEST_GETSTRING(strm));
- if (!ctx.add_macro_definition(macro)) {
+ if (!ctx.add_macro_definition(macro, true)) {
         std::cerr << "testwave: failed to predefine macro: " << macro
                   << std::endl;
         return false;
@@ -970,7 +1010,7 @@
     }
     
     std::string macro(BOOST_WAVETEST_GETSTRING(strm));
- if (!ctx.add_macro_definition(macro)) {
+ if (!ctx.add_macro_definition(macro, true)) {
         std::cerr << "testwave: failed to predefine macro: " << macro
                   << std::endl;
         return false;
@@ -999,7 +1039,7 @@
     }
     
     std::string macro(BOOST_WAVETEST_GETSTRING(strm));
- if (!ctx.add_macro_definition(macro)) {
+ if (!ctx.add_macro_definition(macro, true)) {
         std::cerr << "testwave: failed to predefine macro: " << macro
                   << std::endl;
         return false;
@@ -1017,7 +1057,7 @@
 testwave_app::add_strict_lexer_definition(Context& ctx)
 {
     std::string macro("__TESTWAVE_HAS_STRICT_LEXER__=1");
- if (!ctx.add_macro_definition(macro)) {
+ if (!ctx.add_macro_definition(macro, true)) {
         std::cerr << "testwave: failed to predefine macro: " << macro
                   << std::endl;
         return false;
@@ -1106,14 +1146,18 @@
 ///////////////////////////////////////////////////////////////////////////////
 bool
 testwave_app::preprocess_file(std::string filename, std::string const& instr,
- std::string& result, std::string& error, bool single_line)
+ std::string& result, std::string& error, std::string& hooks,
+ bool single_line)
 {
 // create the wave::context object and initialize it from the file to
 // preprocess (may contain options inside of special comments)
     typedef boost::wave::cpplexer::lex_token<> token_type;
     typedef boost::wave::cpplexer::lex_iterator<token_type> lexer_type;
- typedef boost::wave::context<std::string::const_iterator, lexer_type>
- context_type;
+ typedef boost::wave::context<
+ std::string::const_iterator, lexer_type,
+ boost::wave::iteration_context_policies::load_file_to_string,
+ collect_hooks_information<token_type> >
+ context_type;
 
     if (9 == debuglevel) {
         std::cerr << "preprocess_file: preprocessing input file: " << filename
@@ -1122,7 +1166,8 @@
 
     try {
     // create preprocessing context
- context_type ctx(instr.begin(), instr.end(), filename.c_str());
+ context_type ctx(instr.begin(), instr.end(), filename.c_str(),
+ collect_hooks_information<token_type>(hooks));
 
     // initialize the context from the options given on the command line
         if (!initialise_options(ctx, global_vm, single_line))

Modified: branches/release/libs/wave/test/testwave/testwave_app.hpp
==============================================================================
--- branches/release/libs/wave/test/testwave/testwave_app.hpp (original)
+++ branches/release/libs/wave/test/testwave/testwave_app.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -59,12 +59,15 @@
     bool extract_special_information(std::string const& filename,
         std::string const& instr, char flag, std::string& content);
 
- // Extract the expected output from the given input data
+ // Extract the expected output and expected hooks information from the
+ // given input data.
     // The expected output has to be provided inside of special comments which
- // start with a capital 'R'. All such comments are concatenated and
- // returned through the parameter 'expected'.
+ // start with a capital 'R' ('H' for the hooks information). All such
+ // comments are concatenated and returned through the parameter 'expected'
+ // ('expectedhooks' for hooks information).
     bool extract_expected_output(std::string const& filename,
- std::string const& instr, std::string& expected);
+ std::string const& instr, std::string& expected,
+ std::string& expectedhooks);
         
     // Extracts the required preprocessing options from the given input data
     // and initializes the given Wave context object accordingly.
@@ -83,7 +86,8 @@
     // Preprocess the given input data and return the generated output through
     // the parameter 'result'.
     bool preprocess_file(std::string filename, std::string const& instr,
- std::string& result, std::string& error, bool single_line = false);
+ std::string& result, std::string& error, std::string& hooks,
+ bool single_line = false);
 
     // Add special predefined macros to the context object
     template <typename Context>

Modified: branches/release/tools/wave/cpp.cpp
==============================================================================
--- branches/release/tools/wave/cpp.cpp (original)
+++ branches/release/tools/wave/cpp.cpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -76,7 +76,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // Import required names
-using namespace boost::spirit;
+using namespace boost::spirit::classic;
 
 using std::string;
 using std::pair;
@@ -568,7 +568,7 @@
             
             if (ctx.get_macro_definition(*it, has_pars, predef, pos, pars, def))
             {
- macronames_out << *it;
+ macronames_out << (predef ? "-P" : "-D") << *it;
                 if (has_pars) {
                 // list the parameter names for function style macros
                     macronames_out << "(";
@@ -592,10 +592,6 @@
                     macronames_out << (*dit).get_value();
                 }
 
- // predefined macros get a 'P' appended
- if (predef)
- macronames_out << " (P)";
-
                 macronames_out << std::endl;
             }
         }
@@ -866,7 +862,7 @@
             for (vector<string>::const_iterator cit = undefmacros.begin();
                  cit != end; ++cit)
             {
- ctx.remove_macro_definition((*cit).c_str(), true);
+ ctx.remove_macro_definition(*cit, true);
             }
         }
 
@@ -981,8 +977,15 @@
                 first = ctx.begin(instring.begin(), instring.end());
             }
             
+ bool need_to_advanve = false;
+
             do {
                 try {
+ if (need_to_advanve) {
+ ++first;
+ need_to_advanve = false;
+ }
+
                     while (first != last) {
                     // store the last known good token position
                         current_position = (*first).get_position();
@@ -1010,7 +1013,7 @@
                 // some preprocessing error
                     if (is_interactive || boost::wave::is_recoverable(e)) {
                         error_count += report_error_message(ctx, e);
- ++first; // advance to the next token
+ need_to_advanve = true; // advance to the next token
                     }
                     else {
                         throw; // re-throw for non-recoverable errors
@@ -1022,7 +1025,7 @@
                         boost::wave::cpplexer::is_recoverable(e))
                     {
                         error_count += report_error_message(e);
- ++first; // advance to the next token
+ need_to_advanve = true; // advance to the next token
                     }
                     else {
                         throw; // re-throw for non-recoverable errors

Modified: branches/release/tools/wave/cpp_config.hpp
==============================================================================
--- branches/release/tools/wave/cpp_config.hpp (original)
+++ branches/release/tools/wave/cpp_config.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -20,7 +20,7 @@
 
 ///////////////////////////////////////////////////////////////////////////////
 // debug rules, subrules and grammars only, for possible flags see
-// spirit/debug.hpp
+// spirit/include/classic_debug.hpp
 #if defined(BOOST_SPIRIT_DEBUG)
 
 #define BOOST_SPIRIT_DEBUG_FLAGS ( \

Modified: branches/release/tools/wave/cpp_version.hpp
==============================================================================
--- branches/release/tools/wave/cpp_version.hpp (original)
+++ branches/release/tools/wave/cpp_version.hpp 2008-06-22 12:16:14 EDT (Sun, 22 Jun 2008)
@@ -19,7 +19,7 @@
 
 #define CPP_VERSION_FULL_STR BOOST_PP_STRINGIZE(CPP_VERSION_FULL)
                                      
-#define CPP_VERSION_DATE 20070111L
-#define CPP_VERSION_DATE_STR "20070111"
+#define CPP_VERSION_DATE 20080407L
+#define CPP_VERSION_DATE_STR "20080407"
 
 #endif // !defined(CPP_VERSION_HPP_CE4FE67F_63F9_468D_8364_C855F89D3C5D_INCLUDED)


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