Комментарии 3
Паттерн-матчингом далеко не уехать, к сожалению. Многие объекты сериализуются в заранее не известное количество байтов, которое зависит от свойств этих объектов. То есть чтобы корректно распарсить карту, нужно уметь парсить все объекты во всех их вариациях.
Та же дребедень с метаданными карты. Попробуйте одну и ту же карту сохранить в разных версиях (RoE, AB, SoD, HotA) или проставить разные условия победы или количество игроков. Посмотрите, на сколько байтов дальше будут уезжать свитки и учёные. В общем, это тяжёлый формат для парсинга, который с каждой новой версией Хоты становится только сложнее :с
Да, согласен. Паттерн-матчингом универсальный парсер не сделать.
У меня задача была гораздо скромнее: надоело искать нужные вещи на карте вручную, захотелось побаловаться с hex-редактором и получить маленький инструмент под свои вопросы. Python выбрал ещё и потому, что с ним удобно работать ИИ-агенту: запустить скрипт, посмотреть вывод, уточнить запрос, а при необходимости быстро поправить код под новый частный случай.
По ссылке посмотрел — там уже совсем другой уровень разбора формата.
Вообще, полезно выводить после полученное n после самой строки (например, в скобках).

Реверс-инжиниринг карт Heroes of Might and Magic III: Horn of the Abyss + парсер на Python