Estou programando há muitos anos, mas uma tarefa que ainda me leva excessivamente longa é especificar uma gramática para um analisador e, mesmo após esse esforço excessivo, nunca tenho certeza de que a gramática que eu for apresentada seja boa ( por qualquer medida razoável de "bom").
Não espero que exista um algoritmo para automatizar o processo de especificação de uma gramática, mas espero que haja maneiras de estruturar o problema que elimine grande parte das suposições e tentativas e erros da minha abordagem atual.
Meu primeiro pensamento foi ler sobre analisadores, e já fiz um pouco disso, mas tudo o que li sobre esse assunto toma a gramática como um dado (ou trivial o suficiente para que você possa especificá-la por inspeção), e se concentra em o problema de traduzir essa gramática em um analisador. Estou interessado no problema imediatamente antes: como especificar a gramática em primeiro lugar.
Estou interessado principalmente no problema de especificar uma gramática que represente formalmente uma coleção de exemplos concretos (positivos e negativos). Isso é diferente do problema de criar uma nova sintaxe . Agradecemos a Macneil por apontar essa distinção.
Eu realmente nunca apreciei a distinção entre gramática e sintaxe, mas agora que estou começando a vê-la, pude aprimorar meu primeiro esclarecimento dizendo que estou interessado principalmente no problema de especificar uma gramática que imporá uma sintaxe predefinida: acontece que, no meu caso, a base dessa sintaxe geralmente é uma coleção de exemplos positivos e negativos.
Como a gramática é especificada para um analisador? Existe um livro ou referência lá fora, que é o padrão de fato para descrever práticas recomendadas, metodologias de design e outras informações úteis sobre a especificação de uma gramática para um analisador? Em que pontos, ao ler sobre a gramática do analisador, devo me concentrar?