Юникод - это таблица из 32-битных кодов. Они все одинаковой длины и любой 32-битный код - это символ юникода. Возможно, не определенный еще. Описанного вами свойства там нет.
Вы про кодировку UTF-8? Которая есть лишь более плотный способ записи? Вроде как тут тоже этого свойства нет.
Wataru, НЕТ. Кодовые позиции Юникода в любом из форматов его сериализации (UTF-8, UTF-16) — префиксный код: A∈ℋ → AB∉ℋ. Ну а любой код фиксированной длины (UTF-32) префиксный по определению.
Эмодзи Юникода обладают более лёгким, но тоже интересным свойством. Рассмотрим, например, эмодзик «феникс»: BIRD ZWJ FIRE. Видно, что эмодзи — НЕ префиксный код: BIRD∈ℋ, BIRD ZWJ FIRE∈ℋ.
Но при поиске этих эмодзиков алгоритмами типа Ахо-Корасик получается, что если у нас BIRD ZWJ RABBIT → обнаружив кролика, мы просто возвращаемся в начало поискового дерева и снова ищем этого кролика от корня. 80% сложностей этого алгоритма отпадают из-за особенности тех строк, что мы ищем.
НЕТ. Кодовые позиции Юникода в любом из форматов его сериализации (UTF-8, UTF-16)
Я и спросил, вы именно про способ записи? Да, UTF-8 - префиксный код, потому что там длина кода закодирована в первом байте. Но это не ваше свойство. Ведь ваше свойство подразумевает, что код не префиксный.
Вы, видимо, путаете юникод, как битовый код, и способ инерпретации последовательности юникодовских символов в виде одного эмодзи. Это вообще не код в смысле, что мы читаем поледовательность кода и ставим ей в соответствие какой-то символ. Просто вот этот ZWJ - это специальный символ, который говорит, что надо соединить два символа в один при отрисовке.
Тут не какое-то свойство кода, а просто специальный символ. И название у такой штуки "Zero width joiner sequence"
Wataru, Сам я «буквой» считаю кодовую позицию Юникода, так мне надо, но из-за префиксности форматов сериализации UTF-8 и 16 в них эти 3000 эмодзи также будут обладать этим свойством.
Если твой парсер строк - это конечный автомат (Finite-State-Machine)
то твой вопрос звучит как существуют ли запрещенные переходы внутри этого
автомата.
Как в английском это звучит я не знаю. Prohibited? Disabled? Короче я учил теорию
автоматов по Совестким учебникам. Поищи сам.
Хочу немного подправить, в английском сегменте конечный автоматы для парсера языков называют NFA (Nondeterministic finite automaton) и DFA (deterministic finite automaton). А FSM это более общая штука. Например программа которая вызывает скрипты в зависимости от состояния программы, это тоже конечный автомат.