LINUX.ORG.RU

Декодирование байтового потока в common lisp

 ,


0

4

Здравствуйте

Есть поток с С структурами, которые описаны в .h файле. Как профессионально правильно декодировать его [поток] в рамках common lisp для дальнейшего использования в том же common lisp? Идея чтения побайтово и самодельного автомата с памятью выглядит как-то наивно.



Последнее исправление: panzerito (всего исправлений: 2)
Ответ на: комментарий от monk

Что-то тебе все парсеры бинарных файлов накидали. Хотя с каких пор .h бинарный?

Походу, нужно спарсить C-структуру из памяти/бинарного файла в соответствии с декларацией этой структуры в .h-файле.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от monk

Что-то тебе все парсеры бинарных файлов накидали. Хотя с каких пор .h бинарный?

А зачем ему парсить .h? Я так понял, что в .h у него только описание структур, а сами данные это поток, по которому ему приходят бинарные данные в виде этих самых структур.

Если там пяток структур, то парсить их программно это оверкилл)

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

Если там пяток структур, то парсить их программно это оверкилл

Понял. Тогда до меня всё верно ответили. Я думал, он хочет по произвольному .h читалку делать.

monk ★★★★★
()

Если не пугает использование слабо оттестированных библиотек, то я в своё время работал (и ещё работаю, правда уже не так активно) над «ещё одним парсером бинарных данных»™: https://github.com/HiTECNOLOGYs/binarium. Можешь его тоже попробовать на случай если больше понравится. Хотя он и не такой законченный, как binary-types, по крайней мере он довольно шустрый.

Ну, это всё, если тебе не нужно парсить ещё и заголовочный файл… В этом случае уже не могу ничего посоветовать.

HiTECNOLOGYs
()

для автоматической генерации лисповых обёрток к сишным заголовочникам есть cffi-grovel. Он пишет тестовую программу и определяет размещение структуры экспериментально. Или что-то около того.

И была какая-то подобная тулзень под clang.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.