• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

compiler

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
Hy!
Ich brauche mal eure hilfe:
Ich suche ein Programm (unbedingt OS) mit dem ich mir einen compiler bauen kann!
Natürlich gibt es im i-net viel über compilerbauen, aber leider nur in vorhandenen sprachen!
Ich will zum spaß ne neue sprache schreiben, brauche aber ein prog oder tourtional (auf deutsch) wo es beschrieben ist.
Ich habe als tipp das Buch Project Oberon bekommen, leieder verstehe ich kein wort, und es wird nicht (is auf englisch) erklärt wie mann einen compiler compiliert (hab von nem lehrer erfahren dass ich den ersten teil u.U händisch übersetzen muss :oops:)
thx für eure hilfe

edit: das prog oder was auch immer ihr mir da geben wollt muss auf allen drei systemen laufen: win/linux/OS X)
und es MUSS OS sein
 

KayHH

Gast
(hab von nem lehrer erfahren dass ich den ersten teil u.U händisch übersetzen muss :oops:)
Damit meint Dein Lehrer vermutlich nur, dass wenn es noch keine Compiler geben würde man dies tun müsste. Früher hat man den ersten Compiler direkt als Maschinencode eingegeben, weil man sich ja noch keinen kompilieren konnte. Danach hat man dann einen Compiler den man verbessern und mit der alten Version kompilieren kann. So zieht man sich quasi Stück für Stück an den eigenen Haaren aus dem Sumpf. Wenn Dein Compiler in der Programmiersprache geschrieben sein soll, die Du zu entwickeln beabsichtigst, kannst Du das Szenario, sich selbst aus dem Sumpf zu ziehen natürlich nachleben, Du kannst aber auch einfach einen Compiler nehmen den es schon gibt. Der gcc, welcher bei OS X dabei ist, wäre dazu schon mal nicht schlecht geeignet, da er ja auch auf Linux und AFAIK auch Windows läuft.

Ich hatte früher mal den Quellcode zum ELAN-Compilder. Musst Du mal nach googeln. Dieser Compiler ist ebenfalls in ELAN geschrieben. ELAN war früher mal einen schöne Sprache welche vorwiegend im Lehrbereich eingesetzt wurde.

Bevor Du damit anfängst solltest Du Dich aber erst mal mit den grundlegenden Dingen der Datenverarbeitung vertraut machen. Z.B. was ist ein Stack, …. Bücher über Compilerbau (Ich hatte mal eines von Zima oder so ähnlich) sind extrem theoretisch und kaum zu empfehlen.


KayHH


Nachtrag: Den Zima scheint es tatsächlich noch zu geben, zumindest wird er sogar bei Wikipedia erwähnt, http://de.wikipedia.org/wiki/Compilerbau
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
naja, meinst du dass so dass ich einen compiler in ner vorhandenen sprache für ne neue sprache schreiben soll?
und dass mit den büchern brauch ich net, da ich jetzt nur ein hellow wörld programm plane.
ich möchte dass folgendermaßen schreiben (deutsche c++ übersetzung):

Code:
#bib (wasweissich.h) // hier wird eine bibliothek eingefügt (include)
ini hauptprogramm() // initialisiere hauptprogramm
starte()
{
lb(); // lösche den bildschirm (bei dos nötig)
schreibe("hallo welt"); // hier wird was ausgegeben
warte() //selbsterklärend
}
beende()

so ungefähr will ichs machen also ne übersetzung, wenns klappt und spaß macht veröffentliche ich es vl, wer weis
hasst du jetzt vl ne tipp?
thx trodzdem
 

Hobbes_

Gast
Einen Compiler bauen: Da hast Du Dir wirklich etwas vorgenommen und wie Du in einem anderen Thread schon fragtest, eine wirkliche grosse Herausforderung auserwählt.

Dier Lernkurve ist dabei wirklich steil. Auch musst Du Dir bewusst sein, dass die Konzeption einer neuen Programmiersprache sehr viel Vorarbeit der Konzepterstellung braucht, bevor Du auch nur das erste Zeichen tipst. Daneben gibt es schon recht ausgereifte Programmiersprachen. Da muss man sich überlegen, ob man die Zeit nicht sinnvoller investiert. Dennoch: Eine wunderbare Art, sich mit der Programamierung und verschiedenen Maschinen / OS / Assembler / Konzepten auseinanderzusetzen. enjoy it!

------

Aus eigener Erfahrung habe ich früher selbst etwas an einem Pascal-Compiler weitergearbeitet (PCQ auf Amiga, siehe Fish-Disk 503, zB. hier), den Du weiter brauchen kannst, insofern Du einen Emulator hast. Du kannst natürlich auch mit der GNU compiler collection starten (gcc, die auf dem Mac sowieso mit dabei ist, insofern Du das development package installiert hast, DVD oder von Online ADC). So könntest Du beispielsweise einen cross-compiler für Win/Mac/Linux bauen. Cross-Compiler können Dir helfen, dass Du bereits initial nicht so viel händisch übersetzen musst.

-----

Als wirkliche Challange könnte ich Dir da eine der esoterischen Programmiersprachen (zB. Brainfuck) empfehlen. Da hast Du wirklich etwas zu knobeln. Du solltest darauf achten, dass sie Turing-vollständig ist. Damit hast Du Gewähr, dass Du im Prinzip damit alles programmieren kannst. Wenn Du möchtest kriegst Du gar eine Mac OS Emulation in Brainfuck hin. Das möchte ich selbst jedoch nicht probieren, denn dann kannst Du Dich gleich von allen anderen Verpflichtungen abmelden :)

esoterische Programmiersprachen (Wikipedia)
Brainfuck (Wikipedia)

Links in apfeltalk:
- hello world
- rev Algorithmus mit nur 13 Zeichen (sic!)
- Compiler nur 171 Bytes gross (sic!)

-----

Als weitere Alternative könntest Du den Interpreter, den der Apollo-Guidance-Computer bei sich führte implementieren. Nur schon das lesen der Geschichte der Entstehung dieses Computers hat seinen Reiz. Die Jungs waren echt genial: Multitasking bereits damals. Von Hand gewobene Speichernetze.... Ein eigener Interpreter mit eigener Programmiersprache implementiert, damit Speicherplatz gespart werden kann. Schlicht genial.

Alles Gute für Dein Projekt.
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
wenn der code einen bug hat, übernehme ich keine haftung *gg*
 

KayHH

Gast
Wenn die Programmiersprache nur das könnte, wäre es keine. Bibliothek einbinden ist ja nett, aber wo bitte kommt die her? Irgendeine Headerdatei für C kann es ja nicht sein, sonst wäre es ja nichts neues. Das Einbinden setzt außerdem eine Art Präprozessor voraus.

Evtl. solltest Du Dich erst mal auch mit der Backus-Naur-Form beschäftigen.


KayHH
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
ähm langer beitrag*gg* aber ich habe oben weiter beschrieben was ich fürn anfang machen will, werd mir aber dass da durchlesen.
achaj der compiler soll nur dass oben beschriebene können (anfangs)
 

Hobbes_

Gast
naja, meinst du dass so dass ich einen compiler in ner vorhandenen sprache für ne neue sprache schreiben soll?
und dass mit den büchern brauch ich net, da ich jetzt nur ein hellow wörld programm plane.
ich möchte dass folgendermaßen schreiben (deutsche c++ übersetzung):

Code:
#bib (wasweissich.h) // hier wird eine bibliothek eingefügt (include)
ini hauptprogramm() // initialisiere hauptprogramm
starte()
{
lb(); // lösche den bildschirm (bei dos nötig)
schreibe("hallo welt"); // hier wird was ausgegeben
warte() //selbsterklärend
}
beende()

so ungefähr will ichs machen also ne übersetzung, wenns klappt und spaß macht veröffentliche ich es vl, wer weis
hasst du jetzt vl ne tipp?
thx trodzdem

Also wenn Du "nur" eine deutsche Version von C oder C++ machen willst, so würde ich Dir einen simplen Parser empfehlen, der auch nur die Übersetzung nach C vornimmt. Dann kannst Du Dir den Rest sparen. Ich würde auch mal googeln. Ich könnte mir vorstellen, dass es so etwas schon gibt. Das hat dann jedoch nicht viel mit einer eigenen Programmiersprache zu tun.

Und: Den Literaturtipp von KayHH würde ich nicht so einfach in den Wind schiessen. Wenn Du wirklich einen Compiler bauen willst, so wirst Du um die Lektüre einiger Buchseiten nicht herumkommen!

Ach ja: Linus hat für Linux auch mal begonnen, dass er nur ein kleines Programm schreiben wollte... Wer weiss, was aus Deinem kleinen Programm mal entstehen kann... :)
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
Wenn die Programmiersprache nur das könnte, wäre es keine. Bibliothek einbinden ist ja nett, aber wo bitte kommt die her? Irgendeine Headerdatei für C kann es ja nicht sein, sonst wäre es ja nichts neues. Das Einbinden setzt außerdem eine Art Präprozessor voraus.

Evtl. solltest Du Dich erst mal auch mit der Backus-Naur-Form beschäftigen.


KayHH

bibliothek muss niht unbedingt sein, das prog soll nur funktionieren (am besten man braucht überhaupt keine bibliotheken)
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
Ach ja: Linus hat für Linux auch mal begonnen, dass er nur ein kleines Programm schreiben wollte... Wer weiss, was aus Deinem kleinen Programm mal entstehen kann... :)
achja träumen is ja schön;)
aber wirklich: wer weiss:eek:
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621

Hobbes_

Gast
bibliothek muss niht unbedingt sein, das prog soll nur funktionieren (am besten man braucht überhaupt keine bibliotheken)

Schade, dass Du nur eine quick & dirty Lösung für eines der einfachsten Programme der Welt suchst. Nun denn: you are the king of your kingdom :)

Nur für ein Hello World würde ich Dir nach wie vor simpel dieses Programm
Code:
++++++++++[>++++++++++<-]>++++.---.+++++++..+++.>++++[>+++++++++++<-]>.---¦---¦---¦---.[-]<<++++++++.---¦---¦--.+++.---¦---.---¦---¦--.[-]<+[>++++++++++<-]>.[-]<

mit diesem Compiler
Code:
->+>+++>>+>++>+>+++>>+>++>>>+>+>+>++>+>>>>+++>+>>++>+>+++>>++>++>>+>>+>++>++>+>>>>+++>+>>>>++>++>>>>+>>++>+>+++>>>++>>++++++>>+>>++>+>>>>+++>>+++++>>+>+++>>>++>>++>>+>>++>+>+++>>>++>>+++++++++++++>>+>>++>+>+++>+>+++>>>++>>++++>>+>>++>+>>>>+++>>+++++>>>>++>>>>+>+>++>>+++>+>>>>+++>+>>>>+++>+>>>>+++>>++>++>+>+++>+>++>++>>>>>>++>+>+++>>>>>+++>>>++>+>+++>+>+>++>>>>>>++>>>+>>>++>+>>>>+++>+>>>+>>++>+>++++++++++++++++++>>>>+>+>>>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>>>+++>>++++++>>>+>++>>+++>+>+>++>+>+++>>>>>+++>>>+>+>>++>+>+++>>>++>>++++++++>>+>>++>+>>>>+++>>++++>>+>+++>>>>>>++>+>+++>>+>++>>>>+>+>++>+>>>>+++>>+++>>>+[[->>+<<]<+]+++++[->+++++++++<]>.[+]>>[<<+++++++[->+++++++++<]>-.------------------->-[-<.<+>>]<[+]<+>>>]<<<[-[-[-[>>+<++++++[->+++++<]]>++++++++++++++<]>+++<]++++++[->+++++++<]>+<<<-[->>>++<<<]>[->>.<<]<<]
(Quelle)

empfehlen :)

(was für eine Programmiersprache!)

Das macht alles, was Du verlangt hast (und mehr) :)

Eine weitere Kollektion von Hello World-Programmen findest Du hier.


@KayHH: INTERCAL ist auch eine coole Sprache. Danke! Nicht zu vergessen auch die 1000 anderen Varianten dieses Programms...
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
du brainfuck ist schon lustig aber ich will eine übersetzung von c++ in ner eigenen sprache (bitte net falsch verstehen) aber brainfuck interresiert mich im moment nicht (wie kann ich eig. den compiler compilern?)
 

huhny

Gala
Registriert
10.05.05
Beiträge
48
Schreib Dir doch einfach einen Parser der Dir Deine "Befehle" in C++ übersetzt und dannach dann eben den C++ Code mit einem vorhandenen Compiler übersetzt. Also einfach Textersetzungen in der Sourcedatei machen... Einen echten Compiler wirste so schnell nicht bauen, das ist ne Wissenschaft für sich.
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
wie baue ich nen parser (ernstgemeinte frage)
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
ok, kennt wer die adresse von google??? (nicht sehr ernstgemeinte frage)^^
 

Jacky13

Angelner Borsdorfer
Registriert
04.02.07
Beiträge
621
aber son compiler mit NUR den pbenstehenden efehen lässt sich nicht so leicht machen oderr?