Seite 1 von 1

eval intern

Verfasst: Montag 20. August 2007, 03:25
von lunas
Hi,

ich habe vor kurzem die nette python Function 'eval' entdeckt und habe nun darüber nachgedacht, ob mir ihr Einsatz bei meiner Aufgabe helfen würde.

Und zwar müsste ich eine Sprache, die an C angelehnt ist, interpretieren und ausführen. Nun könnte ich einen eigenen Interpreter dafür schreiben, aber ich dachte, dass die Transformation in python code und dann die Benutzung von eval eventuell schnellere Ausführungszeiten zur Folge hat. Was macht eval intern? Parsed es den übergebenen String und führt all die Übersetzungsarbeit selbst durch, oder gibt es einfach den String an den python Interpreter weiter und überlässt ihm somit die "schmutzige Arbeit"?
(Bei genauerem Nachdenken macht eigentlich nur letzteres Sinn, denn sonst würde ja 2mal interpretiert werden... Aber egal, mich interessiert trotzdem was ihr dazu denkt).

lunas

Verfasst: Montag 20. August 2007, 23:23
von Volvic
ich denke dafür musste exec verwendet, eval kann nur einzelne "befehle". bloß sei gewarnt, exec ist nicht sonderlich schnell ;)

Verfasst: Dienstag 21. August 2007, 14:30
von birkenfeld
Volvic hat geschrieben:ich denke dafür musste exec verwendet, eval kann nur einzelne "befehle".
Genauer "Ausdrücke".
exec ist nicht sonderlich schnell ;)
Warum? Nachdem der übergebene String kompiliert ist (und das geht sehr schnell), ist die Ausführung genauso schnell oder langsam wie die anderer Codeteile.

Verfasst: Dienstag 21. August 2007, 14:36
von Leonidas
Man könnte aber auch direkt Python-Bytecode generieren, so wie es einige Templatesprachen machen. Oder Java-Bytecode, wie es Jython und Groovie machen..

Verfasst: Mittwoch 22. August 2007, 08:21
von lunas
Vielen Dank für die vielen hilfreichen Antworten.