Hallo
Ich hätte mal eine Frage zum Bau eines Interpreters, d.h. einer Anwendung, in das der Nutzer einen (Pseudo)Code eingibt, der dann von der Anwendung interpretiert und abgearbeitet wird.
Speziell interessiert mich, wie man schnell und effizient herausfindet, welche Funktion auszuführen ist, denn dieser Vorgang wird bei einem längeren Benutzercode oder bei rekursivem Code sehr oft ausgeführt.
Ich habe dies schon einmal in einem C++ Code gelöst gesehen, dort wurde intensiv Zeiger-Hexenwerk verwendet. Wenn ich das richtig verstanden habe, legte der Programmierer ein Array der möglichen Keywords ab, zusammen mit je einem Zeiger, wo die ausprogrammierte Funktion im Speicher lag. Da das Array selbst über einen Zeiger definiert war, brauchte er also nur eine doppelte Indirektion, um zu der auszuführenden Funktion zu gelangen. Vermutlich sehr effizient, aber praktisch unlesbar.
Wie macht man das nun am Besten in Java?
Ich habe mir in meiner Naivität gedacht, dass ich die Keywords in einem Array auf Chars mappe, weil ich mit den Chars am einfachsten ein grösseres Case-Statement aufbauen kann, in dem ich dann die benötigten Funktionen aufrufe.
Aber ob das die effizienteste Art ist, das Problem zu lösen?
Gruß
Thomas