Fashion Sale Hier klicken Jetzt informieren Neuerscheinungen Cloud Drive Photos Alles für die Schule Learn More sommer2016 Herbstputz mit Vileda Hier klicken Fire Shop Kindle PrimeMusic Summer Sale 16
Kundenrezension

2 von 2 Kunden fanden die folgende Rezension hilfreich
4.0 von 5 Sternen Schritt für Schritt zum Pascal-Compiler, 2. August 2009
Rezension bezieht sich auf: Writing Compilers and Interpreters: An Applied Approach Using C++ (Taschenbuch)
Ich schreibe - aus Spass an der Sache - fast für jedes Projekt eine eigene "Little Language". Das nennt sich heute hochtrabend "Domain-Specific-Language" (DSL). Ich habe das Buch auf der Suche nach Tricks für eine neue Skriptsprache durchgelesen.
Es fängt mit einem pretty-printer an und endet mit einem - weitgehend vollständigen - LL(1) Pascal Compiler. In jeden Schritt präsentiert der Autor den vollständigen sehr gut dokumentierten und lesbaren C++ Kode (und nicht nur einzelne Kode-Fragemente). Der C++ Stil ist "C with Classes". Der Author verzichtet z.B. auf Templates, Exceptions und die STL. Wobei ich mir nicht mehr sicher bin, ob es diese C++ Features im Erscheinungsjahr (1996) überhaupt schon gab. Meines Erachtens würden sie sie den Kode aber nicht besser, sondern nur ineffizienter machen.
Die schrittweise Einführung erzeugt notwendiger Weise etwas Redundanz. Das Buch hat 840 Seiten. N.Wirth: Compilerbau hat - bei vergleichbaren Inhalt - 120 Seiten. Wirth ist dafür extra-dry.
LL(1) vulgo Recursive-Descent ist nicht so mächtig wie die von YACC/Bison unterstütze LR() Grammatik. Für DSLs ist das wesentlich einfachere LL(1) aber vollkommen ausreichend. Als Alternative bietet sich dass LL(*) Compiler Tool ANTLR an.
Ich habe in dem Buch tatsächlich ein paar nette Tricks gelernt. Das einzige was mir am Design nicht gefallen hat war die Implementierung der Symboltabelle als Binärbaum. Das kann man viel einfacher als Tabelle realisieren. Der Geschwindikeitsunterschied ist bei modernen Prozessoren irrelevant. Die mit Abstand zeitraubenste Routine ist das Einlesen des Programmierkodes von der Festplatte bzw die - im Buch nicht behandelte - Optimierung. Wenn man den Zugriff aber schon unbedingt beschleunigen will, muss man es als Hashtabelle implementieren. Binärbäume sind ausserdem nur bei relativ zufälligem Input eine gute Datenstruktur. Variablennamen in einem Programm sind aber alles andere als zufällig (ein Problem mit dem auch Hashtabellen zu kämpfen haben). Für DSLs die maximal ein paar 100 Zeilen lang sind, ist das aber alles vollkommen unnötiger Firlefanz.
Helfen Sie anderen Kunden bei der Suche nach den hilfreichsten Rezensionen 
War diese Rezension für Sie hilfreich? Ja Nein

[Kommentar hinzufügen]
Kommentar posten
Verwenden Sie zum Einfügen eines Produktlinks dieses Format: [[ASIN:ASIN Produkt-Name]] (Was ist das?)
Amazon wird diesen Namen mit allen Ihren Beiträgen, einschließlich Rezensionen und Diskussion-Postings, anzeigen. (Weitere Informationen)
Name:
Badge:
Dieses Abzeichen wird Ihnen zugeordnet und erscheint zusammen mit Ihrem Namen.
There was an error. Please try again.
">Hier finden Sie die kompletten Richtlinien.

Offizieller Kommentar

Als Vertreter dieses Produkt können Sie einen offiziellen Kommentar zu dieser Rezension veröffentlichen. Er wird unmittelbar unterhalb der Rezension angezeigt, wo immer diese angezeigt wird.   Weitere Informationen
Der folgende Name und das Abzeichen werden mit diesem Kommentar angezeigt:
Nach dem Anklicken der Schaltfläche "Übermitteln" werden Sie aufgefordert, Ihren öffentlichen Namen zu erstellen, der mit allen Ihren Beiträgen angezeigt wird.

Ist dies Ihr Produkt?

Wenn Sie der Autor, Künstler, Hersteller oder ein offizieller Vertreter dieses Produktes sind, können Sie einen offiziellen Kommentar zu dieser Rezension veröffentlichen. Er wird unmittelbar unterhalb der Rezension angezeigt, wo immer diese angezeigt wird.  Weitere Informationen
Ansonsten können Sie immer noch einen regulären Kommentar zu dieser Rezension veröffentlichen.

Ist dies Ihr Produkt?

Wenn Sie der Autor, Künstler, Hersteller oder ein offizieller Vertreter dieses Produktes sind, können Sie einen offiziellen Kommentar zu dieser Rezension veröffentlichen. Er wird unmittelbar unterhalb der Rezension angezeigt, wo immer diese angezeigt wird.   Weitere Informationen
 
Timeout des Systems

Wir waren konnten nicht überprüfen, ob Sie ein Repräsentant des Produkts sind. Bitte versuchen Sie es später erneut, oder versuchen Sie es jetzt erneut. Ansonsten können Sie einen regulären Kommentar veröffentlichen.

Da Sie zuvor einen offiziellen Kommentar veröffentlicht haben, wird dieser Kommentar im nachstehenden Kommentarbereich angezeigt. Sie haben auch die Möglichkeit, Ihren offiziellen Kommentar zu bearbeiten.   Weitere Informationen
Die maximale Anzahl offizieller Kommentare wurde veröffentlicht. Dieser Kommentar wird im nachstehenden Kommentarbereich angezeigt.   Weitere Informationen
Eingabe des Log-ins
  [Abbrechen]

Kommentare

Kommentare per E-Mail verfolgen

Sortieren: Ältester zuerst | Neuester zuerst
1-2 von 2 Diskussionsbeiträgen
Ersteintrag: 04.08.2009 21:47:55 GMT+02:00
Amazon-Kunde meint:
Zum Thema DSL unter C++ könnte boost::spirit für Sie interessant sein:

http://www.boost.org/doc/libs/1_39_0/libs/spirit/classic/index.html

Antwort auf einen früheren Beitrag vom 14.08.2009 21:51:47 GMT+02:00
Danke für den sehr interessanten Link.
‹ Zurück 1 Weiter ›

Details

Artikel

Rezensentin / Rezensent


Ort: Altmelon, Waldviertel

Top-Rezensenten Rang: 1.128