He estado programando durante muchos años, pero una tarea que todavía me lleva demasiado tiempo es especificar una gramática para un analizador, e incluso después de este esfuerzo excesivo, nunca estoy seguro de que la gramática que se me ocurrió sea buena ( por cualquier medida razonable de "bueno").
No espero que haya un algoritmo para automatizar el proceso de especificación de una gramática, pero espero que haya formas de estructurar el problema que elimine gran parte de las conjeturas y las pruebas y errores de mi enfoque actual.
Mi primer pensamiento ha sido leer sobre analizadores, y he hecho algo de esto, pero todo lo que he leído sobre este tema toma la gramática como algo dado (o lo suficientemente trivial como para poder especificarlo mediante inspección), y se enfoca en El problema de traducir esta gramática en un analizador sintáctico. Estoy interesado en el problema inmediatamente anterior: cómo especificar la gramática en primer lugar.
Me interesa principalmente el problema de especificar una gramática que represente formalmente una colección de ejemplos concretos (positivos y negativos). Esto es diferente del problema de diseñar una nueva sintaxis . Gracias a Macneil por señalar esta distinción.
Nunca había apreciado realmente la distinción entre una gramática y una sintaxis, pero ahora que estoy empezando a verla, podría agudizar mi primera aclaración al decir que estoy principalmente interesado en el problema de especificar una gramática que imponga un sintaxis predefinida: resulta que, en mi caso, la base de esta sintaxis suele ser una colección de ejemplos positivos y negativos.
¿Cómo se especifica la gramática para un analizador sintáctico? ¿Existe algún libro o referencia que sea el estándar de facto para describir las mejores prácticas, las metodologías de diseño y otra información útil sobre cómo especificar una gramática para un analizador sintáctico? ¿En qué puntos, al leer sobre la gramática del analizador sintáctico, debería centrarme?