2016-07-19 6 views
0

Ich versuche herauszufinden, welcher Ansatz zur Verbesserung der angezeigten Fehler für einen Benutzer eines von Grako generierten Parsers am besten geeignet ist. Es sieht so aus, als ob die von dem von Grako generierten Parser angezeigten Parsing-Fehler, wenn es in der Eingabedatei auf ein Analyseproblem stößt, nicht hilfreich sind. Die Fehler scheinen oft zu bedeuten, dass das Problem in einem Teil der Eingabedatei liegt, wenn der wahre Fehler irgendwo anders ist.Verbesserte Fehlerausgabe durch Grako-generierten Parser

Ich habe in der Grako Semantics Klasse nach einigen Überprüfungen gesucht, die bessere Fehlermeldungen anzeigen würden, wenn die Überprüfungen fehlschlagen, aber es scheint auch, dass es Tonnen von Randfällen geben kann, die angegeben werden müssen Ermitteln Sie alle Möglichkeiten, wie das Parsen einer Regel fehlschlagen kann.

Hat jemand irgendwelche Empfehlungen oder Beispiele, die ich sehen kann?

+0

Bitte lesen Sie [diese Antwort] (http://stackoverflow.com/questions/29044806/do-i-have-a-bug-in-my-grammar-or-the-parser-generation-tool/29051357) – Apalala

Antwort

2

Ein PEG-Parser wird alle Optionen ausschöpfen, manchmal mit einem Fehler, der der letzten und am wenigsten wahrscheinlichen Option entspricht.

Mit Grako können Sie Schnitt Elemente (~) an die Grammatik fügen Sie den Parser zu haben, verpflichten sich, bestimmte Optionen, wenn es sicher sein können sie diejenigen entsprechen sind.

term = '(' ~ expression ')' | int ; 

Ausgeschnittene Elemente löschen auch den Memoization-Cache, wodurch die Parser-Leistung verbessert wird.

Verwandte Themen