Estoy trabajando en un lenguaje específico de dominio (DSL) para los no programadores. Los no programadores cometen muchos errores gramaticales: escriben mal las palabras clave, no cierran los paréntesis, no terminan los bloques, etc.Mejorando los mensajes de ANTLR DSL parse-error
Estoy usando ANTLR para generar mi analizador sintáctico; proporciona un mecanismo ingenioso para manejar RecognitionExceptions para mejorar el manejo de errores. Pero me resulta bastante difícil desarrollar un buen código de manejo de errores para mi DSL.
En este punto, estoy considerando formas de simplificar el lenguaje para facilitar el suministro de mensajes de error de alta calidad a los usuarios, pero no estoy seguro de cómo hacerlo. Creo que quiero reducir la ambigüedad de los errores de alguna manera, pero no estoy seguro de cómo implementar esa idea en una gramática.
¿De qué manera puedo simplificar mi lengua para mejorar los mensajes de error de análisis sintáctico para mis usuarios?
EDIT: Actualizado para aclarar que estoy interesado en formas de simplificar mi lenguaje, no solo en las sugerencias de manejo de errores de ANTLR en general. (aunque, gracias por aquellos!)
¿Puede darnos más información sobre la gramática tal como es ahora? ¿Para qué sirve su DSL y de qué es capaz? –
http://www.choiceofgames.com/blog/choicescript-intro/ Debo informar de inmediato que no es en absoluto contextual ... –
Si tus usuarios cometen errores comunes, puedes tener gramática tokens rule que coinciden con el error común y luego hacen que esas reglas generen un mensaje de error. –