Irgendwelche Referenzen zum Parsen von unvollständigem oder falschem Code?

8

Kann mir jemand Hinweise auf Techniken zum Parsen von Code geben, die Syntaxfehler enthalten oder zum Beispiel fehlende Interpunktionszeichen fehlen?

Die Anwendung, an der ich arbeite, ist eine IDE, in der wir Funktionen wie "Sprung zur Definition", Autovervollständigung und Refactoring anbieten möchten, ohne dass die Quelle im Moment syntaktisch korrekt sein muss Funktionen werden aufgerufen.

Der meiste Parser-Code, den ich gesehen habe, scheint nach dem Prinzip "fail early" zu funktionieren, anstatt sich auf die Fehlerbehebung zu konzentrieren oder unvollständigen Code zu analysieren.

    
Mark Bessey 14.09.2012, 01:12
quelle

3 Antworten

3

Hast du ANTLR ausprobiert?

In The Definitive ANTLR Reference ", Abschnitt 10.7 Automatische Fehlerkorrekturstrategie für 5 Seiten Terrence spricht darüber. Er verweist auf Algorithmen + Datenstrukturen = Programme , A Hinweis zur Fehlerkorrektur in rekursiven Descent-Parsern , Effiziente und komfortable Fehlerkorrektur in rekursiven Descent-Parsern .

Siehe auch die Seiten von der Website:

Überprüfen Sie auch das ANTLR -Tag für den Zugriff auf das ANTLR-Forum, in dem Terrence Parr Fragen beantwortet. Er beantwortet hier einige Fragen als The ANTLR Guy .

Auch die neue Version von ANTLR 4 erscheint ebenso wie die Buch .

Es tut mir leid, wie ein Verkaufsargument zu klingen, aber ich benutze ANTLR seit Jahren, weil es von vielen Leuten benutzt wird, in Produktionssystemen verwendet wird, hat ein paar solide Versionen: Java, C, C #, hat eine sehr aktive Community , hat eine Website, hat Bücher, ist in der Entwicklung, Wartung, Open Source, BSD-Lizenz, einfach zu bedienen und hat einige GUI-Tools.

Einer der Leute, die an einer GUI für ANTLR 4 arbeiten hat Syntax-Highlight und Auto-Vervollständigung neben anderen nützlichen IDE-Bearbeitung ist Sam Harwell. Wenn du ihn über das ANTLR-Forum erreichen kannst, könnte er dir vielleicht helfen.

    
Guy Coder 15.09.2012 01:30
quelle
2

Ich kenne keine Papiere oder Tutorials, aber uu-parsinglib ist ein Haskell-Parsing-Bibliothek, die allgemeine Syntaxfehler beheben kann. Wenn beispielsweise ; erwartet wurde, aber int empfangen wurde, kann der Parser fortfahren, als ob ; an dieser Quellposition eingefügt wurde.

Es liegt an Ihnen, wo der Parser versagt und wo er mit Korrekturen fortfährt, und die Ergebnisse werden zusammen mit einer Reihe von Fehlern geliefert, die während des Parsens korrigiert wurden. Selbst wenn Sie nicht beabsichtigen, Ihren Parsing-Code in Haskell zu implementieren, kann eine Untersuchung der Bibliothek Ihnen einen Einblick geben. Oder Sie können einen Parser in Haskell schreiben und rufen Sie ihn von C .

    
Jon Purdy 14.09.2012 01:24
quelle
1

Forschung zu "Inselgrammatiken" könnte Sie interessieren. Es ist schon eine Weile her, seit ich sie angeschaut habe, aber ich glaube, dass sie vernünftig mit Fällen umgehen sollen, in denen es viele Unsinn in der Datei gibt. Ich hatte nicht viel Glück mit CiteSeer (seltsam; normalerweise ist es ziemlich gut), aber Google Scholar hat eine Reihe relevanter Artikel gefunden. Die Erstellung robuster Parser mit Inselgrammatiken sieht nach einem guten Startpunkt aus.

    
Paul Stansifer 15.09.2012 00:43
quelle