The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Релиз системы разбора произвольных бинарных файлов Kaitai St..., opennews (??), 09-Авг-16, (0) [смотреть все] +1

Сообщения [Сортировка по времени | RSS]


23. "Релиз системы разбора произвольных бинарных файлов Kaitai St..."  +/
Сообщение от jacob (?), 11-Авг-16, 08:46 
Кажется избыточным в описании формата везде писать "id" и "type". Вместо какого-нибудь
seq:
  - id: src_port
    type: u2
  - id: dst_port
    type: u2

Можно было бы писать просто:

seq:
  - src_port: u2
  - dst_port: u2

Ответить | Правка | Наверх | Cообщить модератору

25. "Релиз системы разбора произвольных бинарных файлов Kaitai St..."  +/
Сообщение от GreyCat (ok), 11-Авг-16, 09:14 
> Кажется избыточным в описании формата везде писать "id" и "type".

Давайте усложним задачу :) Как тогда предлагаете описывать поля типа таких:

      - id: frame_times
        type: f4
        repeat: expr
        repeat-expr: num_frames
        if: group != 0

Ответить | Правка | Наверх | Cообщить модератору

26. "Релиз системы разбора произвольных бинарных файлов Kaitai St..."  +/
Сообщение от jacob (?), 11-Авг-16, 09:35 
>> Кажется избыточным в описании формата везде писать "id" и "type".
> Давайте усложним задачу :) Как тогда предлагаете описывать поля типа таких:
>       - id: frame_times
>         type: f4
>         repeat: expr
>         repeat-expr: num_frames
>         if: group != 0

В ваших примерах на гитхабе большинство полей идет именно как id и type. Так может, добавить частный случай, чтобы сократить писанину?

Ответить | Правка | Наверх | Cообщить модератору

27. "Релиз системы разбора произвольных бинарных файлов Kaitai St..."  +/
Сообщение от GreyCat (ok), 11-Авг-16, 18:09 
Во-первых, вы предлагаете очень странную вещь. То есть, представьте, как это будет читаться хотя бы человеческим глазом:

- id: u2
- id: blah
  type: strz
  terminator: 0xd
- terminator: u4

Сравните это с текущей, куда более однородной, на мой взгляд, записью:

- id: id
  type: u2
- id: blah
  type: strz
  terminator: 0xd
- id: terminator
  type: u4

На самом деле тут задано три атрибута с идентификаторами "id", "blah" и "terminator". В описание поля всего одна key-value пара, то мы считаем идентификатором - key, а типом - value. Если больше одной - то, внезапно, все по-другому - они обрабатываются как полноценные key-value пары описания атрибута.

Вообще, предполагалось, что это формат разметки, а не полноценный язык программирования с кучей syntactic sugar, который людям придется еще надо отдельно изучать. "Много способов сделать одно и то же" не хочется поощрять. Это здорово упрощает создание дополнительных инструментов - визуализаторов, визуальных редакторов, отладчиков и т.д. Мне сделать исключения в компиляторе, разумеется, несложно - но это же исключение придется делать всем и везде. Оно того стоит?

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру