Je programme depuis de nombreuses années, mais une tâche qui me prend encore trop de temps est de spécifier une grammaire pour un analyseur, et même après cet effort excessif, je ne suis jamais sûr que la grammaire que j'ai trouvée est bonne ( par toute mesure raisonnable de «bien»).
Je ne m'attends pas à ce qu'il existe un algorithme pour automatiser le processus de spécification d'une grammaire, mais j'espère qu'il existe des moyens de structurer le problème qui éliminent une grande partie des conjectures et des essais et erreurs de mon approche actuelle.
Ma première pensée a été de lire sur les analyseurs, et j'en ai fait une partie, mais tout ce que j'ai lu à ce sujet prend la grammaire comme une donnée (ou assez banale pour que l'on puisse la spécifier par inspection), et se concentre sur le problème de la traduction de cette grammaire en analyseur. Je suis intéressé par le problème immédiatement avant: comment spécifier la grammaire en premier lieu.
Je m'intéresse principalement au problème de la spécification d'une grammaire qui représente formellement une collection d'exemples concrets (positifs et négatifs). Ceci est différent du problème de la conception d'une nouvelle syntaxe . Merci à Macneil d'avoir souligné cette distinction.
Je n'avais jamais vraiment apprécié la distinction entre une grammaire et une syntaxe, mais maintenant que je commence à la voir, je pourrais affiner ma première clarification en disant que je suis principalement intéressé par le problème de la spécification d'une grammaire qui imposera une syntaxe prédéfinie: il se trouve que dans mon cas, la base de cette syntaxe est généralement une collection d'exemples positifs et négatifs.
Comment la grammaire est-elle spécifiée pour un analyseur? Existe-t-il un livre ou une référence qui est la norme de facto pour décrire les meilleures pratiques, les méthodologies de conception et d'autres informations utiles sur la spécification d'une grammaire pour un analyseur? Sur quels points, en lisant la grammaire de l'analyseur, dois-je me concentrer?