Pregunta

¿Qué generador de analizador léxico / analizador es el mejor (más fácil de usar, más rápido) para C o C ++? Estoy usando la flexión y el bisonte en este momento, pero el bisonte sólo manipule LALR (1) gramáticas. El lenguaje que estoy analizar no lo hace realmente necesidad de búsqueda hacia delante ilimitada, pero lookahead ilimitada haría que el analisis de mucho más fácil. Debería tratar Antlr? Coco / R? Elkhound? Algo más?

¿Fue útil?

Solución

Actualización 05/01/2015:

Mi respuesta original que apunta a una pregunta ahora eliminado:

  

Hay un montón de buenas respuestas a esta pregunta ya en Lo generador de filtros que hacer recomendar

Así que me he tomado la lista de elementos de la respuesta eliminada en archive.org con al menos 1 voto aquí:

He hecho varios sistemas Flex / bisontes mí mismo, pero ahora me reemplace ambas con limón partir de SQLite, ya que es una herramienta, re-entrante y el hilo de seguridad, además de tener un modelo de streaming / a base de tirar.

Otros consejos

La mala noticia es que la mayoría de langauges ordenador real no son "LALR (1)", lo que significa que tiene que recurrir a una considerable hackery hacer YACC analizar langauges reales.

Si está diseñando una conexión DSL, puede utilizar cualquier generadores del analizador LALR sin muchos problemas, precisamente porque se puede cambiar la gramática de su DSL cuando el generador de análisis chilla. generadores de analizadores sintácticos LL mayoría trabajan aquí también por la misma razón, pero la falta de recursividad por la izquierda puede ser un dolor real.

Si está uncomprising en la forma que desee que su sintaxis, analizadores GLR son ganadores manos hacia abajo. Las usamos en el software DMS Reingeniería Toolkit y hemos construido analizadores de calidad de la producción algunos de 30 idiomas, incluyendo C ++, que tiene un teorema popular diciendo que es casi imposible de analizar. El teorema de tradición fue iniciada por las personas que utilizan LL y LALR programas de análisis para tratar de manejar C ++. GLR hace fácilmente.

antlr hace que la opción ilimitada de búsqueda hacia delante muy fácil de usar 'retroceso'. También podría calificar a su 'más fácil de usar, más rápido' criterios ya que tiene ANTLRWORKS que le permite visualizar y depurar su gramática.

Otra ventaja es que hace que la construcción AST trivialmente fácil con su soporte integrado para la construcción AST, que no se encuentra en el bisonte.

Con dos libros publicados - 'antlr: Guía definitiva' y 'Los patrones del lenguaje de diseño', que es una de las herramientas disponibles muy bien documentados. También tiene una lista de correo muy activa.

No sé lo que busca exactamente, pero creo que Boost Xpressive la pena mirar ...

no es exactamente un generador de análisis, pero una gran herramienta para manejar gramáticas y siento que puede manejar los extraños.

He estado usando el sistema de análisis sintáctico GOLD ( http://www.devincook.com/goldparser) con muy buenos resultados. Mi proyecto es pequeño, un sistema de análisis de archivos NC en C. Pero creo que la herramienta puede manejar proyectos más complejos también.

El último bisonte pretende hacer lookahead ilimitado, por (en efecto) haciendo varios análisis sintácticos de forma simultánea. Si ya tiene inversiones en el bisonte, entonces puede ser vale la pena probar esto, en lugar de cambiar a otro paquete.

http://www.gnu.org/software /bison/manual/bison.html#GLR-Parsers

No he utilizado esta característica a mí mismo, sin embargo.

En cuanto a otros sistemas de ir, he utilizado antlr. En particular no me gusta (la documentación no era muy bueno, y uno debe factor de forma manual uno de la gramática para atender a la precedencia de operadores), pero no funcionaba, y muchos confían en él que es sin duda vale la pena mirar.

LRSTAR 9,1 puede generar LR (1) y LR (*) analizadores. Es un sistema basado en C ++, amigable para Windows y Visual Studio. Se crea programas de análisis basadas en tablas y lexers basadas en tablas, que son pequeñas y rápido para compilar. analizadores LRSTAR pueden construir un AST automáticamente.

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