Antlr es una herramienta adecuada para serializar / deserializar un formato de datos binarios?

StackOverflow https://stackoverflow.com/questions/517004

Pregunta

Necesito leer y escribir flujos de octetos a enviar a través de diversas redes para comunicarse con los contadores eléctricos inteligentes. No es un estándar ANSI, ANSI C12.19, que describe el formato de datos binarios. Mientras que el formato de los datos no es excesivamente compleja la norma es muy grande (más de 500 páginas) en el que se describen muchos tipos distintos. La norma se describe completamente por una gramática EBNF. Estoy considerando la utilización de antlr para leer la gramática EBNF o una versión modificada de él y crear clases de C # que pueden leer y escribir el flujo de octetos.

Es este un buen uso de antlr?

Si es así, ¿qué tengo que hacer para ser capaz de utilizar antlr 3.1? A partir de la búsqueda de los archivos de grupos de noticias, parece que tengo que poner en práctica una nueva corriente que puede leer bytes en lugar de caracteres. Es que todos o tendría que poner en práctica un derivado lexer así?

Si antlr puede ayudarme a leer / analizar la corriente puede también ayudar a escribir la corriente?

Gracias.

Dan finucane

¿Fue útil?

Solución

Este tema aparece de vez en cuando en la lista de correo antlr. La respuesta es por lo general no, porque los formatos de archivos binarios son muy regulares y es simplemente no vale la sobrecarga.

Otros consejos

Es posible echar un vistazo a Ragel . Es una máquina de estados compilador / analizador léxico que es útil para la implementación de protocolos sobre el alambre. He leído los informes que genera código muy rápido. Si usted no necesita un motor de analizador y la plantilla, ragel tiene menos sobrecarga que antlr. Si necesita un programa de análisis en toda regla, AST y buen soporte de motor de plantillas, antlr podría ser una mejor opción.

Me parece que el tener una gramática que da una ventaja tremenda para arriba.

3.1 antlr tiene StringTemplate y generación de código características que están separados del análisis sintáctico / léxico, por lo que puede descomponer el problema de esa manera.

Parece un ganador para mí, vale la pena probar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top