Size: a a a

Compiler Development

2020 March 14

p

polunin.ai in Compiler Development
Зачем? Диаграмма на листике рисуется быстрее
источник

AS

Anatoly Shirokov in Compiler Development
Александр Вольнов
В ASN.1 гораздо меньше контроля над бинарным представлением, он не self-describing, соответственно с версионностью и обратной совместимостью будут проблемы.
Asn.1 self describing.
источник

p

polunin.ai in Compiler Development
Потом когда набросал прототип уже переносишь его в компьютер, конечно
источник

p

polunin.ai in Compiler Development
Ну и диаграмму можно показать кому угодно, и он ее поймет. А Идрис знает полтора человека😂
источник

G

Gymmasssorla in Compiler Development
polunin.ai
Зачем? Диаграмма на листике рисуется быстрее
Если какой-то отдельный проект проектируешь, то наверное да, диаграммами лучше будет
источник

AS

Anatoly Shirokov in Compiler Development
Мне от uml в жизни только sequence diargam нужна
источник

p

polunin.ai in Compiler Development
Диаграммы вариантов использования очень важны также.
источник

АВ

Александр Вольнов in Compiler Development
Алексей
Что за возможности мешают парсить как обычно?
Значение поля структуры может содержать тип поля другой структуры, например:
AnyArray := @struct {
   Type := @type{}
   Values := []Type{}
}
ints = AnyArray {
   @int32
   {1, 2, 3, 4, 5}
}
colors = AnyArray{
   @struct {R = @norm8{}, G = @norm8{}, B = @norm8{}}
   {{0.5, 0.7, 0.9}, {1, 1, 0}, {0.4, 0.1, 0.7}}
}
Нельзя сгенерировать статически парсер, который сможет распарсить любой возможный экземпляр AnyArray, потому что его элементами могут быть элементы любого типа. Это может быть любой встроенный тип, структура, а может быть тип, который описан в самих данных, которые ты читаешь.
источник

А

Алексей in Compiler Development
Александр Вольнов
Значение поля структуры может содержать тип поля другой структуры, например:
AnyArray := @struct {
   Type := @type{}
   Values := []Type{}
}
ints = AnyArray {
   @int32
   {1, 2, 3, 4, 5}
}
colors = AnyArray{
   @struct {R = @norm8{}, G = @norm8{}, B = @norm8{}}
   {{0.5, 0.7, 0.9}, {1, 1, 0}, {0.4, 0.1, 0.7}}
}
Нельзя сгенерировать статически парсер, который сможет распарсить любой возможный экземпляр AnyArray, потому что его элементами могут быть элементы любого типа. Это может быть любой встроенный тип, структура, а может быть тип, который описан в самих данных, которые ты читаешь.
можно
источник

АВ

Александр Вольнов in Compiler Development
Алексей
можно
И как такое сделать, не пихая весь рантайм в этот парсер?
источник

p

polunin.ai in Compiler Development
Александр Вольнов
Значение поля структуры может содержать тип поля другой структуры, например:
AnyArray := @struct {
   Type := @type{}
   Values := []Type{}
}
ints = AnyArray {
   @int32
   {1, 2, 3, 4, 5}
}
colors = AnyArray{
   @struct {R = @norm8{}, G = @norm8{}, B = @norm8{}}
   {{0.5, 0.7, 0.9}, {1, 1, 0}, {0.4, 0.1, 0.7}}
}
Нельзя сгенерировать статически парсер, который сможет распарсить любой возможный экземпляр AnyArray, потому что его элементами могут быть элементы любого типа. Это может быть любой встроенный тип, структура, а может быть тип, который описан в самих данных, которые ты читаешь.
Парсишь статически, а в рантайме проверяешь типы чтобы совпадали
источник

p

polunin.ai in Compiler Development
Немного некорректно выразился, но думаю ты понял
источник

А

Алексей in Compiler Development
Александр Вольнов
И как такое сделать, не пихая весь рантайм в этот парсер?
как обычно, в любых языках, где юзеры могут определять свои типы и переменные
источник

АВ

Александр Вольнов in Compiler Development
polunin.ai
Парсишь статически, а в рантайме проверяешь типы чтобы совпадали
Тогда это будет ограниченный парсер, который может обработать только определённый набор типов. Это и есть те ограничения, о которых я говорил.
источник

А

Алексей in Compiler Development
Александр Вольнов
Тогда это будет ограниченный парсер, который может обработать только определённый набор типов. Это и есть те ограничения, о которых я говорил.
нет
источник

А

Алексей in Compiler Development
парсер вообще типы не обрабатывает
источник

А

Алексей in Compiler Development
его задача построить AST
источник

АВ

Александр Вольнов in Compiler Development
Алексей
его задача построить AST
А, так ты чисто про сам парсер? Я думал, что мы говорим о генераторе кода, который сможет работать с данными.
У меня бинарный формат и есть по сути компактно сериализованное AST текстового парсера.
источник

А

Алексей in Compiler Development
Александр Вольнов
А, так ты чисто про сам парсер? Я думал, что мы говорим о генераторе кода, который сможет работать с данными.
У меня бинарный формат и есть по сути компактно сериализованное AST текстового парсера.
генератор кода уже будет иметь инфу о всех типах
источник

А

Алексей in Compiler Development
и вообще это уже другая история, к которой генераторы парсеров уже в принципе не относится
источник