[Projekt] Interpreter/Compiler



  • Hast du ungefähr eine Vorstellung vom Arbeitsaufwand, der hinter einem Compiler steckt? Die Sache mit dem Editor und dem Assembler kannst du dir sparen. Es gibt gute Editoren und Assembler sowieso, warum das Rad nochmal erfinden? Sowas bringt dich nicht einen Millimeter näher zum eigenen Compiler.

    Ich würd es so machen (wenn ich die Zeit hätte 🙂 ): Mir eine kleine, saubere Sprache suchen, sie nochmals vereinfachen, und einen Compiler implementieren. Dann die gewonnenen Erfahrungen nutzen um eine eigene Sprache zu designen, und die dann umsetzen. Vielleicht auch noch mehr Schritte. Direkt was "praktisches" bauen zu wollen geht garantiert in die Hose.



  • Hallo,

    Wie gesagt, der Assembler wäre optional.
    Mir geht es nicht in erster Linie darum was praktisches zu bauen sondern um die Theorie und das Design. (auch um den Lerneffekt und Spaß)
    Natürlich will ich das aber auch praktisch umsetzen.

    Dass es schon genug Assembler gibt weiss ich, trotzdem wäre es sehr interessant einen eigenen zu schreiben, aber darüber wird noch überlegt.

    Ein eigener Editor wäre deshalb toll weil bereits bestehende Editoren vielleicht nicht die Möglichkeiten bieten die wir brauchen, aber ich werde mich natürlich noch gründlich umsehen.

    Wichtig wären beim Editor vorallem Syntax Highlighting und, dass man zb die Syntax eines Befehls angezeigt bekommt.

    Hast du ungefähr eine Vorstellung vom Arbeitsaufwand, der hinter einem Compiler steckt?

    Ich denke das hängt vom Sprachumfang und anderem ab.



  • ich würde empfehlen, zum lernen die parrot platform zu nutzen, da kann man recht toll rumbasteln - eigene sprachen sind da recht schnell entwickelt

    und man kann sich dann auch noch eigene backends ausdenken



  • Danke für den Hinweis



  • Wie gesagt, wer Interesse hat -> einfach melden.

    Ich würde mich freuen.

    Mfg



  • Hier ein netter Compiler, der Codegeneratoren aus dem .Net Framework nutzt:
    http://www.codeproject.com/cs/algorithms/compiler.asp



  • Hallo!

    Ich werde diesen Thread auch für eine Projektdokumentation nutzen.

    Bis jetzt haben wir schon 2 Webprogrammierer für unser Projekt gewonnen.
    Als Editor für die IDE/den Compiler integrieren wir den Notepad++-Editor;
    der wirklich alle unsere Ansprüche erfüllt und so fertig bzw nahezu unverändert integriert werden kann.

    Das Projekt wird OpenSource gemacht, damit es allen/Interessierten zur Verfügung steht und auch andere Entwickler es modifizieren und uppen können.

    Wir haben beschlossen den Compiler von der Oberfläche der IDE bis zum Linker selbst zu schreiben.

    Was wir noch bräuchten wären zwei C++ Programmierer die bereits Erfahrung in der GUI-Programmierung (für die Integrierung des Editors und der Programmierung der IDE-Oberfläche), jemand der sich gut in Assembler auskennt und ein bis zwei C-Programmierer.

    Geplant sind auch ein Projektmanager und ein Syntaxtree für die IDE.

    Wer Interesse hat und/oder Fragen hat kann sich ja unter mahba89@icqmail (MSN) melden.

    Mfg

    @Vorposter:

    Thx für den Tip



  • Also wird am Anfang Notepad++ verwendet, dennoch wird eine eigene IDE geschrieben? Wird die dann auch nur für Windows verfügbar sein, wie es ja bei Notepad++ der Fall ist? Wäre recht schade.



  • Hallo,

    Notepad++ wird vollständig integriert, k genau genommen wäre dann eben das Meiste von uns.

    mfg



  • Versucht doch erstmal eine Skriptsprache zu schreiben, wenn ihr damit fertig seit, habt ihr für die IDE noch genügend Zeit 😉



  • muhi schrieb:

    Ich denke das hängt vom Sprachumfang und anderem ab.

    hmhm... wenn ich den Thread so verfolge, denke ich solltet ihr Bens Rat befolgen und erstmal eine Scriptspracheversuchen. Ich mein lexen ist nicht besonders schwer, aber parsen ist schon kein kleines Problem, wenn man keinen Generator verwendet. (Sagt euch/dir LL(k) oder LR(k) was? Das sollte eure Sprache sein, am besten k=1).
    Wieso versteift ihr euch so auf die IDE? Macht doch eins von beiden: Einen Compiler oder eine IDE, aber beides auf einmal... Mit Webprogrammierern? Ich weis nicht...



  • Hi!
    Ich muss den anderen auf jeden Fall zustimmen. Ich schreib grad nen Interpreter, und musste zweimal komplett neu anfangen, als ich eigentlich schon fertig war, weil ich immer irgendwas komplett falsch gemacht hab. Ist wirklich seehr frustrierend, vor allem wenn man keine Lust hat sich in einen Parsergenerator einzuarbeiten und ihn von Hand schreiben muss 😃

    btw: kann mir jemand sagen, ob k bedeutet, dass man das aktuelle Token plus k folgende kennt, oder ob man insgesamt k Token hat? Hab ich nirgendwo was zu gefunden ^^



  • das k=1 heist dass du einen look ahead hast. sprich du kennst das aktuelle und du weist was als naechstes kommt. damit machst du den table lookup.



  • Danke, hab ich mir schon gedacht.. ich mach aber kein "Table-lookup" damit.
    Welchen Parsertyp meinst du?



  • wenn du ein LL(1) verfahren implementierst kriegst du am schluss eine zustandsuebergansmatrix ('table'). in der kannst du nachschaun, in welchen zustand du gehen musst, gegeben den aktuellen zustand, die aktuelle eingabe und den lookahead.




Anmelden zum Antworten