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 la he desarrollado. es bueno (por cualquier medida razonable de "bueno").
No espero que exista 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 el ensayo y error 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 por inspección). y se centra en el problema de traducir esta gramática en un analizador. Me interesa 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 aclarar mi primera aclaración diciendo que estoy interesado principalmente en el problema de especificar una gramática que aplicará una sintaxis predefinida: da la casualidad de 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? ¿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 la especificación de una gramática para un analizador? ¿En qué puntos, al leer sobre la gramática del analizador, debería centrarme?