2009-08-31 14 views
6

Ich möchte einen Parser-Generator für Bildungszwecke schreiben und frage mich, ob es einige nette Online-Ressourcen oder Tutorials gibt, die erklären, wie man einen schreibt. Etwas in der Art von "Let's Build Compiler" von Jack Crenshaw.Online-Ressourcen zum Schreiben eines Parser-Generators

Ich möchte den Parser-Generator für LR (1) Grammatik schreiben.

Ich habe ein anständiges Verständnis der Theorie hinter der Generierung der Aktion und Tabellen, aber wollen einige Ressourcen, die mir bei der Umsetzung helfen wird.

Bevorzugte Sprachen sind C/C++, Java, obwohl auch andere Sprachen in Ordnung sind.

Danke.

Antwort

8

Ich stimme mit anderen überein, das Dragon Buch ist ein guter Hintergrund für LR-Parsing.

Wenn Sie in Rekursiver Abstieg interessiert sind, ist ein enorm Spaß Lernerfahrung dieser Website, die Sie geht durch eine vollständig in sich geschlossenes Compilersystem aufzubauen, die sich und andere Sprachen zusammenstellen können:

MetaII Compiler Tutorial

Dies alles basiert auf einem erstaunlichen kleinen 10-seitigen Fachartikel von Val Schorre: META II: Eine Syntax-orientierte Compiler Schreibsprache von ehrlich zu Gott 1964. Ich lernte, wie man Compiler von diesem zurück im Jahr 1970 zu bauen. Es ist ein überwältigender Moment, wenn Sie endlich herausfinden, wie sich der Compiler regenerieren kann ....

Ich kenne den Website-Autor von meinen College-Tagen, habe aber nichts mit der Website zu tun.

1

Nicht wirklich online, aber die Dragon Book hat ziemlich ausführliche Diskussionen über LR-Parsing.

2

Wenn Sie die Python Route gehen möchten, würde ich Folgendes empfehlen.

Ich habe diese beiden als äußerst hilfreich und Paul McGuire der Autor von pyparsing ist super Sie aushelfen gefunden, wenn Sie auf Probleme stoßen. Das Buch Textverarbeitung in Python ist nur eine praktische Referenz, die Sie in die Fingerspitzen nehmen können und hilft Ihnen, die richtige Einstellung zu erhalten, wenn Sie versuchen, einen Parser zu erstellen.

Ich würde auch darauf hinweisen, dass eine OO-Sprache besser als Sprache Parsing-Engine geeignet ist, weil es erweiterbar ist und Polymorphismus der richtige Weg ist, es zu tun (IMHO). Betrachtet man das Problem in Form einer Zustandsmaschine und nicht als "Suche nach einem Semikolon am Ende von xyz", so zeigt sich, dass der Parser am Ende sehr viel robuster wird.

Hoffe, dass hilft!

0

Ich fand es einfacher zu lernen, rekursive Abstieg Parser zu schreiben, bevor Sie lernen, LR-Parser schreiben. Nun, um ehrlich zu sein, nach vielen Jahren des Schreibens von Parsern fand ich es nie nötig, einen LR-Parser zu schreiben.

Ich habe vor kurzem ein Tutorial bei CodeProject mit dem Namen Implementing Programming Language Tools in C# 4.0 geschrieben, das rekursive Descent-Parsing-Techniken beschreibt.

Verwandte Themen