unicode.hpp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612
  1. /*=============================================================================
  2. Copyright (c) 2001-2014 Joel de Guzman
  3. Distributed under the Boost Software License, Version 1.0. (See accompanying
  4. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. ==============================================================================*/
  6. #if !defined(BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM)
  7. #define BOOST_SPIRIT_X3_UNICODE_JAN_20_2012_1218AM
  8. #include <boost/spirit/home/x3/char/char_parser.hpp>
  9. #include <boost/spirit/home/x3/char/char.hpp>
  10. #include <boost/spirit/home/x3/char/detail/cast_char.hpp>
  11. #include <boost/spirit/home/support/char_encoding/unicode.hpp>
  12. namespace boost { namespace spirit { namespace x3
  13. {
  14. ///////////////////////////////////////////////////////////////////////////
  15. // Unicode Major Categories
  16. ///////////////////////////////////////////////////////////////////////////
  17. struct char_tag;
  18. struct alnum_tag;
  19. struct alpha_tag;
  20. struct blank_tag;
  21. struct cntrl_tag;
  22. struct digit_tag;
  23. struct graph_tag;
  24. struct print_tag;
  25. struct punct_tag;
  26. struct space_tag;
  27. struct xdigit_tag;
  28. struct lower_tag;
  29. struct upper_tag;
  30. ///////////////////////////////////////////////////////////////////////////
  31. // Unicode Major Categories
  32. ///////////////////////////////////////////////////////////////////////////
  33. struct letter_tag {};
  34. struct mark_tag {};
  35. struct number_tag {};
  36. struct separator_tag {};
  37. struct other_tag {};
  38. struct punctuation_tag {};
  39. struct symbol_tag {};
  40. ///////////////////////////////////////////////////////////////////////////
  41. // Unicode General Categories
  42. ///////////////////////////////////////////////////////////////////////////
  43. struct uppercase_letter_tag {};
  44. struct lowercase_letter_tag {};
  45. struct titlecase_letter_tag {};
  46. struct modifier_letter_tag {};
  47. struct other_letter_tag {};
  48. struct nonspacing_mark_tag {};
  49. struct enclosing_mark_tag {};
  50. struct spacing_mark_tag {};
  51. struct decimal_number_tag {};
  52. struct letter_number_tag {};
  53. struct other_number_tag {};
  54. struct space_separator_tag {};
  55. struct line_separator_tag {};
  56. struct paragraph_separator_tag {};
  57. struct control_tag {};
  58. struct format_tag {};
  59. struct private_use_tag {};
  60. struct surrogate_tag {};
  61. struct unassigned_tag {};
  62. struct dash_punctuation_tag {};
  63. struct open_punctuation_tag {};
  64. struct close_punctuation_tag {};
  65. struct connector_punctuation_tag {};
  66. struct other_punctuation_tag {};
  67. struct initial_punctuation_tag {};
  68. struct final_punctuation_tag {};
  69. struct math_symbol_tag {};
  70. struct currency_symbol_tag {};
  71. struct modifier_symbol_tag {};
  72. struct other_symbol_tag {};
  73. ///////////////////////////////////////////////////////////////////////////
  74. // Unicode Derived Categories
  75. ///////////////////////////////////////////////////////////////////////////
  76. struct alphabetic_tag {};
  77. struct uppercase_tag {};
  78. struct lowercase_tag {};
  79. struct white_space_tag {};
  80. struct hex_digit_tag {};
  81. struct noncharacter_code_point_tag {};
  82. struct default_ignorable_code_point_tag {};
  83. ///////////////////////////////////////////////////////////////////////////
  84. // Unicode Scripts
  85. ///////////////////////////////////////////////////////////////////////////
  86. struct arabic_tag {};
  87. struct imperial_aramaic_tag {};
  88. struct armenian_tag {};
  89. struct avestan_tag {};
  90. struct balinese_tag {};
  91. struct bamum_tag {};
  92. struct bengali_tag {};
  93. struct bopomofo_tag {};
  94. struct braille_tag {};
  95. struct buginese_tag {};
  96. struct buhid_tag {};
  97. struct canadian_aboriginal_tag {};
  98. struct carian_tag {};
  99. struct cham_tag {};
  100. struct cherokee_tag {};
  101. struct coptic_tag {};
  102. struct cypriot_tag {};
  103. struct cyrillic_tag {};
  104. struct devanagari_tag {};
  105. struct deseret_tag {};
  106. struct egyptian_hieroglyphs_tag {};
  107. struct ethiopic_tag {};
  108. struct georgian_tag {};
  109. struct glagolitic_tag {};
  110. struct gothic_tag {};
  111. struct greek_tag {};
  112. struct gujarati_tag {};
  113. struct gurmukhi_tag {};
  114. struct hangul_tag {};
  115. struct han_tag {};
  116. struct hanunoo_tag {};
  117. struct hebrew_tag {};
  118. struct hiragana_tag {};
  119. struct katakana_or_hiragana_tag {};
  120. struct old_italic_tag {};
  121. struct javanese_tag {};
  122. struct kayah_li_tag {};
  123. struct katakana_tag {};
  124. struct kharoshthi_tag {};
  125. struct khmer_tag {};
  126. struct kannada_tag {};
  127. struct kaithi_tag {};
  128. struct tai_tham_tag {};
  129. struct lao_tag {};
  130. struct latin_tag {};
  131. struct lepcha_tag {};
  132. struct limbu_tag {};
  133. struct linear_b_tag {};
  134. struct lisu_tag {};
  135. struct lycian_tag {};
  136. struct lydian_tag {};
  137. struct malayalam_tag {};
  138. struct mongolian_tag {};
  139. struct meetei_mayek_tag {};
  140. struct myanmar_tag {};
  141. struct nko_tag {};
  142. struct ogham_tag {};
  143. struct ol_chiki_tag {};
  144. struct old_turkic_tag {};
  145. struct oriya_tag {};
  146. struct osmanya_tag {};
  147. struct phags_pa_tag {};
  148. struct inscriptional_pahlavi_tag {};
  149. struct phoenician_tag {};
  150. struct inscriptional_parthian_tag {};
  151. struct rejang_tag {};
  152. struct runic_tag {};
  153. struct samaritan_tag {};
  154. struct old_south_arabian_tag {};
  155. struct saurashtra_tag {};
  156. struct shavian_tag {};
  157. struct sinhala_tag {};
  158. struct sundanese_tag {};
  159. struct syloti_nagri_tag {};
  160. struct syriac_tag {};
  161. struct tagbanwa_tag {};
  162. struct tai_le_tag {};
  163. struct new_tai_lue_tag {};
  164. struct tamil_tag {};
  165. struct tai_viet_tag {};
  166. struct telugu_tag {};
  167. struct tifinagh_tag {};
  168. struct tagalog_tag {};
  169. struct thaana_tag {};
  170. struct thai_tag {};
  171. struct tibetan_tag {};
  172. struct ugaritic_tag {};
  173. struct vai_tag {};
  174. struct old_persian_tag {};
  175. struct cuneiform_tag {};
  176. struct yi_tag {};
  177. struct inherited_tag {};
  178. struct common_tag {};
  179. struct unknown_tag {};
  180. ///////////////////////////////////////////////////////////////////////////
  181. struct unicode_char_class_base
  182. {
  183. typedef char_encoding::unicode encoding;
  184. typedef char_encoding::unicode::char_type char_type;
  185. #define BOOST_SPIRIT_X3_BASIC_CLASSIFY(name) \
  186. template <typename Char> \
  187. static bool \
  188. is(name##_tag, Char ch) \
  189. { \
  190. return encoding::is ##name \
  191. BOOST_PREVENT_MACRO_SUBSTITUTION \
  192. (detail::cast_char<char_type>(ch)); \
  193. } \
  194. /***/
  195. #define BOOST_SPIRIT_X3_CLASSIFY(name) \
  196. template <typename Char> \
  197. static bool \
  198. is(name##_tag, Char ch) \
  199. { \
  200. return encoding::is_##name \
  201. BOOST_PREVENT_MACRO_SUBSTITUTION \
  202. (detail::cast_char<char_type>(ch)); \
  203. } \
  204. /***/
  205. ///////////////////////////////////////////////////////////////////////////
  206. // Unicode Major Categories
  207. ///////////////////////////////////////////////////////////////////////////
  208. BOOST_SPIRIT_X3_BASIC_CLASSIFY(char)
  209. BOOST_SPIRIT_X3_BASIC_CLASSIFY(alnum)
  210. BOOST_SPIRIT_X3_BASIC_CLASSIFY(alpha)
  211. BOOST_SPIRIT_X3_BASIC_CLASSIFY(digit)
  212. BOOST_SPIRIT_X3_BASIC_CLASSIFY(xdigit)
  213. BOOST_SPIRIT_X3_BASIC_CLASSIFY(cntrl)
  214. BOOST_SPIRIT_X3_BASIC_CLASSIFY(graph)
  215. BOOST_SPIRIT_X3_BASIC_CLASSIFY(lower)
  216. BOOST_SPIRIT_X3_BASIC_CLASSIFY(print)
  217. BOOST_SPIRIT_X3_BASIC_CLASSIFY(punct)
  218. BOOST_SPIRIT_X3_BASIC_CLASSIFY(space)
  219. BOOST_SPIRIT_X3_BASIC_CLASSIFY(blank)
  220. BOOST_SPIRIT_X3_BASIC_CLASSIFY(upper)
  221. ///////////////////////////////////////////////////////////////////////////
  222. // Unicode Major Categories
  223. ///////////////////////////////////////////////////////////////////////////
  224. BOOST_SPIRIT_X3_CLASSIFY(letter)
  225. BOOST_SPIRIT_X3_CLASSIFY(mark)
  226. BOOST_SPIRIT_X3_CLASSIFY(number)
  227. BOOST_SPIRIT_X3_CLASSIFY(separator)
  228. BOOST_SPIRIT_X3_CLASSIFY(other)
  229. BOOST_SPIRIT_X3_CLASSIFY(punctuation)
  230. BOOST_SPIRIT_X3_CLASSIFY(symbol)
  231. ///////////////////////////////////////////////////////////////////////////
  232. // Unicode General Categories
  233. ///////////////////////////////////////////////////////////////////////////
  234. BOOST_SPIRIT_X3_CLASSIFY(uppercase_letter)
  235. BOOST_SPIRIT_X3_CLASSIFY(lowercase_letter)
  236. BOOST_SPIRIT_X3_CLASSIFY(titlecase_letter)
  237. BOOST_SPIRIT_X3_CLASSIFY(modifier_letter)
  238. BOOST_SPIRIT_X3_CLASSIFY(other_letter)
  239. BOOST_SPIRIT_X3_CLASSIFY(nonspacing_mark)
  240. BOOST_SPIRIT_X3_CLASSIFY(enclosing_mark)
  241. BOOST_SPIRIT_X3_CLASSIFY(spacing_mark)
  242. BOOST_SPIRIT_X3_CLASSIFY(decimal_number)
  243. BOOST_SPIRIT_X3_CLASSIFY(letter_number)
  244. BOOST_SPIRIT_X3_CLASSIFY(other_number)
  245. BOOST_SPIRIT_X3_CLASSIFY(space_separator)
  246. BOOST_SPIRIT_X3_CLASSIFY(line_separator)
  247. BOOST_SPIRIT_X3_CLASSIFY(paragraph_separator)
  248. BOOST_SPIRIT_X3_CLASSIFY(control)
  249. BOOST_SPIRIT_X3_CLASSIFY(format)
  250. BOOST_SPIRIT_X3_CLASSIFY(private_use)
  251. BOOST_SPIRIT_X3_CLASSIFY(surrogate)
  252. BOOST_SPIRIT_X3_CLASSIFY(unassigned)
  253. BOOST_SPIRIT_X3_CLASSIFY(dash_punctuation)
  254. BOOST_SPIRIT_X3_CLASSIFY(open_punctuation)
  255. BOOST_SPIRIT_X3_CLASSIFY(close_punctuation)
  256. BOOST_SPIRIT_X3_CLASSIFY(connector_punctuation)
  257. BOOST_SPIRIT_X3_CLASSIFY(other_punctuation)
  258. BOOST_SPIRIT_X3_CLASSIFY(initial_punctuation)
  259. BOOST_SPIRIT_X3_CLASSIFY(final_punctuation)
  260. BOOST_SPIRIT_X3_CLASSIFY(math_symbol)
  261. BOOST_SPIRIT_X3_CLASSIFY(currency_symbol)
  262. BOOST_SPIRIT_X3_CLASSIFY(modifier_symbol)
  263. BOOST_SPIRIT_X3_CLASSIFY(other_symbol)
  264. ///////////////////////////////////////////////////////////////////////////
  265. // Unicode Derived Categories
  266. ///////////////////////////////////////////////////////////////////////////
  267. BOOST_SPIRIT_X3_CLASSIFY(alphabetic)
  268. BOOST_SPIRIT_X3_CLASSIFY(uppercase)
  269. BOOST_SPIRIT_X3_CLASSIFY(lowercase)
  270. BOOST_SPIRIT_X3_CLASSIFY(white_space)
  271. BOOST_SPIRIT_X3_CLASSIFY(hex_digit)
  272. BOOST_SPIRIT_X3_CLASSIFY(noncharacter_code_point)
  273. BOOST_SPIRIT_X3_CLASSIFY(default_ignorable_code_point)
  274. ///////////////////////////////////////////////////////////////////////////
  275. // Unicode Scripts
  276. ///////////////////////////////////////////////////////////////////////////
  277. BOOST_SPIRIT_X3_CLASSIFY(arabic)
  278. BOOST_SPIRIT_X3_CLASSIFY(imperial_aramaic)
  279. BOOST_SPIRIT_X3_CLASSIFY(armenian)
  280. BOOST_SPIRIT_X3_CLASSIFY(avestan)
  281. BOOST_SPIRIT_X3_CLASSIFY(balinese)
  282. BOOST_SPIRIT_X3_CLASSIFY(bamum)
  283. BOOST_SPIRIT_X3_CLASSIFY(bengali)
  284. BOOST_SPIRIT_X3_CLASSIFY(bopomofo)
  285. BOOST_SPIRIT_X3_CLASSIFY(braille)
  286. BOOST_SPIRIT_X3_CLASSIFY(buginese)
  287. BOOST_SPIRIT_X3_CLASSIFY(buhid)
  288. BOOST_SPIRIT_X3_CLASSIFY(canadian_aboriginal)
  289. BOOST_SPIRIT_X3_CLASSIFY(carian)
  290. BOOST_SPIRIT_X3_CLASSIFY(cham)
  291. BOOST_SPIRIT_X3_CLASSIFY(cherokee)
  292. BOOST_SPIRIT_X3_CLASSIFY(coptic)
  293. BOOST_SPIRIT_X3_CLASSIFY(cypriot)
  294. BOOST_SPIRIT_X3_CLASSIFY(cyrillic)
  295. BOOST_SPIRIT_X3_CLASSIFY(devanagari)
  296. BOOST_SPIRIT_X3_CLASSIFY(deseret)
  297. BOOST_SPIRIT_X3_CLASSIFY(egyptian_hieroglyphs)
  298. BOOST_SPIRIT_X3_CLASSIFY(ethiopic)
  299. BOOST_SPIRIT_X3_CLASSIFY(georgian)
  300. BOOST_SPIRIT_X3_CLASSIFY(glagolitic)
  301. BOOST_SPIRIT_X3_CLASSIFY(gothic)
  302. BOOST_SPIRIT_X3_CLASSIFY(greek)
  303. BOOST_SPIRIT_X3_CLASSIFY(gujarati)
  304. BOOST_SPIRIT_X3_CLASSIFY(gurmukhi)
  305. BOOST_SPIRIT_X3_CLASSIFY(hangul)
  306. BOOST_SPIRIT_X3_CLASSIFY(han)
  307. BOOST_SPIRIT_X3_CLASSIFY(hanunoo)
  308. BOOST_SPIRIT_X3_CLASSIFY(hebrew)
  309. BOOST_SPIRIT_X3_CLASSIFY(hiragana)
  310. BOOST_SPIRIT_X3_CLASSIFY(katakana_or_hiragana)
  311. BOOST_SPIRIT_X3_CLASSIFY(old_italic)
  312. BOOST_SPIRIT_X3_CLASSIFY(javanese)
  313. BOOST_SPIRIT_X3_CLASSIFY(kayah_li)
  314. BOOST_SPIRIT_X3_CLASSIFY(katakana)
  315. BOOST_SPIRIT_X3_CLASSIFY(kharoshthi)
  316. BOOST_SPIRIT_X3_CLASSIFY(khmer)
  317. BOOST_SPIRIT_X3_CLASSIFY(kannada)
  318. BOOST_SPIRIT_X3_CLASSIFY(kaithi)
  319. BOOST_SPIRIT_X3_CLASSIFY(tai_tham)
  320. BOOST_SPIRIT_X3_CLASSIFY(lao)
  321. BOOST_SPIRIT_X3_CLASSIFY(latin)
  322. BOOST_SPIRIT_X3_CLASSIFY(lepcha)
  323. BOOST_SPIRIT_X3_CLASSIFY(limbu)
  324. BOOST_SPIRIT_X3_CLASSIFY(linear_b)
  325. BOOST_SPIRIT_X3_CLASSIFY(lisu)
  326. BOOST_SPIRIT_X3_CLASSIFY(lycian)
  327. BOOST_SPIRIT_X3_CLASSIFY(lydian)
  328. BOOST_SPIRIT_X3_CLASSIFY(malayalam)
  329. BOOST_SPIRIT_X3_CLASSIFY(mongolian)
  330. BOOST_SPIRIT_X3_CLASSIFY(meetei_mayek)
  331. BOOST_SPIRIT_X3_CLASSIFY(myanmar)
  332. BOOST_SPIRIT_X3_CLASSIFY(nko)
  333. BOOST_SPIRIT_X3_CLASSIFY(ogham)
  334. BOOST_SPIRIT_X3_CLASSIFY(ol_chiki)
  335. BOOST_SPIRIT_X3_CLASSIFY(old_turkic)
  336. BOOST_SPIRIT_X3_CLASSIFY(oriya)
  337. BOOST_SPIRIT_X3_CLASSIFY(osmanya)
  338. BOOST_SPIRIT_X3_CLASSIFY(phags_pa)
  339. BOOST_SPIRIT_X3_CLASSIFY(inscriptional_pahlavi)
  340. BOOST_SPIRIT_X3_CLASSIFY(phoenician)
  341. BOOST_SPIRIT_X3_CLASSIFY(inscriptional_parthian)
  342. BOOST_SPIRIT_X3_CLASSIFY(rejang)
  343. BOOST_SPIRIT_X3_CLASSIFY(runic)
  344. BOOST_SPIRIT_X3_CLASSIFY(samaritan)
  345. BOOST_SPIRIT_X3_CLASSIFY(old_south_arabian)
  346. BOOST_SPIRIT_X3_CLASSIFY(saurashtra)
  347. BOOST_SPIRIT_X3_CLASSIFY(shavian)
  348. BOOST_SPIRIT_X3_CLASSIFY(sinhala)
  349. BOOST_SPIRIT_X3_CLASSIFY(sundanese)
  350. BOOST_SPIRIT_X3_CLASSIFY(syloti_nagri)
  351. BOOST_SPIRIT_X3_CLASSIFY(syriac)
  352. BOOST_SPIRIT_X3_CLASSIFY(tagbanwa)
  353. BOOST_SPIRIT_X3_CLASSIFY(tai_le)
  354. BOOST_SPIRIT_X3_CLASSIFY(new_tai_lue)
  355. BOOST_SPIRIT_X3_CLASSIFY(tamil)
  356. BOOST_SPIRIT_X3_CLASSIFY(tai_viet)
  357. BOOST_SPIRIT_X3_CLASSIFY(telugu)
  358. BOOST_SPIRIT_X3_CLASSIFY(tifinagh)
  359. BOOST_SPIRIT_X3_CLASSIFY(tagalog)
  360. BOOST_SPIRIT_X3_CLASSIFY(thaana)
  361. BOOST_SPIRIT_X3_CLASSIFY(thai)
  362. BOOST_SPIRIT_X3_CLASSIFY(tibetan)
  363. BOOST_SPIRIT_X3_CLASSIFY(ugaritic)
  364. BOOST_SPIRIT_X3_CLASSIFY(vai)
  365. BOOST_SPIRIT_X3_CLASSIFY(old_persian)
  366. BOOST_SPIRIT_X3_CLASSIFY(cuneiform)
  367. BOOST_SPIRIT_X3_CLASSIFY(yi)
  368. BOOST_SPIRIT_X3_CLASSIFY(inherited)
  369. BOOST_SPIRIT_X3_CLASSIFY(common)
  370. BOOST_SPIRIT_X3_CLASSIFY(unknown)
  371. #undef BOOST_SPIRIT_X3_BASIC_CLASSIFY
  372. #undef BOOST_SPIRIT_X3_CLASSIFY
  373. };
  374. template <typename Tag>
  375. struct unicode_char_class
  376. : char_parser<unicode_char_class<Tag>>
  377. {
  378. typedef char_encoding::unicode encoding;
  379. typedef Tag tag;
  380. typedef typename encoding::char_type char_type;
  381. typedef char_type attribute_type;
  382. static bool const has_attribute = true;
  383. template <typename Char, typename Context>
  384. bool test(Char ch, Context const&) const
  385. {
  386. return encoding::ischar(ch) && unicode_char_class_base::is(tag(), ch);
  387. }
  388. };
  389. #define BOOST_SPIRIT_X3_CHAR_CLASS(name) \
  390. typedef unicode_char_class<name##_tag> name##_type; \
  391. constexpr name##_type name = name##_type(); \
  392. /***/
  393. namespace unicode
  394. {
  395. typedef any_char<char_encoding::unicode> char_type;
  396. constexpr auto char_ = char_type{};
  397. ///////////////////////////////////////////////////////////////////////////
  398. // Unicode Major Categories
  399. ///////////////////////////////////////////////////////////////////////////
  400. BOOST_SPIRIT_X3_CHAR_CLASS(alnum)
  401. BOOST_SPIRIT_X3_CHAR_CLASS(alpha)
  402. BOOST_SPIRIT_X3_CHAR_CLASS(digit)
  403. BOOST_SPIRIT_X3_CHAR_CLASS(xdigit)
  404. BOOST_SPIRIT_X3_CHAR_CLASS(cntrl)
  405. BOOST_SPIRIT_X3_CHAR_CLASS(graph)
  406. BOOST_SPIRIT_X3_CHAR_CLASS(lower)
  407. BOOST_SPIRIT_X3_CHAR_CLASS(print)
  408. BOOST_SPIRIT_X3_CHAR_CLASS(punct)
  409. BOOST_SPIRIT_X3_CHAR_CLASS(space)
  410. BOOST_SPIRIT_X3_CHAR_CLASS(blank)
  411. BOOST_SPIRIT_X3_CHAR_CLASS(upper)
  412. ///////////////////////////////////////////////////////////////////////////
  413. // Unicode Major Categories
  414. ///////////////////////////////////////////////////////////////////////////
  415. BOOST_SPIRIT_X3_CHAR_CLASS(letter)
  416. BOOST_SPIRIT_X3_CHAR_CLASS(mark)
  417. BOOST_SPIRIT_X3_CHAR_CLASS(number)
  418. BOOST_SPIRIT_X3_CHAR_CLASS(separator)
  419. BOOST_SPIRIT_X3_CHAR_CLASS(other)
  420. BOOST_SPIRIT_X3_CHAR_CLASS(punctuation)
  421. BOOST_SPIRIT_X3_CHAR_CLASS(symbol)
  422. ///////////////////////////////////////////////////////////////////////////
  423. // Unicode General Categories
  424. ///////////////////////////////////////////////////////////////////////////
  425. BOOST_SPIRIT_X3_CHAR_CLASS(uppercase_letter)
  426. BOOST_SPIRIT_X3_CHAR_CLASS(lowercase_letter)
  427. BOOST_SPIRIT_X3_CHAR_CLASS(titlecase_letter)
  428. BOOST_SPIRIT_X3_CHAR_CLASS(modifier_letter)
  429. BOOST_SPIRIT_X3_CHAR_CLASS(other_letter)
  430. BOOST_SPIRIT_X3_CHAR_CLASS(nonspacing_mark)
  431. BOOST_SPIRIT_X3_CHAR_CLASS(enclosing_mark)
  432. BOOST_SPIRIT_X3_CHAR_CLASS(spacing_mark)
  433. BOOST_SPIRIT_X3_CHAR_CLASS(decimal_number)
  434. BOOST_SPIRIT_X3_CHAR_CLASS(letter_number)
  435. BOOST_SPIRIT_X3_CHAR_CLASS(other_number)
  436. BOOST_SPIRIT_X3_CHAR_CLASS(space_separator)
  437. BOOST_SPIRIT_X3_CHAR_CLASS(line_separator)
  438. BOOST_SPIRIT_X3_CHAR_CLASS(paragraph_separator)
  439. BOOST_SPIRIT_X3_CHAR_CLASS(control)
  440. BOOST_SPIRIT_X3_CHAR_CLASS(format)
  441. BOOST_SPIRIT_X3_CHAR_CLASS(private_use)
  442. BOOST_SPIRIT_X3_CHAR_CLASS(surrogate)
  443. BOOST_SPIRIT_X3_CHAR_CLASS(unassigned)
  444. BOOST_SPIRIT_X3_CHAR_CLASS(dash_punctuation)
  445. BOOST_SPIRIT_X3_CHAR_CLASS(open_punctuation)
  446. BOOST_SPIRIT_X3_CHAR_CLASS(close_punctuation)
  447. BOOST_SPIRIT_X3_CHAR_CLASS(connector_punctuation)
  448. BOOST_SPIRIT_X3_CHAR_CLASS(other_punctuation)
  449. BOOST_SPIRIT_X3_CHAR_CLASS(initial_punctuation)
  450. BOOST_SPIRIT_X3_CHAR_CLASS(final_punctuation)
  451. BOOST_SPIRIT_X3_CHAR_CLASS(math_symbol)
  452. BOOST_SPIRIT_X3_CHAR_CLASS(currency_symbol)
  453. BOOST_SPIRIT_X3_CHAR_CLASS(modifier_symbol)
  454. BOOST_SPIRIT_X3_CHAR_CLASS(other_symbol)
  455. ///////////////////////////////////////////////////////////////////////////
  456. // Unicode Derived Categories
  457. ///////////////////////////////////////////////////////////////////////////
  458. BOOST_SPIRIT_X3_CHAR_CLASS(alphabetic)
  459. BOOST_SPIRIT_X3_CHAR_CLASS(uppercase)
  460. BOOST_SPIRIT_X3_CHAR_CLASS(lowercase)
  461. BOOST_SPIRIT_X3_CHAR_CLASS(white_space)
  462. BOOST_SPIRIT_X3_CHAR_CLASS(hex_digit)
  463. BOOST_SPIRIT_X3_CHAR_CLASS(noncharacter_code_point)
  464. BOOST_SPIRIT_X3_CHAR_CLASS(default_ignorable_code_point)
  465. ///////////////////////////////////////////////////////////////////////////
  466. // Unicode Scripts
  467. ///////////////////////////////////////////////////////////////////////////
  468. BOOST_SPIRIT_X3_CHAR_CLASS(arabic)
  469. BOOST_SPIRIT_X3_CHAR_CLASS(imperial_aramaic)
  470. BOOST_SPIRIT_X3_CHAR_CLASS(armenian)
  471. BOOST_SPIRIT_X3_CHAR_CLASS(avestan)
  472. BOOST_SPIRIT_X3_CHAR_CLASS(balinese)
  473. BOOST_SPIRIT_X3_CHAR_CLASS(bamum)
  474. BOOST_SPIRIT_X3_CHAR_CLASS(bengali)
  475. BOOST_SPIRIT_X3_CHAR_CLASS(bopomofo)
  476. BOOST_SPIRIT_X3_CHAR_CLASS(braille)
  477. BOOST_SPIRIT_X3_CHAR_CLASS(buginese)
  478. BOOST_SPIRIT_X3_CHAR_CLASS(buhid)
  479. BOOST_SPIRIT_X3_CHAR_CLASS(canadian_aboriginal)
  480. BOOST_SPIRIT_X3_CHAR_CLASS(carian)
  481. BOOST_SPIRIT_X3_CHAR_CLASS(cham)
  482. BOOST_SPIRIT_X3_CHAR_CLASS(cherokee)
  483. BOOST_SPIRIT_X3_CHAR_CLASS(coptic)
  484. BOOST_SPIRIT_X3_CHAR_CLASS(cypriot)
  485. BOOST_SPIRIT_X3_CHAR_CLASS(cyrillic)
  486. BOOST_SPIRIT_X3_CHAR_CLASS(devanagari)
  487. BOOST_SPIRIT_X3_CHAR_CLASS(deseret)
  488. BOOST_SPIRIT_X3_CHAR_CLASS(egyptian_hieroglyphs)
  489. BOOST_SPIRIT_X3_CHAR_CLASS(ethiopic)
  490. BOOST_SPIRIT_X3_CHAR_CLASS(georgian)
  491. BOOST_SPIRIT_X3_CHAR_CLASS(glagolitic)
  492. BOOST_SPIRIT_X3_CHAR_CLASS(gothic)
  493. BOOST_SPIRIT_X3_CHAR_CLASS(greek)
  494. BOOST_SPIRIT_X3_CHAR_CLASS(gujarati)
  495. BOOST_SPIRIT_X3_CHAR_CLASS(gurmukhi)
  496. BOOST_SPIRIT_X3_CHAR_CLASS(hangul)
  497. BOOST_SPIRIT_X3_CHAR_CLASS(han)
  498. BOOST_SPIRIT_X3_CHAR_CLASS(hanunoo)
  499. BOOST_SPIRIT_X3_CHAR_CLASS(hebrew)
  500. BOOST_SPIRIT_X3_CHAR_CLASS(hiragana)
  501. BOOST_SPIRIT_X3_CHAR_CLASS(katakana_or_hiragana)
  502. BOOST_SPIRIT_X3_CHAR_CLASS(old_italic)
  503. BOOST_SPIRIT_X3_CHAR_CLASS(javanese)
  504. BOOST_SPIRIT_X3_CHAR_CLASS(kayah_li)
  505. BOOST_SPIRIT_X3_CHAR_CLASS(katakana)
  506. BOOST_SPIRIT_X3_CHAR_CLASS(kharoshthi)
  507. BOOST_SPIRIT_X3_CHAR_CLASS(khmer)
  508. BOOST_SPIRIT_X3_CHAR_CLASS(kannada)
  509. BOOST_SPIRIT_X3_CHAR_CLASS(kaithi)
  510. BOOST_SPIRIT_X3_CHAR_CLASS(tai_tham)
  511. BOOST_SPIRIT_X3_CHAR_CLASS(lao)
  512. BOOST_SPIRIT_X3_CHAR_CLASS(latin)
  513. BOOST_SPIRIT_X3_CHAR_CLASS(lepcha)
  514. BOOST_SPIRIT_X3_CHAR_CLASS(limbu)
  515. BOOST_SPIRIT_X3_CHAR_CLASS(linear_b)
  516. BOOST_SPIRIT_X3_CHAR_CLASS(lisu)
  517. BOOST_SPIRIT_X3_CHAR_CLASS(lycian)
  518. BOOST_SPIRIT_X3_CHAR_CLASS(lydian)
  519. BOOST_SPIRIT_X3_CHAR_CLASS(malayalam)
  520. BOOST_SPIRIT_X3_CHAR_CLASS(mongolian)
  521. BOOST_SPIRIT_X3_CHAR_CLASS(meetei_mayek)
  522. BOOST_SPIRIT_X3_CHAR_CLASS(myanmar)
  523. BOOST_SPIRIT_X3_CHAR_CLASS(nko)
  524. BOOST_SPIRIT_X3_CHAR_CLASS(ogham)
  525. BOOST_SPIRIT_X3_CHAR_CLASS(ol_chiki)
  526. BOOST_SPIRIT_X3_CHAR_CLASS(old_turkic)
  527. BOOST_SPIRIT_X3_CHAR_CLASS(oriya)
  528. BOOST_SPIRIT_X3_CHAR_CLASS(osmanya)
  529. BOOST_SPIRIT_X3_CHAR_CLASS(phags_pa)
  530. BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_pahlavi)
  531. BOOST_SPIRIT_X3_CHAR_CLASS(phoenician)
  532. BOOST_SPIRIT_X3_CHAR_CLASS(inscriptional_parthian)
  533. BOOST_SPIRIT_X3_CHAR_CLASS(rejang)
  534. BOOST_SPIRIT_X3_CHAR_CLASS(runic)
  535. BOOST_SPIRIT_X3_CHAR_CLASS(samaritan)
  536. BOOST_SPIRIT_X3_CHAR_CLASS(old_south_arabian)
  537. BOOST_SPIRIT_X3_CHAR_CLASS(saurashtra)
  538. BOOST_SPIRIT_X3_CHAR_CLASS(shavian)
  539. BOOST_SPIRIT_X3_CHAR_CLASS(sinhala)
  540. BOOST_SPIRIT_X3_CHAR_CLASS(sundanese)
  541. BOOST_SPIRIT_X3_CHAR_CLASS(syloti_nagri)
  542. BOOST_SPIRIT_X3_CHAR_CLASS(syriac)
  543. BOOST_SPIRIT_X3_CHAR_CLASS(tagbanwa)
  544. BOOST_SPIRIT_X3_CHAR_CLASS(tai_le)
  545. BOOST_SPIRIT_X3_CHAR_CLASS(new_tai_lue)
  546. BOOST_SPIRIT_X3_CHAR_CLASS(tamil)
  547. BOOST_SPIRIT_X3_CHAR_CLASS(tai_viet)
  548. BOOST_SPIRIT_X3_CHAR_CLASS(telugu)
  549. BOOST_SPIRIT_X3_CHAR_CLASS(tifinagh)
  550. BOOST_SPIRIT_X3_CHAR_CLASS(tagalog)
  551. BOOST_SPIRIT_X3_CHAR_CLASS(thaana)
  552. BOOST_SPIRIT_X3_CHAR_CLASS(thai)
  553. BOOST_SPIRIT_X3_CHAR_CLASS(tibetan)
  554. BOOST_SPIRIT_X3_CHAR_CLASS(ugaritic)
  555. BOOST_SPIRIT_X3_CHAR_CLASS(vai)
  556. BOOST_SPIRIT_X3_CHAR_CLASS(old_persian)
  557. BOOST_SPIRIT_X3_CHAR_CLASS(cuneiform)
  558. BOOST_SPIRIT_X3_CHAR_CLASS(yi)
  559. BOOST_SPIRIT_X3_CHAR_CLASS(inherited)
  560. BOOST_SPIRIT_X3_CHAR_CLASS(common)
  561. BOOST_SPIRIT_X3_CHAR_CLASS(unknown)
  562. }
  563. #undef BOOST_SPIRIT_X3_CHAR_CLASS
  564. }}}
  565. #endif