common_terminals.hpp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438
  1. /*=============================================================================
  2. Copyright (c) 2001-2011 Joel de Guzman
  3. http://spirit.sourceforge.net/
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. =============================================================================*/
  7. #ifndef BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM
  8. #define BOOST_SPIRIT_COMMON_PLACEHOLDERS_OCTOBER_16_2008_0102PM
  9. #if defined(_MSC_VER)
  10. #pragma once
  11. #endif
  12. #include <boost/spirit/home/support/terminal.hpp>
  13. #include <boost/spirit/home/support/char_encoding/standard.hpp>
  14. #include <boost/spirit/home/support/char_encoding/standard_wide.hpp>
  15. #include <boost/spirit/home/support/char_encoding/ascii.hpp>
  16. #include <boost/spirit/home/support/char_encoding/iso8859_1.hpp>
  17. #include <boost/spirit/home/support/char_class.hpp>
  18. #include <boost/mpl/vector.hpp>
  19. #if defined(BOOST_SPIRIT_UNICODE)
  20. # include <boost/spirit/home/support/char_encoding/unicode.hpp>
  21. #endif
  22. namespace boost { namespace spirit
  23. {
  24. typedef mpl::vector<
  25. spirit::char_encoding::ascii
  26. , spirit::char_encoding::iso8859_1
  27. , spirit::char_encoding::standard
  28. , spirit::char_encoding::standard_wide
  29. #if defined(BOOST_SPIRIT_UNICODE)
  30. , spirit::char_encoding::unicode
  31. #endif
  32. >
  33. char_encodings;
  34. template <typename T>
  35. struct is_char_encoding : mpl::false_ {};
  36. template <>
  37. struct is_char_encoding<spirit::char_encoding::ascii> : mpl::true_ {};
  38. template <>
  39. struct is_char_encoding<spirit::char_encoding::iso8859_1> : mpl::true_ {};
  40. template <>
  41. struct is_char_encoding<spirit::char_encoding::standard> : mpl::true_ {};
  42. template <>
  43. struct is_char_encoding<spirit::char_encoding::standard_wide> : mpl::true_ {};
  44. #if defined(BOOST_SPIRIT_UNICODE)
  45. template <>
  46. struct is_char_encoding<spirit::char_encoding::unicode> : mpl::true_ {};
  47. #endif
  48. template <typename Encoding>
  49. struct encoding
  50. : proto::terminal<tag::char_code<tag::encoding, Encoding> >::type
  51. {};
  52. // Our basic terminals
  53. BOOST_SPIRIT_DEFINE_TERMINALS_NAME(
  54. ( verbatim, verbatim_type )
  55. ( no_delimit, no_delimit_type )
  56. ( lexeme, lexeme_type )
  57. ( no_skip, no_skip_type )
  58. ( omit, omit_type )
  59. ( raw, raw_type )
  60. ( as_string, as_string_type )
  61. ( as_wstring, as_wstring_type )
  62. ( inf, inf_type )
  63. ( eol, eol_type )
  64. ( eoi, eoi_type )
  65. ( buffer, buffer_type )
  66. ( true_, true_type )
  67. ( false_, false_type )
  68. ( matches, matches_type )
  69. ( hold, hold_type )
  70. ( strict, strict_type )
  71. ( relaxed, relaxed_type )
  72. ( duplicate, duplicate_type )
  73. ( expect, expect_type )
  74. )
  75. // Our extended terminals
  76. BOOST_SPIRIT_DEFINE_TERMINALS_NAME_EX(
  77. ( lit, lit_type )
  78. ( bin, bin_type )
  79. ( oct, oct_type )
  80. ( hex, hex_type )
  81. ( bool_, bool_type )
  82. ( ushort_, ushort_type )
  83. ( ulong_, ulong_type )
  84. ( uint_, uint_type )
  85. ( short_, short_type )
  86. ( long_, long_type )
  87. ( int_, int_type )
  88. ( ulong_long, ulong_long_type )
  89. ( long_long, long_long_type )
  90. ( float_, float_type )
  91. ( double_, double_type )
  92. ( long_double, long_double_type )
  93. ( repeat, repeat_type )
  94. ( eps, eps_type )
  95. ( pad, pad_type )
  96. ( byte_, byte_type )
  97. ( word, word_type )
  98. ( big_word, big_word_type )
  99. ( little_word, little_word_type )
  100. ( dword, dword_type )
  101. ( big_dword, big_dword_type )
  102. ( little_dword, little_dword_type )
  103. ( qword, qword_type )
  104. ( big_qword, big_qword_type )
  105. ( little_qword, little_qword_type )
  106. ( bin_float, bin_float_type )
  107. ( big_bin_float, big_bin_float_type )
  108. ( little_bin_float, little_bin_float_type )
  109. ( bin_double, bin_double_type )
  110. ( big_bin_double, big_bin_double_type )
  111. ( little_bin_double, little_bin_double_type )
  112. ( skip, skip_type )
  113. ( delimit, delimit_type )
  114. ( stream, stream_type )
  115. ( wstream, wstream_type )
  116. ( left_align, left_align_type )
  117. ( right_align, right_align_type )
  118. ( center, center_type )
  119. ( maxwidth, maxwidth_type )
  120. ( set_state, set_state_type )
  121. ( in_state, in_state_type )
  122. ( token, token_type )
  123. ( tokenid, tokenid_type )
  124. ( raw_token, raw_token_type )
  125. ( tokenid_mask, tokenid_mask_type )
  126. ( attr, attr_type )
  127. ( columns, columns_type )
  128. ( auto_, auto_type )
  129. )
  130. // special tags (used mainly for stateful tag types)
  131. namespace tag
  132. {
  133. struct attr_cast { BOOST_SPIRIT_IS_TAG() };
  134. struct as { BOOST_SPIRIT_IS_TAG() };
  135. }
  136. }}
  137. ///////////////////////////////////////////////////////////////////////////////
  138. // Here we place the character-set sensitive placeholders. We have one set
  139. // each for ascii, iso8859_1, standard and standard_wide and unicode. These
  140. // placeholders are placed in its char-set namespace. For example, there exist
  141. // a placeholder spirit::ascii::alnum for ascii versions of alnum.
  142. #define BOOST_SPIRIT_TAG_CHAR_SPEC(charset) \
  143. typedef tag::char_code<tag::char_, charset> char_; \
  144. typedef tag::char_code<tag::string, charset> string; \
  145. /***/
  146. #ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
  147. #define BOOST_SPIRIT_CHAR_SPEC(charset) \
  148. typedef spirit::terminal<tag::charset::char_> char_type; \
  149. typedef spirit::terminal<tag::charset::string> string_type; \
  150. /***/
  151. #else
  152. #define BOOST_SPIRIT_CHAR_SPEC(charset) \
  153. typedef spirit::terminal<tag::charset::char_> char_type; \
  154. char_type const char_ = char_type(); \
  155. \
  156. inline void silence_unused_warnings_##char_() { (void) char_; } \
  157. \
  158. typedef spirit::terminal<tag::charset::string> string_type; \
  159. string_type const string = string_type(); \
  160. \
  161. inline void silence_unused_warnings_##string() { (void) string; } \
  162. /***/
  163. #endif
  164. #ifdef BOOST_SPIRIT_NO_PREDEFINED_TERMINALS
  165. #define BOOST_SPIRIT_CHAR_CODE(name, charset) \
  166. typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
  167. name##_type; \
  168. /***/
  169. #else
  170. #define BOOST_SPIRIT_CHAR_CODE(name, charset) \
  171. typedef proto::terminal<tag::char_code<tag::name, charset> >::type \
  172. name##_type; \
  173. name##_type const name = name##_type(); \
  174. \
  175. inline void silence_unused_warnings_##name() { (void) name; } \
  176. /***/
  177. #endif
  178. #define BOOST_SPIRIT_DEFINE_CHAR_CODES(charset) \
  179. namespace boost { namespace spirit { namespace tag { namespace charset \
  180. { \
  181. BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::charset) \
  182. }}}} \
  183. namespace boost { namespace spirit { namespace charset \
  184. { \
  185. BOOST_SPIRIT_CHAR_SPEC(charset) \
  186. \
  187. BOOST_SPIRIT_CHAR_CODE(alnum, spirit::char_encoding::charset) \
  188. BOOST_SPIRIT_CHAR_CODE(alpha, spirit::char_encoding::charset) \
  189. BOOST_SPIRIT_CHAR_CODE(blank, spirit::char_encoding::charset) \
  190. BOOST_SPIRIT_CHAR_CODE(cntrl, spirit::char_encoding::charset) \
  191. BOOST_SPIRIT_CHAR_CODE(digit, spirit::char_encoding::charset) \
  192. BOOST_SPIRIT_CHAR_CODE(graph, spirit::char_encoding::charset) \
  193. BOOST_SPIRIT_CHAR_CODE(print, spirit::char_encoding::charset) \
  194. BOOST_SPIRIT_CHAR_CODE(punct, spirit::char_encoding::charset) \
  195. BOOST_SPIRIT_CHAR_CODE(space, spirit::char_encoding::charset) \
  196. BOOST_SPIRIT_CHAR_CODE(xdigit, spirit::char_encoding::charset) \
  197. \
  198. BOOST_SPIRIT_CHAR_CODE(no_case, spirit::char_encoding::charset) \
  199. BOOST_SPIRIT_CHAR_CODE(lower, spirit::char_encoding::charset) \
  200. BOOST_SPIRIT_CHAR_CODE(upper, spirit::char_encoding::charset) \
  201. BOOST_SPIRIT_CHAR_CODE(lowernum, spirit::char_encoding::charset) \
  202. BOOST_SPIRIT_CHAR_CODE(uppernum, spirit::char_encoding::charset) \
  203. }}} \
  204. /***/
  205. BOOST_SPIRIT_DEFINE_CHAR_CODES(ascii)
  206. BOOST_SPIRIT_DEFINE_CHAR_CODES(iso8859_1)
  207. BOOST_SPIRIT_DEFINE_CHAR_CODES(standard)
  208. BOOST_SPIRIT_DEFINE_CHAR_CODES(standard_wide)
  209. namespace boost { namespace spirit { namespace traits
  210. {
  211. template <typename Char>
  212. struct char_encoding_from_char;
  213. template <>
  214. struct char_encoding_from_char<char>
  215. : mpl::identity<spirit::char_encoding::standard>
  216. {};
  217. template <>
  218. struct char_encoding_from_char<wchar_t>
  219. : mpl::identity<spirit::char_encoding::standard_wide>
  220. {};
  221. template <typename T>
  222. struct char_encoding_from_char<T const>
  223. : char_encoding_from_char<T>
  224. {};
  225. }}}
  226. #if defined(BOOST_SPIRIT_UNICODE)
  227. BOOST_SPIRIT_DEFINE_CHAR_CODES(unicode)
  228. namespace boost { namespace spirit { namespace tag { namespace unicode
  229. {
  230. BOOST_SPIRIT_TAG_CHAR_SPEC(spirit::char_encoding::unicode)
  231. }}}}
  232. namespace boost { namespace spirit { namespace unicode
  233. {
  234. #define BOOST_SPIRIT_UNICODE_CHAR_CODE(name) \
  235. BOOST_SPIRIT_CHAR_CODE(name, spirit::char_encoding::unicode) \
  236. ///////////////////////////////////////////////////////////////////////////
  237. // Unicode Major Categories
  238. ///////////////////////////////////////////////////////////////////////////
  239. BOOST_SPIRIT_UNICODE_CHAR_CODE(letter)
  240. BOOST_SPIRIT_UNICODE_CHAR_CODE(mark)
  241. BOOST_SPIRIT_UNICODE_CHAR_CODE(number)
  242. BOOST_SPIRIT_UNICODE_CHAR_CODE(separator)
  243. BOOST_SPIRIT_UNICODE_CHAR_CODE(other)
  244. BOOST_SPIRIT_UNICODE_CHAR_CODE(punctuation)
  245. BOOST_SPIRIT_UNICODE_CHAR_CODE(symbol)
  246. ///////////////////////////////////////////////////////////////////////////
  247. // Unicode General Categories
  248. ///////////////////////////////////////////////////////////////////////////
  249. BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase_letter)
  250. BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase_letter)
  251. BOOST_SPIRIT_UNICODE_CHAR_CODE(titlecase_letter)
  252. BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_letter)
  253. BOOST_SPIRIT_UNICODE_CHAR_CODE(other_letter)
  254. BOOST_SPIRIT_UNICODE_CHAR_CODE(nonspacing_mark)
  255. BOOST_SPIRIT_UNICODE_CHAR_CODE(enclosing_mark)
  256. BOOST_SPIRIT_UNICODE_CHAR_CODE(spacing_mark)
  257. BOOST_SPIRIT_UNICODE_CHAR_CODE(decimal_number)
  258. BOOST_SPIRIT_UNICODE_CHAR_CODE(letter_number)
  259. BOOST_SPIRIT_UNICODE_CHAR_CODE(other_number)
  260. BOOST_SPIRIT_UNICODE_CHAR_CODE(space_separator)
  261. BOOST_SPIRIT_UNICODE_CHAR_CODE(line_separator)
  262. BOOST_SPIRIT_UNICODE_CHAR_CODE(paragraph_separator)
  263. BOOST_SPIRIT_UNICODE_CHAR_CODE(control)
  264. BOOST_SPIRIT_UNICODE_CHAR_CODE(format)
  265. BOOST_SPIRIT_UNICODE_CHAR_CODE(private_use)
  266. BOOST_SPIRIT_UNICODE_CHAR_CODE(surrogate)
  267. BOOST_SPIRIT_UNICODE_CHAR_CODE(unassigned)
  268. BOOST_SPIRIT_UNICODE_CHAR_CODE(dash_punctuation)
  269. BOOST_SPIRIT_UNICODE_CHAR_CODE(open_punctuation)
  270. BOOST_SPIRIT_UNICODE_CHAR_CODE(close_punctuation)
  271. BOOST_SPIRIT_UNICODE_CHAR_CODE(connector_punctuation)
  272. BOOST_SPIRIT_UNICODE_CHAR_CODE(other_punctuation)
  273. BOOST_SPIRIT_UNICODE_CHAR_CODE(initial_punctuation)
  274. BOOST_SPIRIT_UNICODE_CHAR_CODE(final_punctuation)
  275. BOOST_SPIRIT_UNICODE_CHAR_CODE(math_symbol)
  276. BOOST_SPIRIT_UNICODE_CHAR_CODE(currency_symbol)
  277. BOOST_SPIRIT_UNICODE_CHAR_CODE(modifier_symbol)
  278. BOOST_SPIRIT_UNICODE_CHAR_CODE(other_symbol)
  279. ///////////////////////////////////////////////////////////////////////////
  280. // Unicode Derived Categories
  281. ///////////////////////////////////////////////////////////////////////////
  282. BOOST_SPIRIT_UNICODE_CHAR_CODE(alphabetic)
  283. BOOST_SPIRIT_UNICODE_CHAR_CODE(uppercase)
  284. BOOST_SPIRIT_UNICODE_CHAR_CODE(lowercase)
  285. BOOST_SPIRIT_UNICODE_CHAR_CODE(white_space)
  286. BOOST_SPIRIT_UNICODE_CHAR_CODE(hex_digit)
  287. BOOST_SPIRIT_UNICODE_CHAR_CODE(noncharacter_code_point)
  288. BOOST_SPIRIT_UNICODE_CHAR_CODE(default_ignorable_code_point)
  289. ///////////////////////////////////////////////////////////////////////////
  290. // Unicode Scripts
  291. ///////////////////////////////////////////////////////////////////////////
  292. BOOST_SPIRIT_UNICODE_CHAR_CODE(arabic)
  293. BOOST_SPIRIT_UNICODE_CHAR_CODE(imperial_aramaic)
  294. BOOST_SPIRIT_UNICODE_CHAR_CODE(armenian)
  295. BOOST_SPIRIT_UNICODE_CHAR_CODE(avestan)
  296. BOOST_SPIRIT_UNICODE_CHAR_CODE(balinese)
  297. BOOST_SPIRIT_UNICODE_CHAR_CODE(bamum)
  298. BOOST_SPIRIT_UNICODE_CHAR_CODE(bengali)
  299. BOOST_SPIRIT_UNICODE_CHAR_CODE(bopomofo)
  300. BOOST_SPIRIT_UNICODE_CHAR_CODE(braille)
  301. BOOST_SPIRIT_UNICODE_CHAR_CODE(buginese)
  302. BOOST_SPIRIT_UNICODE_CHAR_CODE(buhid)
  303. BOOST_SPIRIT_UNICODE_CHAR_CODE(canadian_aboriginal)
  304. BOOST_SPIRIT_UNICODE_CHAR_CODE(carian)
  305. BOOST_SPIRIT_UNICODE_CHAR_CODE(cham)
  306. BOOST_SPIRIT_UNICODE_CHAR_CODE(cherokee)
  307. BOOST_SPIRIT_UNICODE_CHAR_CODE(coptic)
  308. BOOST_SPIRIT_UNICODE_CHAR_CODE(cypriot)
  309. BOOST_SPIRIT_UNICODE_CHAR_CODE(cyrillic)
  310. BOOST_SPIRIT_UNICODE_CHAR_CODE(devanagari)
  311. BOOST_SPIRIT_UNICODE_CHAR_CODE(deseret)
  312. BOOST_SPIRIT_UNICODE_CHAR_CODE(egyptian_hieroglyphs)
  313. BOOST_SPIRIT_UNICODE_CHAR_CODE(ethiopic)
  314. BOOST_SPIRIT_UNICODE_CHAR_CODE(georgian)
  315. BOOST_SPIRIT_UNICODE_CHAR_CODE(glagolitic)
  316. BOOST_SPIRIT_UNICODE_CHAR_CODE(gothic)
  317. BOOST_SPIRIT_UNICODE_CHAR_CODE(greek)
  318. BOOST_SPIRIT_UNICODE_CHAR_CODE(gujarati)
  319. BOOST_SPIRIT_UNICODE_CHAR_CODE(gurmukhi)
  320. BOOST_SPIRIT_UNICODE_CHAR_CODE(hangul)
  321. BOOST_SPIRIT_UNICODE_CHAR_CODE(han)
  322. BOOST_SPIRIT_UNICODE_CHAR_CODE(hanunoo)
  323. BOOST_SPIRIT_UNICODE_CHAR_CODE(hebrew)
  324. BOOST_SPIRIT_UNICODE_CHAR_CODE(hiragana)
  325. BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana_or_hiragana)
  326. BOOST_SPIRIT_UNICODE_CHAR_CODE(old_italic)
  327. BOOST_SPIRIT_UNICODE_CHAR_CODE(javanese)
  328. BOOST_SPIRIT_UNICODE_CHAR_CODE(kayah_li)
  329. BOOST_SPIRIT_UNICODE_CHAR_CODE(katakana)
  330. BOOST_SPIRIT_UNICODE_CHAR_CODE(kharoshthi)
  331. BOOST_SPIRIT_UNICODE_CHAR_CODE(khmer)
  332. BOOST_SPIRIT_UNICODE_CHAR_CODE(kannada)
  333. BOOST_SPIRIT_UNICODE_CHAR_CODE(kaithi)
  334. BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_tham)
  335. BOOST_SPIRIT_UNICODE_CHAR_CODE(lao)
  336. BOOST_SPIRIT_UNICODE_CHAR_CODE(latin)
  337. BOOST_SPIRIT_UNICODE_CHAR_CODE(lepcha)
  338. BOOST_SPIRIT_UNICODE_CHAR_CODE(limbu)
  339. BOOST_SPIRIT_UNICODE_CHAR_CODE(linear_b)
  340. BOOST_SPIRIT_UNICODE_CHAR_CODE(lisu)
  341. BOOST_SPIRIT_UNICODE_CHAR_CODE(lycian)
  342. BOOST_SPIRIT_UNICODE_CHAR_CODE(lydian)
  343. BOOST_SPIRIT_UNICODE_CHAR_CODE(malayalam)
  344. BOOST_SPIRIT_UNICODE_CHAR_CODE(mongolian)
  345. BOOST_SPIRIT_UNICODE_CHAR_CODE(meetei_mayek)
  346. BOOST_SPIRIT_UNICODE_CHAR_CODE(myanmar)
  347. BOOST_SPIRIT_UNICODE_CHAR_CODE(nko)
  348. BOOST_SPIRIT_UNICODE_CHAR_CODE(ogham)
  349. BOOST_SPIRIT_UNICODE_CHAR_CODE(ol_chiki)
  350. BOOST_SPIRIT_UNICODE_CHAR_CODE(old_turkic)
  351. BOOST_SPIRIT_UNICODE_CHAR_CODE(oriya)
  352. BOOST_SPIRIT_UNICODE_CHAR_CODE(osmanya)
  353. BOOST_SPIRIT_UNICODE_CHAR_CODE(phags_pa)
  354. BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_pahlavi)
  355. BOOST_SPIRIT_UNICODE_CHAR_CODE(phoenician)
  356. BOOST_SPIRIT_UNICODE_CHAR_CODE(inscriptional_parthian)
  357. BOOST_SPIRIT_UNICODE_CHAR_CODE(rejang)
  358. BOOST_SPIRIT_UNICODE_CHAR_CODE(runic)
  359. BOOST_SPIRIT_UNICODE_CHAR_CODE(samaritan)
  360. BOOST_SPIRIT_UNICODE_CHAR_CODE(old_south_arabian)
  361. BOOST_SPIRIT_UNICODE_CHAR_CODE(saurashtra)
  362. BOOST_SPIRIT_UNICODE_CHAR_CODE(shavian)
  363. BOOST_SPIRIT_UNICODE_CHAR_CODE(sinhala)
  364. BOOST_SPIRIT_UNICODE_CHAR_CODE(sundanese)
  365. BOOST_SPIRIT_UNICODE_CHAR_CODE(syloti_nagri)
  366. BOOST_SPIRIT_UNICODE_CHAR_CODE(syriac)
  367. BOOST_SPIRIT_UNICODE_CHAR_CODE(tagbanwa)
  368. BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_le)
  369. BOOST_SPIRIT_UNICODE_CHAR_CODE(new_tai_lue)
  370. BOOST_SPIRIT_UNICODE_CHAR_CODE(tamil)
  371. BOOST_SPIRIT_UNICODE_CHAR_CODE(tai_viet)
  372. BOOST_SPIRIT_UNICODE_CHAR_CODE(telugu)
  373. BOOST_SPIRIT_UNICODE_CHAR_CODE(tifinagh)
  374. BOOST_SPIRIT_UNICODE_CHAR_CODE(tagalog)
  375. BOOST_SPIRIT_UNICODE_CHAR_CODE(thaana)
  376. BOOST_SPIRIT_UNICODE_CHAR_CODE(thai)
  377. BOOST_SPIRIT_UNICODE_CHAR_CODE(tibetan)
  378. BOOST_SPIRIT_UNICODE_CHAR_CODE(ugaritic)
  379. BOOST_SPIRIT_UNICODE_CHAR_CODE(vai)
  380. BOOST_SPIRIT_UNICODE_CHAR_CODE(old_persian)
  381. BOOST_SPIRIT_UNICODE_CHAR_CODE(cuneiform)
  382. BOOST_SPIRIT_UNICODE_CHAR_CODE(yi)
  383. BOOST_SPIRIT_UNICODE_CHAR_CODE(inherited)
  384. BOOST_SPIRIT_UNICODE_CHAR_CODE(common)
  385. BOOST_SPIRIT_UNICODE_CHAR_CODE(unknown)
  386. #undef BOOST_SPIRIT_UNICODE_CHAR_CODE
  387. }}}
  388. #endif
  389. #endif