Suche OO-Compiler-Tutorial

Von: , Frage gestellt am Fr, 6. Apr 2007

Hallo,

ich suche ein möglichst einfach gehaltenes Tutorial, wie mal einen Objektorientieren Compiler oder Interpreter für eine Hochsprache schreibt.
Es geht mir nicht darum, eine Objektorientierte Sprache zu übersetzen, sondern einen Compiler mit objektorientierter Struktur selbst zu schreiben (einfach um es zu lernen). Dabe würdeich gerne mit möglichst wenig Theorie traktiert werden.

So gut wie alles, was ich bisher gefunden habe, hat ein gefühltes halbes Informatikstudium vorausgesetzt, das ich nicht habe.

Das einzig wirklich gute, was ich bisher gefunden habe, ist das hier: "Let's Build a Compiler", http://compilers.iecc.com/crenshaw/
Aber das verwendet leider keine Objektorientierung.

Hat jemand einen guten Tipp für mich?

Danke im Voraus und Grüße,
Moritz

3 Antworten zu dieser Frage

  1. Antwort von nach 15 Stunden 0 hilfreich
    Re: Suche OO-Compiler-Tutorial

    Hallo Moritz,
    ich suche ein möglichst einfach gehaltenes Tutorial, wie mal
    einen Objektorientieren Compiler oder Interpreter für eine
    Hochsprache schreibt.
    Es geht mir nicht darum, eine Objektorientierte Sprache
    zu übersetzen, sondern einen Compiler mit objektorientierter
    Struktur selbst zu schreiben (einfach um es zu lernen). Dabe
    würdeich gerne mit möglichst wenig Theorie traktiert werden.
    Der Unterschied ist da eigentlich gar nicht so gross.

    Die Grundlagen kennst du ja schon ;-)
    Du musst nur z.B. String- und Inter-Datentypen als Objekte verstehen. Bei einem '+'-Operator muss ja der Compiler auch schon unterschiedlichen Code generieren (Integer-'+' = Addition; String-'+' = Strings aneinander hängen).

    Im Prinzip musst du das jetzt dem Compiler nur noch für selber definierte Datentypen beibringen und schon hast du eine grundlegende Objektorientierte Sprache.

    MfG Peter(TOO)

    • Antwort von nach 17 Stunden 0 hilfreich
      Re^2: Suche OO-Compiler-Tutorial

      Hallo Peter(TOO) ich suche ein möglichst einfach gehaltenes Tutorial, wie mal
      einen Objektorientieren Compiler oder Interpreter für eine
      Hochsprache schreibt.
      Es geht mir nicht darum, eine Objektorientierte Sprache
      zu übersetzen, sondern einen Compiler mit objektorientierter
      Struktur selbst zu schreiben (einfach um es zu lernen). Dabe
      würdeich gerne mit möglichst wenig Theorie traktiert werden.
      Der Unterschied ist da eigentlich gar nicht so gross.

      Die Grundlagen kennst du ja schon ;-)
      Du musst nur z.B. String- und Inter-Datentypen als Objekte
      verstehen. Bei einem '+'-Operator muss ja der Compiler auch
      schon unterschiedlichen Code generieren (Integer-'+' =
      Addition; String-'+' = Strings aneinander hängen).
      D.h. ich parse immer noch prozedural, und baue mir dabei einen AST auf, dessen Objekte ihren eigenen Objektcode/Assembler ausspucken? Im Prinzip musst du das jetzt dem Compiler nur noch für selber
      definierte Datentypen beibringen und schon hast du eine
      grundlegende Objektorientierte Sprache.
      Das ist für mich noch Zukunftsmusik ;-).
      Ich habe schon einen kleinen Interpreter (prozedural) geschrieben, und die Sprache, die der verarbeitet, hat nur Float und Arrays als Datentyp - das reicht mir schon.
      Jetzt will ich das ganze halt in OO vormulieren.

      Vielen Dank und Grüße,
      Moritz

      • Antwort von nach einem Tag 0 hilfreich
        Re^3: Suche OO-Compiler-Tutorial

        Hallo Moritz, D.h. ich parse immer noch prozedural, und baue mir dabei einen
        AST auf, dessen Objekte ihren eigenen Objektcode/Assembler
        ausspucken?
        Im Prinzip Ja. Die meisten OO-Sprachen sind ja immer noch prozedurale Sprachen, das bedeutet, dass der eigentliche, nach wie vor, Code aus Prozeduren besteht.
        Du hängst dann den Baum mit den für das Objekt gültigen Prozeduren einfach an das Objekt an.
        C++ war anfangs gar kein eigenständiger Compiler, sondern ein Prä-Compiler, welcher alles in C übersetzte.
        Daher das Konzept der "Decoratet Function Names". Jedem Procedurnamen werden z.B. Codes für den Returnwert-Typ vorangestellt und ebensolche für die Aufruf-Parameter. Somit lassen sich Proceduren und Operatoren überladen, solange sie sich durch die Parameter unterscheiden lassen. Im Prinzip musst du das jetzt dem Compiler nur noch für selber
        definierte Datentypen beibringen und schon hast du eine
        grundlegende Objektorientierte Sprache.
        Das ist für mich noch Zukunftsmusik ;-).
        Ich habe schon einen kleinen Interpreter (prozedural)
        geschrieben, und die Sprache, die der verarbeitet, hat nur
        Float und Arrays als Datentyp - das reicht mir schon.
        Jetzt will ich das ganze halt in OO vormulieren.
        Die nächsten langen kalten Winternächte werden noch kommen ;-)

        MfG Peter(TOO)

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!