diff options
Diffstat (limited to '3rdParty/Boost/src/boost/spirit/home/support/common_terminals.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/spirit/home/support/common_terminals.hpp | 437 |
1 files changed, 437 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/spirit/home/support/common_terminals.hpp b/3rdParty/Boost/src/boost/spirit/home/support/common_terminals.hpp new file mode 100644 index 0000000..2c7772d --- /dev/null +++ b/3rdParty/Boost/src/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 |