erstellen von Symboltabelle
Ist es Körper wer kann sagen, wie erstellen von Symboltabelle compiler mit C.
- Du meinst, der compiler ist in C geschrieben? Oder tut es das kompilieren von C-code?
- ı müssen asymbol Tabelle mit hash-Tabelle zu speichern, Erklärung,Funktion, Typen usw.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den standard-Stack-Overflow Ressource für den Bau von Compilern und Interpretern ist Schreiben lernen compiler
Unbedingt die einfachste Sache, die Sie tun können, ist ein array von Strukturen. So etwas wie:
und ein Satz von Routinen, um es zu manipulieren.
Benötigen Sie:
Sobald das funktioniert, werden Sie wollen, um
Das ist der einfachste Teil imo, wenn Sie Ihren parser arbeiten, wenn Sie auftreten, Bezeichner in Ihre Grammatik, die Sie bereits haben, jeder bit von Informationen über Sie, die Typen, die, wenn Sie Teil einer Funktion von Grammatik-Regel oder nicht, und wenn Sie sind Teil einer Funktion Erklärung/definition, haben Sie alle parameter mit deren Typen.
Sobald Sie alle diese Informationen, die grundlegendste symbol Tabelle ("globals") ist zu erstellen Sie eine Liste von Gewerkschaften entweder aus einem Namen und einem Typ (einer Variablen) oder einen Namen, einen Typ und eine Liste von name-Typ-combos (Funktion). Sie können trennen Sie diese mit einem flag oder so etwas. Sobald das erledigt ist, können Sie weitere nest es für Funktionen und später auf den Rahmen, wodurch ein c-Stil-symbol-Tabelle. Am Ende, während der code-Generierung-phase, dies ist, wo Sie gehen, zu schreiben, die die Register/Etiketten für Ihre Symbole verwenden, so stellen Sie sicher, es ist leicht erweiterbar; du wirst wieder kommen, eine Menge, um dieses repository hinzuzufügen, Buchführung Daten.
Der schwierigste Teil ist es die Migration der Daten, wie Sie noch beim analysieren Ihrer Grammatik. Dies geschieht in der Regel mit einer großen Struktur, die Sie ausfüllen, wie Sie es Lesen. Nehmen Sie eine C-Stil
int f(int x, int y)
Erklärung: sobald Sie analysierenint f
Sie nicht wissen,, wenn Sie Analyse, eine Funktion oder eine variable noch nicht, so müssen Sie in Ihrer Struktur mit nur den Namen und den Typ ein, dann gehen Sie nach unten zu der unteren Baum-Knoten (im Falle eines recursive-descent-parser) und lassen Sie Sie, damit umzugehen, dann, sobald Sie fertig sind, kehren Sie die Struktur an den Aufrufer, so haben Sie die volle information, auch wenn Sie, in die spezifischen Funktionen, habe keine Idee, was Sache ist, die Sie analysieren wird.Nachschlagen, wie man ein keyed-hash-Tabelle auf der Schnur. Das ist die standard-Weg, es zu tun.