Как насчет C # ?
например
class MySimplePDLData {
// format: name (or blank if padding), bit length, value (or blank if data),
// name of presence flag field (or blank if no presence flag), C# type
// one packet type per string, fields separated by pipes (|)
string[] pdl = {
// MY-SIMPLE-PDL-START
",8,0xf8,|version,8,,Int32|type,8,,Int32|id1,64,,Int64",
...
// MY-SIMPLE-PDL-END
};
}
Если данные уже находятся в памяти, вам не нужно выполнять ввод-вывод в формате файла. Отсюда вы можете либо динамически интерпретировать пакеты, либо сгенерировать необходимый исходный код C # для распознавания / упаковки / распаковки пакетов, снова используя сам C #.