|
|
|
|
|
by mockery
2050 days ago
|
|
Yes! The 010 Editor's templating language is a nearly unique (in my experience) hybrid between C-like declarations and imperative flow that's exactly what I want for parsing arbitrary binary files. The template executes like a script (with conditionals and looping) and a line like "int32 myNum;" is actually just syntactic sugar for "read 4 bytes from the current file pointer and label it myNum." Their example probably does a better job explaining it than I can: struct FILE {
struct HEADER {
char type[4];
int version;
ushort numRecords;
} header <bgcolor=cLtGray>;
struct RECORD {
int employeeId;
char name[40];
float salary;
if( file.header.version > 1 )
int numChildren;
if( file.header.version > 2 )
time_t birthDate;
} record[ file.header.numRecords ];
} file;
( From: https://www.sweetscape.com/010editor/templates.html ) |
|