[Projekt] Interpreter/Compiler



  • Hallo!

    Ich suche nach Leuten die Lust haben an einem Interpreter/Compiler mitzuarbeiten.

    Für diesen Interpreter/Compiler würden wir eine eigene kleine Programmiersprache entwerfen, die sich aber jeder (da nach Abschluss des Projekts jeder den gesamten Source bekommt)auch selber modifizieren kann.

    Der Fokus würde auf einer srukturierten Snytax wie in C, einfacher Handhabung bzw. vereinfachenden Handhabungsmöglichkeiten von Variablen und Strings und anderen praktischen Vorteilen für den Programmierer liegen.
    Der Umfang wäre natürlich etwas beschränkter.

    Zum Projekt:

    Gebraucht wird Folgendes:

    eine Projekt-Page
    ein Editor
    ein Interpreter/Compiler
    ein eigener einfacher Assembler (optional)

    Falls es ein Compiler wird, würde der Code in der ersten Umwandlungsebene in Assemblercode, danach in Maschinensprache übersetzt.

    das Ganze Projekt wird in C realisiert. (C++ für den Editor)

    Das Team wird in etwa so aufgebaut sein:

    Projektmanager
    Webprogrammierer bzw. Verwalter für die Projekt-Page
    Ein bis zwei Programmierer in C++ für einen Editor
    Programmierer in C und ASM die auch beim Entwurf mitarbeiten

    Der Interpreter/Compiler würde vor allem Lehr-/Erfahrungszwecken dienen ausserdem finde ich, dass dieses Projekt eine Herausforderung ist und Spaß machen würde.

    Bei Interesse kann ich ja nähere Details beschreiben.

    Mfg

    EDIT:

    Es wird auch überlegt, das Ganze als OpenSource-Projekt umzusetzen.

    Wer Interesse hat kann sich unter dieser mailadresse bei mir melden:

    ->mahba@chello.at



  • zu beginn solltet ihr evtl überlegen euch komplett auf den interpreter zu konzentrieren, gar nicht an compilser denken

    die sache mit dem editor kann man auf ein anderes tool schieben - viele editoren können recht einfach um neue syntax-definitionen erweitert werden

    fals ihr dann doch kompilieren wollt, könnt ihr ja noch eine ausgabe als pasm machen, dann könnt ihr parrot zum optimierten kompiliern oder für jit nutzen



  • 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