Re: Unicode support pre alpha
OvermindDL1 <[email protected]> Fri, 5 Feb 2010 18:50:50 -0700
| Newsgroups | gmane.comp.parsers.spirit.devel |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Feb 4, 2010 at 6:09 PM, Joel de Guzman <[email protected]> wrote: > Hi Y'all, > > For the adventurous... > > We now have Basic (Level 1) Unicode Support in Qi > (See http://unicode.org/reports/tr18/ for details). > > If anyone is interested to break it in, you're welcome. > It's mostly untested yet except for the posix style char class > parsers such as alnum,alpha,lower etc. I'd appreciate help in > writing test code. > > You need to define: > > #define BOOST_SPIRIT_UNICODE > > to enable support. Like ascii and iso8859_1, there are placeholders > in its namespace, e.g.: > > using boost::spirit::unicode::alpha; > > The char type expected is a boost::uint32_t. > > In general, you don't deal with that directly and instead use > UTF-8, so you use the iterators provided by John Maddock (from > Boost regex), to convert from UTF-8 to boost::uint32. The header: > > #include <boost/regex/pending/unicode_iterator.hpp> > > exposes these. I should probably make that a first class spirit > citizen. Anyway, here's what you need: > > template <class BaseIterator, class U32Type = ::boost::uint32_t> > class u8_to_u32_iterator; > > "Adapts sequence of UTF-8 code points to "look like" a > sequence of UTF-32." > > Support for no-case handling is tricky because some code-points do > not have a 1-1 correspondence (i.e. may shrink or expand the string). > For now, no_case is supported for code-points that map to single > code-points only. > > In addition to the usual posix style alpha,digit,alnum etc. we have > these new placeholders: > > /////////////////////////////////////////////////////////////////////////// > // Unicode Major Categories > /////////////////////////////////////////////////////////////////////////// > letter > mark > number > separator > other > punctuation > symbol > > /////////////////////////////////////////////////////////////////////////// > // Unicode General Categories > /////////////////////////////////////////////////////////////////////////// > uppercase_letter > lowercase_letter > titlecase_letter > modifier_letter > other_letter > > nonspacing_mark > enclosing_mark > spacing_mark > > decimal_number > letter_number > other_number > > space_separator > line_separator > paragraph_separator > > control > format > private_use > surrogate > unassigned > > dash_punctuation > open_punctuation > close_punctuation > connector_punctuation > other_punctuation > initial_punctuation > final_punctuation > > math_symbol > currency_symbol > modifier_symbol > other_symbol > > /////////////////////////////////////////////////////////////////////////// > // Unicode Derived Categories > /////////////////////////////////////////////////////////////////////////// > alphabetic > uppercase > lowercase > white_space > hex_digit > noncharacter_code_point > default_ignorable_code_point > > /////////////////////////////////////////////////////////////////////////// > // Unicode Scripts > /////////////////////////////////////////////////////////////////////////// > arabic > imperial_aramaic > armenian > avestan > balinese > bamum > bengali > bopomofo > braille > buginese > buhid > canadian_aboriginal > carian > cham > cherokee > coptic > cypriot > cyrillic > devanagari > deseret > egyptian_hieroglyphs > ethiopic > georgian > glagolitic > gothic > greek > gujarati > gurmukhi > hangul > han > hanunoo > hebrew > hiragana > katakana_or_hiragana > old_italic > javanese > kayah_li > katakana > kharoshthi > khmer > kannada > kaithi > tai_tham > lao > latin > lepcha > limbu > linear_b > lisu > lycian > lydian > malayalam > mongolian > meetei_mayek > myanmar > nko > ogham > ol_chiki > old_turkic > oriya > osmanya > phags_pa > inscriptional_pahlavi > phoenician > inscriptional_parthian > rejang > runic > samaritan > old_south_arabian > saurashtra > shavian > sinhala > sundanese > syloti_nagri > syriac > tagbanwa > tai_le > new_tai_lue > tamil > tai_viet > telugu > tifinagh > tagalog > thaana > thai > tibetan > ugaritic > vai > old_persian > cuneiform > yi > inherited > common > unknown This is quite *awesome*, just what I needed to be able to continue a few things. Will give it a try when I get time soon. ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ Spirit-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/spirit-devel