LINUX.ORG.RU

Парсер бинарных форматов - на чём?


0

0

Добрый день,

Есть несколько закрытых бинарных форматов. Информацию в этих форматах нужно уметь распарсить и перевести во внутреннее представление языка, произвести некоторые манипуляции, а затем перевести из внутреннего представления опять в бинарный формат.

Сейчас используется C, парсеры пишутся вручную. Вручную писать нудно. Обрабатывать результаты в C тоже не очень удобно.

В рамках эксперимента попробовал написать парсер и обработчик на Haskell - обработка сильно упростилась, но сам парсинг остался таким же нудным.

Итак, внимание, вопрос.

На что стоит посмотреть для упрощения парсинга и обработки

1). по минимуму - оставаясь в рамках C

2). по максимуму - допуская переход на новый язык

Когда все так грустно и скучно, то обычно описывают формат в каком-нибудь ASN.1, а потом по нему генерят код парсера.

mannaz
()
Ответ на: комментарий от redbonnet

> На ASN.1 можно описать абсолютно произвольный бинарный формат?

Теоретически да, но обычно там TLV. Так что пиши на Хаскеле :) Или у Питона есть удобный модуль struct.

tailgunner ★★★★★
()
$ perldoc -f pack
$ man perlpacktut
arsi ★★★★★
()

Можно еще и на ерланг глянуть с его bit syntax, правда не уверен что кроме этой его фичи будет что-то сильно полезное для вашей задачи.

cvb
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.