Eigenen, simplen Compiler zu Testzwecken programmieren?

5 Antworten

Wie einfach das ist, kommt auf die programmiersprache an.

Besonders einfach sind kompiler(bzw. interpreter) für brainfuck. Ein hello world programm in brainfuck zu schreiben ist schwerer als einen kompiler für brainfuck in c oder so zu schreiben.

https://gist.github.com/maxcountryman/1699708 Das hier ist ein interpreter für brainfuck in c.

Das das so einfach ist liegt halt dadran dass du die ganze zeit eigentlich nur einen byte array manipulierst in dieser sprache.

jort93  04.02.2020, 16:10

Also, so wie ich dass verstehe muss es kein kompiler sein, sondern nur irgendetwas dass dein programm ausführt.

Ein kompiler ist schwerer als ein interpreter.

0

Daß die Antworten aus Deiner Sicht unbefriedigend waren, liegt vermutlich daran, daß Du selbst nicht genau weißt, was Du eigentlich machen möchtest.

Du hast die Anführungszeichen entfernt - Super, wenn Du jetzt ein natives Executeable willst, dann brauchst Du einen Codegenerator, der Dir den nativen Code erzeugt. Alternativ hast Du ein natives Binary geschrieben, das Du mit der Ausgabe zusammenlinkst und welches genau nur diese Aufgabe beherrscht. Letzteres hat halt nichts mit einem Compiler zu tun.

Für den Codegenerator mußt Du halt zwingend die ISA der Platform kennen, sowie die Interna des Betriebssystems.

Bist du dir sicher, dass du einen Compiler basteln willst?

Denn ein Compiler wandelt das Programm in Maschinensprache um und das bedeutet schlicht und ergreifend, dass du Maschinensprache können musst. Egal in welcher Sprache du deinen Compiler am Ende bauen willst. Ganz abgesehen davon, dass ich stark bezweifle, ob das in Python überhaupt möglich ist.

Zu Unizeiten hatten wir mal als Aufgabe eine Art Interpreter zu bauen. Das Eingabeprogramm war auch in einer Art Phantasiesprache und das "Ding", das wir bauen sollte, sollte aus diesem Phantasieprogramm ein funktionierendes Pascalprogramm machen, welches dann durch einen x-beliebigen Pascalcompiler durchgejagt wurde. Am Ende kam dann ein fertiges und kompiliertes Programm heraus, welches dann tatsächlich all das ausgeführt hat, was im ursprünglichen Phantasieprogramm beschrieben war, aber eben über den Umweg von Pascal.

Möglicherweise wäre ein Pythoninterpreter (deine Phantasiesprache wird in ein funktionierendes Pythonprogramm umgewandelt) passender für den Einstieg.

Aber wenn es zwingend ein Compiler sein muss, dann lern Maschinensprache für die Plattform (z.B. Intel und AMD Prozessoren), für die du dein Phantasieprogramm compilieren willst.

Kannst auch in Python bleiben, die Anführungsstriche können auch bleiben. Dein "Compiler" (ich würd das Ding btw. nicht so nennen) muss halt nur vor jede Zeile ein Print setzen, aus

"Hello, World!"

muss dann

print "Hello, World!"

werden. Die Ausgangsdatei dann als .py speichern.

Gegenfrage: sagt dir Maschinencode etwas?

Ansonsten gabs früher bei Pascal immer eine kleine Compiler-Anleitung mit dazu. Ist aber schon lange her und auch nur so eine dunkle Erinnerung.