Compiler programmieren in BB oder BMax?
Übersicht

CO2ehemals "SirMO"Betreff: Compiler programmieren in BB oder BMax? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe ein bisschen im Internet recherchiert (wird das so geschrieben?!), da habe ich auch etwas gefunden, allerdings nur in Turbo Pascal. Kennt jemand von euch ein gutes (evtl. deutsches, englisch geht auch) Tutorial um einen Compiler in BB, BMax, BASIC oder auch C++ zu programmieren? Alles was ich gefunden habe war Mist, bzw. nicht zu gebrauchen. Bevor irgendwer sagt ich wäre zu Faul: Ich habe schon 5 Seiten mit verschiedenen Tutorials, leider aber eben nur für Turbo Pascal... Ich bedanke mich wie immer im vorraus, mfG, SirMO |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ein tutorial um einen comiler zu schreiben?
gibt viele bücher zu dem thema... |
||
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Prinzip dürfte doch das Gleich sein, oder?
Und mit Faulheit dürfte das wenig zu tun haben, sondern eher mit Schwierigkeit: Soweit ich weis, ist es ein gehöriges Stück Arbeit einen Compiler zu schreiben. Ich würde es mir zwar zutrauen (mit viel Recherche), aber es ist wirklich viel harte Arbeit notwendig. Des weiteren könntest du vllt. mal versuchen an den Quellcode vom GCC ran zu kommen, der ist doch glaube ich OpenSource, oder? Und Wikipedia ist vllt auch erstmal ne gute Anlaufstelle um einen Überblick zu Compilerbau zu bekommen. Was für einen Compiler willst du denn bauen? C++-> Linux X64? BB-> Windows X32? |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
![]() |
Chester |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vergiss es einfach... so wie ich deine Einstellung aus deinem Post interpretiere, haltest du Compilerbau für was ganz übliches, dass sich mit ein paar Tutorials mal schnell lernen lässt, und auch etwas, dass jeder Programmierer schonmal gemacht zu haben scheint. Tut mir leid, aber dem ist nicht so...
Compiler nehmen ein eigenes Kapitel in der Informatik ein, als 16-jähriger Schüler hast du da geringe Erfolgschancen. Falls ich dir immer noch nicht die Laune verdorben habe, das hier sieht interessant aus. |
||
Garfield12 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also,
ich beschäftige mich derzeit uach mit dem Thema und in deinem Fall möchte ich dir raten, dein Vorhaben zu überdenken. Du musst genau dir Schichten eines Betriebsystems kennen, was die, soweit ich das gesehen habe, ja auch nicht so leicht fällt (s. 2D-Engine Diskussion). Aber selbst wenn du dich in das Thema vertieft hast wartet noch viel Arbeit auf dich. Ich habe letztlich diese Diskussion gesehen: https://www.blitzforum.de/foru...ht=blitz2d Die beiden Hauptschreiber (Vertex und Basicprogger) haben wirklich sehr große Kenntnisse von der Materie. Versteh mich nicht falsch, aber ich würde dir raten erst einmal kleinere Projekte anzugehen, und vllt. aufbauende Themen zu behandeln (sprich Parser, Lexer, Scanner, Stringfunktionen in C/C++ oder ähnliches). Ein weiterer Tipp von mir ist, sofern du Blitz2D/3D hast, solltest du dir mal das RPG-Tutorial auf robsite.de ansehen, dort wird glaube ich auch eine kleine Scriptsprache entworfen. (Der Weg von Scriptsprache zu Compiler ist leichter als von 0 auf 100) MfG Yannik ~Edit~ Ich muss noch dazu sagen, das es nciht gerade für dich spricht, wenn du nicht in der Lage bist zu googlen (wie in anderen Diskussionen gesehen) oder mal die Forensuche anzuschmeißen, du solltest dahingehend deine Einstellung vllt. überdenken. |
||
- Zuletzt bearbeitet von Garfield12 am Mo, Sep 27, 2010 18:09, insgesamt einmal bearbeitet
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fang doch mal mit einem Bonsai-Interpreter ein.
Dann entwickle eine einfache Scriptsprache (Wobei Lua nicht einfach ist!) Dabei lernst du ja schon die wichtigsten Dinge wie Parser/Lexer/... Lerne Assembler (alleine das ist ein ganzes Stück Arbeit, ich kann es (noch) nicht) Und dann geht's mit dem Compiler los. Ich persönlich befinde mich bei der Scriptsprache, wobei das bei mir (auf mein aktuelles Projekt bezogen) eine Wiki/HTML-Syntax ist, also eine MarkUp-Sprache. Das ist schon nicht mehr "grade so" erledigt. Und dabei braucht man nicht mal einen komplizierteren Lexer. Aber ich bin da auch kein Experte... MFG EDIT: Wenn es dir schon zu viel ist TurboPascal nur lesen zu lernen, dann ist das hier garantiert das falsche für dich. |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also SirMO, ich nehme an dieses Tutorial mit Turbo Pascal, was du gefunden hast war das "let's build a compiler" von Jack W. Crenshaw.
Wenn das der Fall war: Das ist absolut kein Mist und es ist das ausführlichste, öffentlich zugängliche Compiler Tutorial das es gibt und wahrscheinlich je geben wird. Die Tatsache, dass es fast 400 Seiten umfasst heißt noch lange nicht, dass nur Müll drinnen steht. [offtopic]Noch dazu ist Turbo Pascal eine total schöne Sprache [/offtopic] Gilt natürlich alles nur, wenn es das Tutorial war, was du gefunden hast. Ansonsten kannst du auch Mal flonas Worklog zu FireBasic anschauen oder auch ihn fragen. Ich habe selber auch ein bisschen was in die Richtung versucht (BlueBasic Compiler), bin dann aber daran gescheitert. Soweit ich weiß, hat er auch das "let's build a compiler" Tutorial gelesen und darauf gebaut. Tatsache ist, dass du, wenn dein Compiler nach Assembler kompilieren soll, dich mit Assembler beschäftigen musst. Das heißt auch mit der Hardware des PCs und damit meine ich nicht Grafikkartennummern auswendig lernen. Theorie über den Intel 386 Prozessor etc. Das ganze wird mit 64 Bit noch komplizierter weil neues architekturbedingtes Zeug dazukommt. mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
coolo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Compiler zu schreiben ist durchaus nicht unmöglich und mit jeder Programmiersprache realisierbar, wenn man weiß "wie" man sowas anzugehen hat. Und eben genau dieses "wie" bedarf viel Übung und Wissen. Das heißt man braucht ein paar Anläufe bis sowas ordentlich läuft. Jedenfalls finde ich dass es durchaus möglich ist. Eine Scriptsprache halte ich nicht für wirklich viel einfacher.
Ich würde empfehlen aus BASIC Code erstmal C Code zu erzeugen. Aber hierbei verwende wirklich einen Rekursiven TopDown/BottomUp Parser, da alles andere nicht praktikabel für einen Hobbyprogrammierer ist. Assembler ist nicht mehr wirklich notwwendig. C Compiler optimieren mittlerweile um einiges besser als unser "Hobby" Compiler das je können wird (Constant unfolding, Dead Code removing, ...). Ich empfehle folgendes Compilerbau Buch:http://www.amazon.de/Grundlage...amp;sr=8-1 Es ist einfach und sehr verständlichg geschrieben. @ Garfield12: So ein Schwachsinn, wieso sollte man die Schichten des OSs kennen? Man muss sich ggf mit Assembler/C/whatever auskennen, aber die Schichten sind doch pups egal. @ Chester: Als 16 jähriger hat man sehrwohl Erfolg. Meine erste funktionierende Scriptsprache habe ich mit 13/14 Jahren geschrieben, deswegen schätze ich dass das Alter vollkommen egal ist. |
||
http://programming-with-design.at/ <-- Der Preis ist heiß!
That's no bug, that's my project! "Eigenzitate sind nur was für Deppen" -Eigenzitat |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
@ coolo: Man muss zwar nicht die Schichten des Betriebssystems kennen, wohl aber die Eigenheiten was "ausführbarer code" für das spezielle OS ist. Jedenfalls wenn man nicht nur einen Compiler von BB->C schreiben möchte, sondern einen Compiler nach Bytecode.
Was das Alter angeht muss ich dir allerdings zustimmen; das ist total egal. Ich kenne vom Studium Leute, die haben mit 16 schon Sachen gemacht die total abgedreht waren... |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Garfield12 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Coolo so ein Schwachsinn ist das nicht!
Du solltest schon wissen wie die Softwareseite aufgebaut ist um selber eine vernünftige Programmiersprache zu entwickeln. Ausserdem kann mir niemand erzählen er hätte eine gute Programmiersprache entwicklet, ohne zu wissen was DX oder eine API ist. Also ich denke das ist schon von Vorteil. Und eine Skriptsprache ist kein so gorßes Kunstück, wie eine Programmierpsrache, mit Compiler der eine vernünftig laufende .exe rausschmeißt. Aber das Alter hat damit, da stimme ich dir zu, nichts zu tun! MfG Yannik |
||
![]() |
ComNik |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich kann Chester nur zustimmen, das Buch von Wirth ist sehr gut!
Compilerbau ist eine Interessante Sache, du müsstest dich auch mit Formalen Sprachen beschäftigen. Das ganze muss ja syntaktisch und semantisch für den Rechner verständlich sein. Zwar hast du ein vergleichsweise begrenztes Alphabet, wenige Operatoren (also im Vergleich zu gesprochenen Sprachen), aber trotzdem... Wirth beschreibt in seinem Buch ganz anschaulich die formale Definition von Pascal (oder einer anderen Sprache, ich glaube aber Pascal...). Wenn du die fertig hast, muss der Compiler in der Theorie(!) nur noch die definierten Operatoren, Befehle und user-abhängigen Bezeichner erkennen und in einem schicken Ablaufbaum (nennt man das so?) unterbringen. Der kann dann in die Sprache deiner Wahl übersetzt werden. Aber so einfach wie es jetzt vielleicht klingt ist es nicht! Empfehlung: Buch lesen, einfache Sprache konzipieren (meinetwegen mit Funktionen, Variablen und IF Abfragen) und einen Tokenizer schreiben. Der muss alle Dinge im Code erkennen und zuordnen können, also ob das Wort jetzt eine Variable sein soll, ein spracheninterner Befehl (IF, END IF, WHILE, etc...) oder ein Operator. Viel Spass auf jeden Fall ![]() lg ComNik |
||
WIP: Vorx.Engine |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal danke euch allen ;D
Zu Assembler: Ich suche und suche jeden Tag bei Google, Bing und allen möglichen Suchmaschinen... Nirgenswo finde ich etwas zur Assemblerprogrammierung... Ich werd noch irre ![]() THX im vorraus (wie immer) |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ch du wäre würde ich mir einen ->C-Compiler bauen.
Hat einfach den Vorteil, dass du dich um das Systemnahe nicht (so) zu kümmern braucht. (Blitz funktioniert übrigens genau so). Wahrscheinlich wird es dann sogar schneller sein. Assembler ist (in meinen Augen) realtiv schwer, da du nahezu alle Konzepte der höheren Programmiersprachen ablegen musst. Ich nenne das liebevoll Registerschubsen. Naja, versuche es erstmal mit Tokenizer, Lexer und Co. Assembler lernen sollte nicht dein erster Schritt sein. Viel Erfolg. MFG |
||
Garfield12 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaub du machst da irgendetwas immer falsch. Vielleicht tippst du die Wörter rückwärts
ein, wer weiß? Aber weil ich heute so nett bin: http://tinyurl.com/32o7q3x Der Erste Treffer ist schon absolut ausreichend. Du musst den Inhalt schon lesen, wenn du nur nach Codehappen suchst wirst du nie fündig. Und eine fertige Scriptsprache wo du nur noch deinen Namen einfügen musst gibt es sicherlich auch nicht! MfG Yannik |
||
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Starwar hat Folgendes geschrieben: (Blitz funktioniert übrigens genau so).
Tut es nicht ![]() Ich habe keine Ahnung, warum sich das Gerücht so lange hält. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube man kann Assembler als Registerschubsen oder auch als unbegrenzte Macht bezeichnen ![]() Da die Frage nach Assembler-Tutorials gekommen ist und das nur mit einem Verweis auf Google beantwortet wurde, hier was ich empfehlen würde: 1. Crashkurs: http://www-ivs.cs.uni-magdebur...bler.shtml [mehr oder weniger Unabhängig von einem Assemblierer und nur Theorie] 2. Das Wikibook: http://de.wikibooks.org/wiki/A...erzeichnis [Praxis!] 3. Dann Assembliererspezifische Lektüre (bei fasm, den ich jedem empfehle und den auch BlitzMax verwendet wäre das: http://flatassembler.net/docs.php ) - Achtung! Das Wikibook selber verwendet nasm [spezielle, Assembliererspezifische Funktionen und Eigenheiten] mfg Thunder Edit: Das ist wahr, Starwar. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
- Zuletzt bearbeitet von Thunder am Di, Sep 28, 2010 21:49, insgesamt 2-mal bearbeitet
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ Starwar:
Ich werd mir das alles nochmal genauestens durch den Kopf gehen lassen..., THX trotzdem @ Garfield: Wahnsinn... @ Thunder: THX |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Noobody: Ich meine mich erinnern zu können, dass es in "Programmieren für Kids" stand. Aber ich lasse mich gerne eines besseren Belehren und ich glaube du hast mehr Ahnung.
@Thunder: Natürlich hat man mit Assembler die meiste Macht. Nur wer kein Tutorial von TuboPascal auf Blitz umsetzen will (wollen nicht können), der sollte lieber den Komfort einer Hochsprache nutzen. MFG |
||
![]() |
Arrangemonk |
![]() Antworten mit Zitat ![]() |
---|---|---|
ihr immer mit eueren assemblern
ich hate compiler im studium, hab aber vieles wieder vergessen mit lex und yacc kannste dir c code generieren lassen und damit compiler programmieren es is besser wenn man das regelwerk fürn compiler aufschreibt als versucht selber einen zu schreiben aber wenn du das dennoch willst, viele einfache sprachen kannst du mit einer statemachine umkompilieren wort lesen switch wort und bei zutreffen die zustandsfunktion aufrufen welche dann wieder nen wort liest und so weiter (ausgabe nciht vergessen) biss man seine ganze syntax abgefrühstückt hat edit: hier das script von der vorlesung die ich besucht hatte http://dl.dropbox.com/u/148468...mpiler.pdf |
||
ingeneur |
BBPro2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@arrange:
er will aber in blitz einen compiler schreiben, daher ist dein tip mit yacc und co schonmal hinfällig... im übrigen ist es kein quatsch selbst einen compiler zu bauen statt hilfsprogramme zu benutzen - denn so lernt man was. ich bezweifle dass es ihm darum geht einen tollen kommerziellen compiler zu bauen und diesen möglichst schnell fertig zu kriegen um geld zu sparen. dann wären compiler generatoren sinnvoll. außerdem wurde wenn ich das richtig gesehen habe in deiner vl zwar maschinencode angesprochen, aber einen compiler der eine hochsprache in selbigen übersetzt wurde nicht gebaut. darum scheint es op aber zu gehen. hierzu ist also eine übersetzung in assembler und dann in maschinensprache notwendig. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group