Ich programmiere schon seit vielen Jahren, aber eine Aufgabe, die mich immer noch überfordert, ist die Angabe einer Grammatik für einen Parser, und selbst nach dieser übermäßigen Anstrengung bin ich mir nie sicher, ob die Grammatik, die ich mir ausgedacht habe, gut ist ( durch ein vernünftiges Maß an "gut").
Ich erwarte nicht, dass es einen Algorithmus zur Automatisierung des Vorgangs zum Festlegen einer Grammatik gibt, aber ich hoffe, dass es Möglichkeiten gibt, das Problem so zu strukturieren, dass das Rätselraten und das Ausprobieren meines aktuellen Ansatzes weitgehend beseitigt werden.
Mein erster Gedanke war, über Parser zu lesen, und ich habe einige davon gemacht, aber alles, was ich zu diesem Thema gelesen habe, nimmt die Grammatik als gegeben (oder trivial genug, dass man sie durch Inspektion spezifizieren kann) und konzentriert sich auf das Problem der Übersetzung dieser Grammatik in einen Parser. Ich interessiere mich gleich vorher für das Problem: wie man die Grammatik überhaupt spezifiziert.
Ich interessiere mich hauptsächlich für das Problem, eine Grammatik anzugeben , die formal eine Sammlung konkreter Beispiele (positiv und negativ) darstellt. Dies unterscheidet sich vom Problem beim Entwerfen einer neuen Syntax . Vielen Dank an Macneil, der auf diesen Unterschied hingewiesen hat.
Ich hatte den Unterschied zwischen einer Grammatik und einer Syntax nie wirklich geschätzt, aber jetzt, wo ich anfange, dies zu sehen, konnte ich meine erste Klarstellung schärfen, indem ich sagte, dass ich hauptsächlich an dem Problem interessiert bin, eine Grammatik anzugeben, die a erzwingt Vordefinierte Syntax: In meinem Fall ist die Basis für diese Syntax normalerweise eine Sammlung von positiven und negativen Beispielen.
Wie wird die Grammatik für einen Parser angegeben? Gibt es ein Buch oder eine Referenz, die de facto als Standard für die Beschreibung von Best Practices, Entwurfsmethoden und anderen hilfreichen Informationen zur Angabe einer Grammatik für einen Parser gilt? Auf welche Punkte sollte ich mich konzentrieren, wenn ich über Parser-Grammatik lese?