239
#
blank <space>;<tab>
#
toupper (<a>,<A>);(<b>,<B>);(<c>,<C>);(<d>,<D>);\
(<e>,<E>);(<f>,<F>);(<g>,<G>);(<h>,<H>);\
(<i>,<I>);(<j>,<J>);(<k>,<K>);(<l>,<L>);(<m>,<M>);\
(<n>,<N>);(<o>,<O>);(<p>,<P>);(<q>,<Q>);(<r>,<R>);\
(<s>,<S>);(<t>,<T>);(<u>,<U>);(<v>,<V>);(<w>,<W>);\
(<x>,<X>);(<y>,<Y>);(<z>,<Z>)
#
tolower (<A>,<a>);(<B>,<b>);(<C>,<c>);(<D>,<d>);\
(<E>,<e>);(<F>,<f>);(<G>,<g>);(<H>,<h>);\
(<I>,<i>);(<J>,<j>);(<K>,<k>);(<L>,<l>);\
(<M>,<m>);(<N>,<n>);(<O>,<o>);(<P>,<p>);\(
<Q>,<q>);(<R>,<r>);(<S>,<s>);(<T>,<t>);\
<U>,<u>);(<V>,<v>);(<W>,<w>);(<X>,<x>);(\
<Y>,<y>);(<Z>,<z>)
END LC_CTYPE
Пример 13.2. Определение категории LC_CTYPE для POSIX-
среды.
Категория LC_COLLATE определяет порядок алфавитного
сравнения символов для многочисленных служебных программ (sort,
uniq и т.д.), регулярных выражений, а также функций strcoll(), strxfrm() и
других.
В алфавитном сравнении могут участвовать односимвольные и
многосимвольные элементы. Их порядок задается весами, которых у
каждого элемента может быть несколько (не более
COLL_WEIGHTS_MAX). Первый вес называется основным. Если при
сравнении элементов основные веса совпали, используются
соответственные пары дополнительных – до тех пор, пока либо не будет
обнаружено неравенство, либо не кончатся веса.
Допускается формирование классов эквивалентности – присвоение
одного основного веса нескольким элементам сравнения.
Поддерживаются также отображения один-ко-многим (один символ
отображается в последовательность элементов сравнения).
Разумеется, сравнение цепочек символов начинается с разбиения
на элементы сравнения.
Правила алфавитного сравнения и директивы присвоения весов
открываются ключевым словом order_start и завершаются директивой
order_end. Подразумеваемым правилом является forward – сравнение от
начала к концу цепочки. Возможен и противоположный порядок
(backward).
После строки order_start элементы сравнения перечисляются в
порядке возрастания. После элемента может быть задана
последовательность его весов. Веса задаются как относительные, в виде