In Java einen Interpreter schreiben?
Hallo Leute,
ich brauche mal wieder euer Schwarmwissen.
Ich programmiere jetzt schon eine ganze Weile in Java und weiß auch wie der Übersetzungsvorgang grob abläuft, um den Java Code auszuführen. Wäre es, rein theoretisch betrachtet, möglich in Java einen Interpreter für eine "eigene" Programmiersprachen zu schreiben, was dann ebenfalls über die JVM läuft?
Mir ist bewusst, dass das ganze sehr komplex ist und nicht mal eben so umgesetzt. Jedoch interessiert mich dieses Themengebiet schon eine ganze Weile und so kam die Frage auf, ob es mit Java theoretisch möglich wäre, einen eigenen Interpreter zu schreiben, unabhängig vom Umfang und der Komplexität.
Sollte jemand dennoch gute Tutorials, Bücher oder ähnliches zu dem Thema kennen, bin ich gerne für Ratschläge offen.
Vielen Dank :)
8 Stimmen
1 Antwort
Ja, das ist möglich und praktische Beispiele dafür gibt es auch schon.
Zum Beispiel:
- BeanShell
- Groovy (wird vor der Ausführung in Java-Bytecode übersetzt)
- JRuby (ein Ruby-Interpreter)
- Jython (eine Python 2-Implementation in Java)
- Rhino (JavaScript-Interpreter)
Zu all diesen Projekten kannst du dir auf GitHub den Quellcode anschauen.
Bezüglich der Theorie würde ich dir dazu raten, dich mit einigen Themengebieten der theoretischen Informatik auseinanderzusetzen (z.B. formale Grammatiken, DFA, NFA, abstrakte Syntaxbäume).
Grundsätzlich (grob) müsstest du dir eine Syntax überlegen, die deine Sprache erlaubt und zu dieser einen Lexer/Parser entwickeln (Ersterer teilt den Code in Tokens auf, Letzterer interpretiert die Tokens und ordnet sie in einen Syntaxbaum). Die Knoten können anschließend ausgeführt / übersetzt werden.
braucht man java überhaut noch es wurde schon 2 bzw 3 mal gesagt sie haben es nicht verwendet trotztem habe ich update gemacht kann man es löschen
Vielen Dank :) so habe ich ein paar Anhaltspunkte, womit ich mich spezieller beschäftigen kann