[? ]Compilerbau: Quellsprache - Zielsprache
-
Wie der ein oder andere wohl schon weiß schreibe ich ein Artikel über Compilerbau.
Welche Ziel- und Quellsprache ich nehme ist mir aber noch nicht ganz klar. Vielleicht habt ihr ja ne idee womit ich am besten darin arbeiten soll. Hier erstmal eine Liste mir allen Sprachen die dafür in Frage kommen:Quellsprache:
- Kobsa (ist die Sprache an der ich gerade arbeite).
- Basic
- kleinC
Zielsprache:
- Basic
- Assembler
-
Ist Kobsa deine Erfindung?
Wenn ja, würde mich die interessieren, wenn du noch was dazu schreiben kannst, wie man eine eigene Sprache entwickelt. Du musst ja nicht alles verraten, aber so ein wenig halt. Sowas macht ja auch nicht jeder.Ansonsten bin ich da sehr unentschlossen, weil ich gar keine Ahnung habe, was nun welche Vor- oder Nachteile hätte.
-
Ich fände die Kombination Kobsa
Asm am interessantesten.
-
im ersten teil: als quelle kosba, falls kosba schleifen und funktionen mit lokalen variablen können soll. beim selbererfunden ist man so herrlich frei.
als zielsprache c. ist einfacher als asm und man muß sich auch nicht ums letzte optimieren und registergemauschele kümmern. eventuell auch c-- (http://www.cminusminus.org/).
ich freue mich besonders auf den zweiten, dritten oder vierten teil, wo ich von dir lernen kann, wie man in kosba typen einbaut und objektorientierung und generics bzw templates.
-
Keine Ahnung was Kobsa ist, aber ich denke irgend eine Pseudosprache ist am besten für einen solchen Artikel geeignet.
C hat noch den Präprozessor, welches evtl. einen Overhead bedeutet, und imho nicht unbedingt notwendig für eine (pseudo)Sprache ist.Am besten du fängst erstmal mit dem Artikel an, bevor dir zuviele Leute reinquatschen :p
-
Letztlich hänge die Wahl wohl auch davon ab, was Du in dem Artikel zeigen willst.
- Wie baut man Lexer+Parser, Typen, etc.
Dann ist es wohl geschickter als Zielsprache ne Hochsprache zu wählen. Weil Du Dir keine Gedanken um die Umsetzung von einfachen Schleifenkonstrukten machen mußt. Die gibt's ja schon.
Wenn Du mehr die technischen Details zeigen willst, also Registerallokation, wie macht man Prozeduraufrufe etc. dann ist wohl ne sehr einfache Hochsprache nach Assembler geeignet.
Spannend ist sicher beides. Ich freu mich drauf!
-
Auch wenn der Thread schon was älter ist, fände ich es interessant, die Thematik in einem Artikel zu lesen.
Zweimer schrieb:
Wie der ein oder andere wohl schon weiß schreibe ich ein Artikel über Compilerbau.
Was ist Compilerbau?
Wie kann man die einzelnen Komponenten eines Compilers zusammenbauen oder was sind die Standardkomponenten eines Compilers?Deine nächste Aussage sagt mir, dass Du die Komponenten vollständig beschreiben möchtest:
Zweimer schrieb:
Welche Ziel- und Quellsprache ich nehme ist mir aber noch nicht ganz klar.
Ich würde von einer beliebigen (aber in einem C++-Forum grundsätzlich verständlichen) Sprache zu einer Teilmenge von C kompilieren. Brichst Du die Anweisung auf Assemblernahe C-Programme herunter, hast Du alles wichtige drin.
if( a == 4 ) a = b + c; else a = a + 1; print a;
kompiliert zu:
equal_flag = a == 4; if( !equal_flag ) goto _else1; a = b; a += c; goto _endif1; _else1: a += 1; _endif1: printf( "%d", a );
Das wäre eine Möglichkeit.
-
Xin schrieb:
Was ist Compilerbau?
Wie kann man die einzelnen Komponenten eines Compilers zusammenbauen oder was sind die Standardkomponenten eines Compilers?Na beides. Sag bloß Du kennst den Begriff nicht? Sagt Dir Übersetzerbau mehr?
-
Jester schrieb:
Xin schrieb:
Was ist Compilerbau?
Wie kann man die einzelnen Komponenten eines Compilers zusammenbauen oder was sind die Standardkomponenten eines Compilers?Na beides. Sag bloß Du kennst den Begriff nicht? Sagt Dir Übersetzerbau mehr?
Ich kenn' den Begriff schon, darum frage ich.
Compiler baut man nach Drachenbuch aus Frontend und Backend. Compilerbau selbst wäre also ein theoretischer Artikel.
Wenn Du die (je nach Modell) sechs einzelnen Phasen detailiert aufschlüsseln möchtest, so bin ich auf den Artikel gespannt.