Pregunta

Estoy trabajando en un nuevo idioma y, mientras escribo la gramática, me gustaría poder probar la gramática para completar, conflictos y similares. No me preocupa mucho el generador de analizador subrayado (pero uno para .NET sería preferible)

Entonces, la lista de funciones en resumen sería:

  • Funcionalidad de compilación del editor de texto
  • Reportación de errores de sintaxis/semática
  • Informes de conflictos
  • Funcionalidad de prueba de gramática (es decir, ventana para escribir código en la gramática prevista para verificar la corrección de la definición de gramática)

Un proyecto CodePlex llamado Irony tiene algo que Simlar a lo que estoy pidiendo, pero no admite escribir la gramática como BNF que se requiere.

¿Fue útil?

Solución

yo recomendaria Antlr como generador de analizador. Es muy completo y admite C#, así como una gran cantidad de otros idiomas objetivo.

Para IDES, hay un complemento para Eclipse llamado ANTLR IDE y un ide independiente llamado Antlrworks, que funcionan bien.

Tenga en cuenta, sin embargo, que ANTLR usa un algoritmo LL (*) en lugar de un algoritmo LR (K). Aún así, es muy agradable y Antlrworks puede hacer la mayoría del factorización de izquierda necesaria.

Otros consejos

Cuando "trabaja en un nuevo idioma" e intenta obtener una referencia BNF correctamente, probablemente no desee sesgar su gramática de referencia hacia cualquier generador de analizador en particular. Uno de los problemas con la escritura de una gramática de prueba para Bison (Lalr (1)) o ANTLR (LL*) es que hace exactamente eso. Tampoco querrás colgar en "¿Cómo codigo las reglas BNF de tal manera que hacer que realmente se analice" presumiblemente porque estás interesado en trabajar en la gramática, no trabajar en el generador de analizador.

Así que recomendaría usar un generador de analizador gratuito de contexto completo. Esto le permitirá escribir la gramática en la forma más natural con el menor esfuerzo. Esto podría significar renunciar al "editor de texto", "ventana de prueba del editor" ... pero en mi experiencia (consulte mi biografía de desbordamiento de pila) usando un generador de analizador gratuito de contexto abruma esas sutilezas por completo. Editar-save-starse simplemente no requiere mucho esfuerzo.

Entiendo que Bison tiene una opción GLR que proporcionaría una generación de analizador sin contexto, y es de código abierto, por lo que podría hacerlo solo para las pruebas de la gramática.

Nuestro Kit de herramientas de reingeniería de software DMS es comercial y también proporciona un analizador GLR, que se ha utilizado para implementar más de 30 Langauges completos, incluidos C, C ++ y Cobol en varios dialectos, así como en lenguajes más modernos como Python, Ruby, PHP, ....

La diferencia entre DMS y BISON es que DMS está diseñado para respaldar todos los aspectos de la construcción de un analizador/traductor de lenguaje completo (unicode Lexing, análisis de GLR con informes y recuperación de errores, construcción automática de árboles, construcción de tabla de símbolos, análisis de flujo de datos y flujo de datos , transformaciones, bastante huellas, ...). Si desea evaluar seriamente su "nuevo Langauge", eventualmente deberá hacer todo esto, y Bison es solo un pequeño paso por este camino. DMS te llevará todo el camino.

Puede ser que encuentre esta herramienta útil: Goldy Builder

Desafortunadamente es solo Windows.

Eche un vistazo a BNFC, que puede generar código de trabajo y el makfile, de BNF conquiables, para varios idiomas objetivo como: Haskell, Ocaml, C, C ++ y Java. Obtiene una impresora bonita, compensador/impresora de sintaxis abstracta, código de esqueleto para su propio compilador o intérprete, y documentación del lenguaje postcript.

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