Wenn ich meine eigenen Erweiterungen zu C ändern oder hinzufügen und sie dem GCC C-Compiler hinzufügen möchte, was müsste ich tun? Ich möchte keine Änderungen an der Sprache vorschlagen, ich möchte wissen, wie der C-Compiler tatsächlich funktioniert.Wie kann ich eine C-basierte Sprache zu GCC hinzufügen
Ich habe mir den Quellcode von GCC angeschaut und es sieht so aus, als wäre Objective-C als einfacher Parser implementiert, der Code erzeugt, der auf eine modifizierte Laufzeitbibliothek verweist und dann auf alles, was C-basiert ist Es verwendet den regulären C-Compiler. Ich habe es nicht intensiv studiert, also bin ich wahrscheinlich nicht auf dem richtigen Weg.
Sagen Sie zum Beispiel, ich wollte mein eigenes Stichwort zu Objective-C hinzufügen, nur zum Spaß. Ich möchte etwas hinzufügen, das einfach zu implementieren scheint, wie zB @assert
. Alles, was ich will, ist für @assert
eine Funktion aufzurufen, die ich auf die Objective-C-Laufzeit hinzufügen wird:
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
Offensichtlich konnte ich nur implementieren diese als Funktionsaufruf und Makro sowieso, aber ich will gewinnen ein Verständnis für die Parsing und Kompilierung von C-Quellcode, und vielleicht könnte ich meine eigenen Erweiterungen für eine eigene Sprache hinzufügen.
Der Quellcode, den ich mir angesehen habe, bezieht sich durchweg auf "Bäume" und es gibt viele, viele Makros, die Aktionen ausführen oder Informationen von diesen Bäumen erhalten.
Gibt es irgendwelche Unterlagen, die diese Art von Dingen erklären?
Ich kann Ihnen nicht helfen, aber schauen Sie sich http://en.wikipedia.org/wiki/Abstract_syntax_tree –
Wenn Sie einen Compiler hacken wollen, vor allem für Objective-C, sollten Sie aus LLVM überprüfen. Ein Teil des Grundes, warum Apple auf LLVM umstellt, ist, dass es viel einfacher zu modifizieren und zu erweitern ist als GCC und eine viel sauberere Code-Basis hat. – user57368