Pergunta

Can Espírito (parte do impulso biblioteca C ++) ser usado para analisar a dados binários provenientes de um stream? Por exemplo, ele pode ser usado para dados de análise provenientes de uma tomada em estruturas, bytes, e bandeiras bits individuais? Obrigado!

Foi útil?

Solução

Aumento Espírito permite um analisador para ser definida usando Extensão Backus-Naur Form (EBNF) sintaxe com molde meta-programação . É muito flexível e usa classes abstratas em todas as fases do processo de análise que pode ser personalizado. A fim de processar um fluxo de dados binários, você precisa implementar classes de scanner costume desde os tipos padrão são adaptados para entrada de texto. Você pode ler mais na O Scanner e seção de análise do Guia do usuário do Espírito .

Na minha humilde opinião, fluxos de dados binários são melhor tratadas com código de serialização enrolados à mão. Espírito está mais direccionado para gramáticas bem formados como linguagens de marcação ou de script. Por exemplo, a sintaxe completa da Lua é fornecido em EBNF. Assim, pode fazer sentido usar Espírito para construir um analisador personalizado. Por outro lado, um link de dados seriais proprietário com bytes de sincronização e mensagens que suportam CRC exigiria muito mais trabalho apenas para definir a EBNF se um livre de contexto gramática ainda existe para ele.

Adenda

A versão mais recente do Espírito impulso inclui a funcionalidade para lidar com dados binários.

Outras dicas

Spirit2, acaba de ser lançado, tem instalações para analisar binário. Confira este .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top