summaryrefslogtreecommitdiff
path: root/boost/spirit/home/support/common_terminals.hpp
diff options
context:
space:
mode:
authorAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
committerAnas Nashif <anas.nashif@intel.com>2012-10-30 12:57:26 -0700
commit1a78a62555be32868418fe52f8e330c9d0f95d5a (patch)
treed3765a80e7d3b9640ec2e930743630cd6b9fce2b /boost/spirit/home/support/common_terminals.hpp
downloadboost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.gz
boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.tar.bz2
boost-1a78a62555be32868418fe52f8e330c9d0f95d5a.zip
Imported Upstream version 1.49.0upstream/1.49.0
Diffstat (limited to 'boost/spirit/home/support/common_terminals.hpp')
-rw-r--r--boost/spirit/home/support/common_terminals.hpp437
1 files changed, 437 insertions, 0 deletions
diff --git a/boost/spirit/home/support/common_terminals.hpp b/boost/spirit/home/support/common_terminals.hpp
new file mode 100644
index 0000000000..2c7772df66
--- /dev/null
+++ b/boost/spirit/home/support/common_terminals.hpp
@@ -0,0 +1,437 @@
+/*=============================================================================
+ Copyright (c) 2001-2011 Joel de Guzman
+ http://spirit.sourceforge.net/
+
+ 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)
+=============================================================================*/
+#ifndef BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM
+#define BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM
+
+#if defined(_MSC_VER)
+#pragma once
+#endif
+
+#include <boost/spirit/home/support/terminal.hpp>
+#include <boost/spirit/home/support/char_encoding/standard.hpp>
+#include <boost/spirit/home/support/char_encoding/standard_wide.hpp>
+#include <boost/spirit/home/support/char_encoding/ascii.hpp>
+#include <boost/spirit/home/support/char_encoding/iso8859_1.hpp>
+#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/mpl/vector.hpp>
+
+#if defined(BOOST_SPIRIT_UNICODE)
+# include <boost/spirit/home/support/char_encoding/unicode.hpp>
+#endif
+
+namespace boost { namespace spirit
+{
+ typedef mpl::vector<
+ spirit::char_encoding::ascii
+ , spirit::char_encoding::iso8859_1
+ , spirit::char_encoding::standard
+ , spirit::char_encoding::standard_wide
+#if defined(BOOST_SPIRIT_UNICODE)
+ , spirit::char_encoding::unicode
+#endif
+ >
+ char_encodings;
+
+ template <typename T>
+ struct is_char_encoding : mpl::false_ {};
+
+ template <>
+ struct is_char_encoding<spirit::char_encoding::ascii> : mpl::true_ {};
+
+ template <>
+ struct is_char_encoding<spirit::char_encoding::iso8859_1> : mpl::true_ {};
+
+ template <>
+ struct is_char_encoding<spirit::char_encoding::standard> : mpl::true_ {};
+
+ template <>
+ struct is_char_encoding<spirit::char_encoding::standard_wide> : mpl::true_ {};
+
+#if defined(BOOST_SPIRIT_UNICODE)
+ template <>
+ struct is_char_encoding<spirit::char_encoding::unicode> : mpl::true_ {};
+#endif
+
+ template <typename Encoding>
+ struct encoding
+ : proto::terminal<tag::char_code<tag::encoding, Encoding> >::type
+ {};
+
+ // Our basic terminals
+ BOOST_SPIRIT_DEFINE_TERMINALS_NAME(
+ ( verbatim, verbatim_type )
+ ( no_delimit, no_delimit_type )
+ ( lexeme, lexeme_type )
+ ( no_skip, no_skip_type )
+ ( omit, omit_type )
+ ( raw, raw_type )
+ ( as_string, as_string_type )
+ ( as_wstring, as_wstring_type )
+ ( inf, inf_type )
+ ( eol, eol_type )
+ ( eoi, eoi_type )
+ ( buffer, buffer_type )
+ ( true_, true_type )
+ ( false_, false_type )
+ ( matches, matches_type )
+ ( hold, hold_type )
+ ( strict, strict_type )
+ ( relaxed, relaxed_type )
+ ( duplicate, duplicate_type )
+ )
+
+ // Our extended terminals
+ BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX(
+ ( lit, lit_type )
+ ( bin, bin_type )
+ ( oct, oct_type )
+ ( hex, hex_type )
+ ( bool_, bool_type )
+ ( ushort_, ushort_type )
+ ( ulong_, ulong_type )
+ ( uint_, uint_type )
+ ( short_, short_type )
+ ( long_, long_type )
+ ( int_, int_type )
+ ( ulong_long, ulong_long_type )
+ ( long_long, long_long_type )
+ ( float_, float_type )
+ ( double_, double_type )
+ ( long_double, long_double_type )
+ ( repeat, repeat_type )
+ ( eps, eps_type )
+ ( pad, pad_type )
+ ( byte_, byte_type )
+ ( word, word_type )
+ ( big_word, big_word_type )
+ ( little_word, little_word_type )
+ ( dword, dword_type )
+ ( big_dword, big_dword_type )
+ ( little_dword, little_dword_type )
+ ( qword, qword_type )
+ ( big_qword, big_qword_type )
+ ( little_qword, little_qword_type )
+ ( bin_float, bin_float_type )
+ ( big_bin_float, big_bin_float_type )
+ ( little_bin_float, little_bin_float_type )
+ ( bin_double, bin_double_type )
+ ( big_bin_double, big_bin_double_type )
+ ( little_bin_double, little_bin_double_type )
+ ( skip, skip_type )
+ ( delimit, delimit_type )
+ ( stream, stream_type )
+ ( wstream, wstream_type )
+ ( left_align, left_align_type )
+ ( right_align, right_align_type )
+ ( center, center_type )
+ ( maxwidth, maxwidth_type )
+ ( set_state, set_state_type )
+ ( in_state, in_state_type )
+ ( token, token_type )
+ ( tokenid, tokenid_type )
+ ( raw_token, raw_token_type )
+ ( tokenid_mask, tokenid_mask_type )
+ ( attr, attr_type )
+ ( columns, columns_type )
+ ( auto_, auto_type )
+ )
+
+ // special tags (used mainly for stateful tag types)
+ namespace tag
+ {
+ struct attr_cast { BOOST_SPIRIT_IS_TAG() };
+ struct as { BOOST_SPIRIT_IS_TAG() };
+ }
+}}
+
+///////////////////////////////////////////////////////////////////////////////
+// Here we place the character-set sensitive placeholders. We have one set
+// each for ascii, iso8859_1, standard and standard_wide and unicode. These
+// placeholders are placed in its char-set namespace. For example, there exist
+// a placeholder spirit::ascii::alnum for ascii versions of alnum.
+
+#define BOOST_SPIRIT_TAG_CHAR_SPEC(charset) \
+ typedef tag::char_code<tag::char_, charset> char_; \
+ typedef tag::char_code<tag::string, charset> string; \
+ /***/
+
+#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_CHAR_SPEC(charset) \
+ typedef spirit::terminal<tag::charset::char_> char_type; \
+ typedef spirit::terminal<tag::charset::string> string_type; \
+ /***/
+
+#else
+
+#define BOOST_SPIRIT_CHAR_SPEC(charset) \
+ typedef spirit::terminal<tag::charset::char_> char_type; \
+ char_type const char_ = char_type(); \
+ \
+ inline void silence_unused_warnings_##char_() { (void) char_; } \
+ \
+ typedef spirit::terminal<tag::charset::string> string_type; \
+ string_type const string = string_type(); \
+ \
+ inline void silence_unused_warnings_##string() { (void) string; } \
+ /***/
+
+#endif
+
+#ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
+
+#define BOOST_SPIRIT_CHAR_CODE(name, charset) \
+ typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
+ name##_type; \
+ /***/
+
+#else
+
+#define BOOST_SPIRIT_CHAR_CODE(name, charset) \
+ typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
+ name##_type; \
+ name##_type const name = name##_type(); \
+ \
+ inline void silence_unused_warnings_##name() { (void) name; } \
+ /***/
+
+
+#endif
+
+#define BOOST_SPIRIT_DEFINE_CHAR_CODES(charset) \
+ namespace boost { namespace spirit { namespace tag { namespace charset \
+ { \
+ BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::charset) \
+ }}}} \
+ namespace boost { namespace spirit { namespace charset \
+ { \
+ BOOST_SPIRIT_CHAR_SPEC(charset) \
+ \
+ BOOST_SPIRIT_CHAR_CODE(alnum, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(alpha, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(blank, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(cntrl, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(digit, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(graph, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(print, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(punct, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(space, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(xdigit, spirit::char_encoding::charset) \
+ \
+ BOOST_SPIRIT_CHAR_CODE(no_case, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(lower, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(upper, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(lowernum, spirit::char_encoding::charset) \
+ BOOST_SPIRIT_CHAR_CODE(uppernum, spirit::char_encoding::charset) \
+ }}} \
+ /***/
+
+BOOST_SPIRIT_DEFINE_CHAR_CODES(ascii)
+BOOST_SPIRIT_DEFINE_CHAR_CODES(iso8859_1)
+BOOST_SPIRIT_DEFINE_CHAR_CODES(standard)
+BOOST_SPIRIT_DEFINE_CHAR_CODES(standard_wide)
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Char>
+ struct char_encoding_from_char;
+
+ template <>
+ struct char_encoding_from_char<char>
+ : mpl::identity<spirit::char_encoding::standard>
+ {};
+
+ template <>
+ struct char_encoding_from_char<wchar_t>
+ : mpl::identity<spirit::char_encoding::standard_wide>
+ {};
+
+ template <typename T>
+ struct char_encoding_from_char<T const>
+ : char_encoding_from_char<T>
+ {};
+}}}
+
+#if defined(BOOST_SPIRIT_UNICODE)
+BOOST_SPIRIT_DEFINE_CHAR_CODES(unicode)
+
+ namespace boost { namespace spirit { namespace tag { namespace unicode
+ {
+ BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::unicode)
+ }}}}
+
+ namespace boost { namespace spirit { namespace unicode
+ {
+#define BOOST_SPIRIT_UNICODE_CHAR_CODE(name) \
+ BOOST_SPIRIT_CHAR_CODE(name, spirit::char_encoding::unicode) \
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Unicode Major Categories
+ ///////////////////////////////////////////////////////////////////////////
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(letter)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(mark)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(number)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(separator)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(other)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(symbol)
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Unicode General Categories
+ ///////////////////////////////////////////////////////////////////////////
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase_letter)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase_letter)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(titlecase_letter)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_letter)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(other_letter)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(nonspacing_mark)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(enclosing_mark)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(spacing_mark)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(decimal_number)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(letter_number)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(other_number)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(space_separator)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(line_separator)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(paragraph_separator)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(control)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(format)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(private_use)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(surrogate)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(unassigned)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(dash_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(open_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(close_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(connector_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(other_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(initial_punctuation)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(final_punctuation)
+
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(math_symbol)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(currency_symbol)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_symbol)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(other_symbol)
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Unicode Derived Categories
+ ///////////////////////////////////////////////////////////////////////////
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(alphabetic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(white_space)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(hex_digit)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(noncharacter_code_point)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(default_ignorable_code_point)
+
+ ///////////////////////////////////////////////////////////////////////////
+ // Unicode Scripts
+ ///////////////////////////////////////////////////////////////////////////
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(arabic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(imperial_aramaic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(armenian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(avestan)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(balinese)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(bamum)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(bengali)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(bopomofo)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(braille)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(buginese)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(buhid)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(canadian_aboriginal)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(carian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(cham)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(cherokee)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(coptic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(cypriot)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(cyrillic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(devanagari)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(deseret)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(egyptian_hieroglyphs)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(ethiopic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(georgian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(glagolitic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(gothic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(greek)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(gujarati)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(gurmukhi)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(hangul)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(han)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(hanunoo)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(hebrew)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(hiragana)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana_or_hiragana)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(old_italic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(javanese)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(kayah_li)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(kharoshthi)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(khmer)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(kannada)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(kaithi)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_tham)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lao)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(latin)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lepcha)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(limbu)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(linear_b)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lisu)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lycian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(lydian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(malayalam)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(mongolian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(meetei_mayek)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(myanmar)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(nko)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(ogham)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(ol_chiki)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(old_turkic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(oriya)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(osmanya)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(phags_pa)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_pahlavi)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(phoenician)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_parthian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(rejang)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(runic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(samaritan)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(old_south_arabian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(saurashtra)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(shavian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(sinhala)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(sundanese)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(syloti_nagri)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(syriac)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tagbanwa)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_le)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(new_tai_lue)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tamil)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_viet)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(telugu)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tifinagh)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tagalog)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(thaana)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(thai)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(tibetan)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(ugaritic)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(vai)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(old_persian)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(cuneiform)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(yi)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(inherited)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(common)
+ BOOST_SPIRIT_UNICODE_CHAR_CODE(unknown)
+
+#undef BOOST_SPIRIT_UNICODE_CHAR_CODE
+ }}}
+#endif
+
+#endif