Frage

Wenn ich wollte meine eigene Erweiterungen zu C ändern oder zu ergänzen, und fügen Sie sie in den GCC-C-Compiler, was würde ich tun muss? Ich will nicht, Änderungen an der Sprache vorzuschlagen, möchte ich wissen, wie der C-Compiler tatsächlich funktioniert.

Ich habe einen Blick auf den Quellcode zu GCC hatte und es sieht aus, als ob Objective-C als ein einfacher Parser, der Code generiert implementiert, die, dass es für alles, was Verweise auf eine modifizierte Laufzeitbibliothek und dann macht C-basierten verwendet die regulären C-Compiler. Ich habe nicht ich bin es intensiv so wahrscheinlich nicht auf dem richtigen Weg untersucht.

Nehmen wir zum Beispiel, ich wollte mein eigenes Stichwort in Objective-C hinzufügen, nur so zum Spaß. Ich möchte etwas hinzufügen, die wie vielleicht @assert einfach zu implementieren scheint. Alles, was ich für @assert wollen eine Funktion aufzurufen, die ich auf die Objective-C-Laufzeit hinzufügen wird:

objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");

Natürlich könnte ich implementieren diese nur als Funktionsaufruf und Makro sowieso, aber ich mag ein Verständnis für die Analyse und Erstellung Stadien des C-Quellcode gewinnen, und vielleicht, so konnte ich meine eigenen Erweiterungen zu einer Sprache für meinen eigenen Gebrauch hinzufügen .

Der Quellcode ich konsequent ausgesehen haben, bezieht sich „Bäume“ zu und es gibt viele, viele Makros, die Aktionen durchführen oder Informationen von diesen Bäumen erhalten.

Gibt es eine Dokumentation um, das diese Art der Sache im Detail erklärt?

War es hilfreich?

Lösung

Die Bäume sind höchstwahrscheinlich abstrakte Syntaxbäume (AST) rel="nofollow und jeder Compiler Buch lernen Das. Der Drachen Buch ist ein sehr klassisches ein, an der Klasse-I nahm wir verwenden The essence of compilers von Robin Hunter, ISBN 0-13-727835-7. Sie sollten auch in der Lage Tonnen finden von Material aus verschiedenen Hochschulen und Universitäten mit einigen guten Suchbegriffe (Compiler Design, AST, lexikalischer Analyse, Top-Down-Parsing, Bottom-up-Analyse, semantische Analyse, LL , LR).

Andere Tipps

Es hängt davon ab, ob Sie bereits mit Compiler im Allgemeinen sind oder nicht. Wenn nicht, starten Sie mit dem Drachen Buch . Wenn ja, dann schon GCC hat eine Dokumentation für Sie:

  1. Der GCC Internals Handbuch
  2. Die GCC Wiki , insbesondere die über viele Dinge Seite enthält Informationen Getting Started, GCC Bäume enthalten.

Es hängt davon ab, wie Sie es tun - aber Sie könnten für die GCC-Implementierung der Programmiersprache D aussehen mag - GCD . Dies ist ein work in progress, aber es ist eine vollständige Sprache in dem GCC-Framework implementiert, ohne (noch) viel, wenn eine Anerkennung innerhalb des GCC-Teams. Die GCD Erfahrungen könnten heilsam sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top