Framework zum Aufbau von strukturierten Binärdatenparsern?

9

Ich habe Erfahrung mit der Code-Generierung von Pragmatic-Programmer-Typen: Spezifizierung einer Datenstruktur in einem plattformneutralen Format und Schreiben von Vorlagen für einen Code-Generator, die diese Datenstrukturdateien verwenden und Code erzeugen, der rohe Bytes in sprachspezifische abruft Datenstrukturen, skaliert die numerischen Daten, druckt die Daten aus usw. Die netten pragmatischen (TM) Ideen sind, dass (a) ich Datenstrukturen ändern kann, indem ich meine Spezifikationsdatei modifiziere und die Quelle regeneriere (was DRY ist und so weiter) ) und (b) Ich kann zusätzliche Funktionen hinzufügen, die für alle meine Strukturen generiert werden können, indem ich meine Vorlagen ändere.

Was ich benutzt habe, war ein Perl-Skript namens Jeeves , das funktioniert hat. aber es ist allgemeiner Zweck, und irgendwelche Funktionen, die ich schreiben wollte, um meine Daten zu manipulieren, schrieb ich von Grund auf.

Gibt es irgendwelche Frameworks, die sich gut zum Erstellen von Parsern für strukturierte Binärdaten eignen? Was ich von Antlr gelesen habe, legt nahe, dass das zu viel ist. Meine aktuellen Zielsprachen von Interesse sind C #, C ++ und Java, wenn es darauf ankommt.

Danke wie immer.

Bearbeiten: Ich werde diese Frage mit Kopfgeld beantworten. Wenn es Bereiche gibt, in denen ich nach ihnen suchen sollte (zu suchende Schlüsselwörter) oder andere Möglichkeiten, dieses Problem, das Sie selbst entwickelt haben, anzugreifen, würde ich gerne von ihnen hören.

    
John 14.03.2011, 23:20
quelle

2 Antworten

2

Sie könnten ASN.1 interessant finden, da es eine einfache Möglichkeit bietet, die Daten zu beschreiben, die Sie möglicherweise verarbeiten. Wenn Sie ASN.1 zur abstrakten Beschreibung der Daten verwenden, müssen Sie diese abstrakten Daten in konkrete Binärdatenströme mappen, für die ECN ( Kodierung Control Notation) ist wahrscheinlich die richtige Wahl.

Das New Jersey Machine Toolkit konzentriert sich eigentlich auf binäre Datenströme, die den Befehlssätzen entsprechen, aber ich denke, das ist eine Übermenge von nur binären Streams. Es hat sehr schöne Möglichkeiten, um Felder in Bezug auf Bitstrings zu definieren und automatisch Accessoren und Generatoren von solchen zu generieren. Dies könnte besonders nützlich sein wenn Ihre binären Datenstrukturen Zeiger zu anderen Teilen des Datenstroms enthalten.

    
Ira Baxter 18.03.2011, 16:54
quelle
3

Sie können auch auf ein relativ neues Projekt Kaitai Struct schauen, das eine Sprache für diesen Zweck bereitstellt und auch eine gute IDE hat: Kaitai.io

    
beSpark 10.11.2016 12:01
quelle