Size: a a a

Compiler Development

2020 December 01

I

Ioann_V in Compiler Development
Антон ⚙️
Чего блять
а зачем матом то? Нельзя по нормальному поправить Человека?
источник

I

Ioann_V in Compiler Development
Беспонтово
источник

M

MaxGraey in Compiler Development
Антон ⚙️
Чего блять
Предупреждение! Еще раз такой выпад и получаешь RO
источник

E

EgorBo in Compiler Development
MaxGraey
Хм, я думал вы уже реализовали. Кто то там из ваших очешь хотел использовать редундатные байты в хедере для строк)
это убрали недавно
источник

А⚙

Антон ⚙️ in Compiler Development
источник

E

EgorBo in Compiler Development
это без учета локалей
источник

А⚙

Антон ⚙️ in Compiler Development
EgorBo
это без учета локалей
Разумеется. Но с локалями и у UTF-16 особых преимуществ не будет
источник

M

MaxGraey in Compiler Development
Это lexicographically а не alphabetical сравнение и там об этом сказано. Это подходит для быстрой сортировки, но не подходит если нужно правильно сравнить две стоки в unicode aware стиле!
источник

YS

Yaroslav Schekin in Compiler Development
MaxGraey
Еще раз, проблема не только в произвольном доступе, он может быть и не нужен в 99%. Проблема в том, что когда ты сканируешь строку или тебе нужно ее разбить на code points с UTF8 ты делаешь каждый раз декодирование. Примерно вот такое:
https://bjoern.hoehrmann.de/utf-8/decoder/dfa

Там еще быстрыее реализации приведены. А для UCS-2 ты просто считываешь 2 байта из массива. Все)
А я так и не понял, какое отношение это имеет к lexing / parsing.
Вы можете привести какой-то пример (любопытно же)?
источник

E

EgorBo in Compiler Development
Антон ⚙️
Разумеется. Но с локалями и у UTF-16 особых преимуществ не будет
и на что тогда такая реакция? у нас culture-aware сравнения всегда, но сперва мы пытаемся сравнить как простое ASCII и походу если видим что без ICU никуда - идем в slow fallback
источник

А⚙

Антон ⚙️ in Compiler Development
Yaroslav Schekin
А я так и не понял, какое отношение это имеет к lexing / parsing.
Вы можете привести какой-то пример (любопытно же)?
Кстати, да, резонный вопрос
источник

АП

Антон Пилипчук... in Compiler Development
Kir
У UTF-8 буквы потенциально разной длины, до 5 байт, вроде, так что просто str[i] а-ля C не прокатит, придётся с начала строки перебирать
я для решения таких проблем использую ICU и не мучаюсь
источник

E

EgorBo in Compiler Development
Антон Пилипчук
я для решения таких проблем использую ICU и не мучаюсь
медленно и +30мб к приложению -_-
источник

E

EgorBo in Compiler Development
правда icu можно пострипать хорошо
источник

M

MaxGraey in Compiler Development
Yaroslav Schekin
А я так и не понял, какое отношение это имеет к lexing / parsing.
Вы можете привести какой-то пример (любопытно же)?
Если в вашем лексере нет чтения символов из строки или сравнения строк, то беспокоиться не о чем. Я вообще отвечал на сообщение о том, что нужно все в UTF32 переводить и лишь заметил, что не обязательно
источник

E

EgorBo in Compiler Development
кстати @maxgraey вы таскаете с собой icu в вашем языке?
источник

IG

Ilya Golovenko in Compiler Development
Возможно, достаточно было бы сделать case folding обеих строк перед сравнением? Для этого ICU можно не тащить
источник

А⚙

Антон ⚙️ in Compiler Development
Ilya Golovenko
Возможно, достаточно было бы сделать case folding обеих строк перед сравнением? Для этого ICU можно не тащить
Без локалей это ломается на граничных случаях
источник

M

MaxGraey in Compiler Development
EgorBo
кстати @maxgraey вы таскаете с собой icu в вашем языке?
Конечно же нет. У нас все свое и табливы дял unicode properties строим сами более компактно. Используется three staged static trie
источник

IG

Ilya Golovenko in Compiler Development
Антон ⚙️
Без локалей это ломается на граничных случаях
согласен, но с локалями там в основном проблема в тюркских языках (tr, az)
источник