Kann Boost Spirit verwendet werden, um Byte-Stream-Daten zu analysieren?

8

Can Spirit (Teil der Boost C ++ - Bibliothek) wird verwendet, um binäre Daten aus einem Stream zu analysieren? Kann es zum Beispiel verwendet werden, um Daten, die von einem Socket kommen, in Strukturen, Bytes und einzelne Bit-Flags zu parsen? Danke!

    
Brian 12.11.2008, 20:19
quelle

2 Antworten

12

Boost Spirit ermöglicht die Definition eines Parsers mit Extended Backus-Naur Form (EBNF) Syntax mit Template-Metaprogrammierung . Es ist sehr flexibel und verwendet in allen Phasen des Analyseprozesses abstrakte Klassen, die angepasst werden können. Um einen binären Datenstrom zu verarbeiten, müssten Sie benutzerdefinierte Scanner-Klassen implementieren, da die Standardtypen für die Texteingabe zugeschnitten sind. Weitere Informationen finden Sie im Abschnitt Scanner und Parsen von Spirit-Benutzerhandbuch .

Nach meiner bescheidenen Meinung werden binäre Datenströme am besten mit handgeneriertem Serialisierungscode behandelt. Spirit orientiert sich mehr an wohlgeformten Grammatiken wie Mark-up oder Skriptsprachen. Zum Beispiel wird ​​Die vollständige Syntax von Lua in EBNF bereitgestellt. Es könnte also sinnvoll sein, mit Spirit einen benutzerdefinierten Parser zu erstellen. Auf der anderen Seite würde eine proprietäre serielle Datenverbindung mit Synchronisationsbytes und CRC-Bracketing-Nachrichten viel mehr Arbeit erfordern, nur um das EBNF zu definieren, wenn kontextfreie Grammatik existiert sogar dafür.

Zusatz

Die neueste Version von Boost Spirit enthält Funktionalität für den Umgang mit Binärdaten.

    
Judge Maygarden 12.11.2008, 22:30
quelle
9

Spirit2, gerade veröffentlicht, verfügt über Funktionen zum Analysieren von Binärdateien. Schauen Sie sich das an.

    
Joel de Guzman 19.11.2009 16:09
quelle

Tags und Links