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.
Spirit2, gerade veröffentlicht, verfügt über Funktionen zum Analysieren von Binärdateien. Schauen Sie sich das an.
Tags und Links c++ parsing stream boost-spirit