Pode impulsionar Espírito ser usado para dados de fluxo de bytes de análise?
-
08-07-2019 - |
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!
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 .