Question

Spirit (composant de la bibliothèque Boost C ++) peut-il être utilisé pour analyser des données binaires provenant d’un flux? Par exemple, peut-il être utilisé pour analyser des données provenant d’un socket dans des structures, des octets et des indicateurs de bits individuels? Merci!

Était-ce utile?

La solution

Boost Spirit permet de définir un analyseur syntaxique à l'aide de Formulaire Extended Backus – Naur (EBNF) avec la méta-programmation de modèles . Il est très flexible et utilise des classes abstraites dans toutes les phases du processus d'analyse pouvant être personnalisées. Afin de traiter un flux de données binaire, vous devez implémenter des classes d'analyse personnalisées, car les types par défaut sont adaptés à la saisie de texte. Vous pouvez en savoir plus sur la section Scanner et analyse . du Guide de l'utilisateur de Spirit .

À mon humble avis, les flux de données binaires sont mieux gérés avec un code de sérialisation roulé à la main. Spirit est davantage orienté vers des grammaires bien formées telles que les langages de balisage ou de script. Par exemple, La syntaxe complète de Lua est fournie dans EBNF. Il serait donc logique d’utiliser Spirit pour créer un analyseur syntaxique personnalisé. D'autre part, une liaison de données série propriétaire avec des octets de synchronisation et des messages CRC entre crochets nécessiterait beaucoup plus de travail pour définir l'EBNF si un grammaire sans contexte existe même pour elle.

Addendum

La La dernière version de Boost Spirit inclut une fonctionnalité permettant de traiter des données binaires.

Autres conseils

Spirit2, qui vient de paraître, dispose de fonctions d’analyse binaire. Voir cette .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top