Size: a a a

Compiler Development

2020 December 01

АП

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

А

Алексей ayaye :)... in Compiler Development
hazer_hazer
Я плох в теории о lalr, lr, clr и тд.
Но вопрос скорее: "Все ли парсеры прыгают назад?"
все парсеры заглядывают вперед и на основании этого решают, что делать дальше. самым эффективным хватает заглядывания на один токен
источник

h

hazer_hazer in Compiler Development
Алексей ayaye :)
все парсеры заглядывают вперед и на основании этого решают, что делать дальше. самым эффективным хватает заглядывания на один токен
у меня так и было. пока не появились проблемы с переносами строк -_-
казалось бы проблема простая, но у меня-то лайн-фиды это ж еще и семисы)
источник

TS

Timur Safin in Compiler Development
EgorBo
правда icu можно пострипать хорошо
а можно ссылку куда посмотреть где вы так делаете?
источник

АП

Антон Пилипчук... in Compiler Development
Timur Safin
а можно ссылку куда посмотреть где вы так делаете?
думаю без самостоятельной компиляции из исходников не обойтись
источник

M

MaxGraey in Compiler Development
На сколько я помню та на свмом сайте есть примеры и иструкции для кастомной сборки
источник

E

EgorBo in Compiler Development
ога, для снижения массы данных там тула https://unicode-org.github.io/icu/userguide/icu_data/buildtool.html
источник

E

EgorBo in Compiler Development
+ есть режим trace в котором вы запускаете свой апп, делаете разные движения,а  потом смотрите какие именно данные из ICU брались
источник

E

EgorBo in Compiler Development
ну и надо статически линковать icu в ваш апп, а не динамик
источник

TS

Timur Safin in Compiler Development
EgorBo
+ есть режим trace в котором вы запускаете свой апп, делаете разные движения,а  потом смотрите какие именно данные из ICU брались
отлично, спасибо!
источник
2020 December 02

h

hazer_hazer in Compiler Development
Довольно прикладной вопрос: неужели c++ компиляторы не умеют в частичную компиляцию?
Например, изменил одну букву в стринг литерале, он не может понять, что только это нужно заменить? Или есть какие-то тонкости, которые эту возможность убивают? Или может тогда компиляция становится очень сложной и долгой, и быстрее будет почти всегда просто скомпилировать как обычно?
источник

VA

Vladimir Atamanov in Compiler Development
hazer_hazer
Довольно прикладной вопрос: неужели c++ компиляторы не умеют в частичную компиляцию?
Например, изменил одну букву в стринг литерале, он не может понять, что только это нужно заменить? Или есть какие-то тонкости, которые эту возможность убивают? Или может тогда компиляция становится очень сложной и долгой, и быстрее будет почти всегда просто скомпилировать как обычно?
Предположу, что повторяющиеся литералы превращаются в одно упоминание — различие, которое нельзя выявить без полной рекомпиляции.
источник

BD

Berkus Decker in Compiler Development
Kir
У UTF-8 буквы потенциально разной длины, до 5 байт, вроде, так что просто str[i] а-ля C не прокатит, придётся с начала строки перебирать
сейчас до 4, ограничили
источник

BD

Berkus Decker in Compiler Development
Yaroslav Schekin
Эээ... зачем? Разве хранить адрес / указатель на начало лексемы (т.е. первый байт) и её длину (в байтах или символах) недостаточно для O(1)?
Лексема-то "посреди" символа начинаться не будет, я надеюсь.
+
источник

BD

Berkus Decker in Compiler Development
Yaroslav Schekin
Эээ... зачем? Разве хранить адрес / указатель на начало лексемы (т.е. первый байт) и её длину (в байтах или символах) недостаточно для O(1)?
Лексема-то "посреди" символа начинаться не будет, я надеюсь.
^ парсить исходник все равно придется в кодировке utf-8 если язык вменяемый (21 век)
источник

h

hazer_hazer in Compiler Development
Vladimir Atamanov
Предположу, что повторяющиеся литералы превращаются в одно упоминание — различие, которое нельзя выявить без полной рекомпиляции.
Так вот меня и интересует, почему нельзя сделать первичный промежуточный этап для определения неизменного кода. То о чем вы говорите никак этому не помешает.

Если нет оптимизаций включенных, то машинный код практически выглядит, как A -> B, где A это сорс код, а B машинный.
источник

BD

Berkus Decker in Compiler Development
MaxGraey
Обыно валидные символы для начала и середины токена не привышают значение 65500 в codepoint метрики, это значит что вместо UTF32 вполне можно обойтись 16-bit на символ (UCS-2 кодировка)
в свифте идентификаторы-эмодзи поддерживаются
источник

BD

Berkus Decker in Compiler Development
hazer_hazer
Пожалуй мне стоит в этой теме получше разобраться. А то не понятно кому из вас верить
источник

h

hazer_hazer in Compiler Development
как всегда — спасибо
источник

BD

Berkus Decker in Compiler Development
MaxGraey
К сожалению вы плохо знакомы с темой. Это не так, даже UTF16 нельзя сравнивать чкркз memcmp (во всяком случае полностью)
источник