Hilfe bei einfachem Parser
Verfasst: Montag 3. März 2008, 16:05
Hallo,
ich brauche für mein aktuelles Projekt Gestikk eine einfache Skriptsprache, die erörtern soll, ob bestimmte Voraussetzungen gegeben sind; dafür sollte sie ausgewählte Python-Funktionen aufrufen können.
Ich habe bereits einen Versuch gestartet: Hier der Code. Er ist nicht so schön anzusehen, aber er funktioniert wenigstens
Derzeit funktioniert das so: Es wird ein ConditionHandler erstellt, dem mit add_callback Funktionen hinzugefügt werden. Später ruft man dann check auf, um einen bestimmten Ausdruck auf Wahrheit zu testen.
Wenn man mit add_callback die Funktionen 'active_window' hinzugefügt hat, kann der folgende Ausdruck ausgewertet werden:. Dann wird die Funktion, die an 'active_window' gebunden ist einmal mit dem Argument 'Gnome' aufgerufen und einmal mit 'Firefox Version 2.0' aufgerufen.
Funktioniert soweit ganz gut, auch die Verkettung mit and, or und xor geht.
Nun habe ich aber das Problem, dass ich gerne verschachtelte Ausdrücke hätte, zum Beispiel:
Und daher meine Frage:
Hat da jemand eine Idee, wie ich das mit meinem derzeitigen Parser elegant lösen könnte? Oder einen völlig anderen, flexibleren Ansatz? Vielleicht sogar ein Modul, das das für mich erledigen kann?
Gruß,
Fred
ich brauche für mein aktuelles Projekt Gestikk eine einfache Skriptsprache, die erörtern soll, ob bestimmte Voraussetzungen gegeben sind; dafür sollte sie ausgewählte Python-Funktionen aufrufen können.
Ich habe bereits einen Versuch gestartet: Hier der Code. Er ist nicht so schön anzusehen, aber er funktioniert wenigstens

Derzeit funktioniert das so: Es wird ein ConditionHandler erstellt, dem mit add_callback Funktionen hinzugefügt werden. Später ruft man dann check auf, um einen bestimmten Ausdruck auf Wahrheit zu testen.
Wenn man mit add_callback die Funktionen 'active_window' hinzugefügt hat, kann der folgende Ausdruck ausgewertet werden:
Code: Alles auswählen
active_window Gnome or active_window 'Firefox Version 2.0'
Funktioniert soweit ganz gut, auch die Verkettung mit and, or und xor geht.
Nun habe ich aber das Problem, dass ich gerne verschachtelte Ausdrücke hätte, zum Beispiel:
Code: Alles auswählen
(active_window Gnome and application_running Nautilus) or active_window Firefox
Hat da jemand eine Idee, wie ich das mit meinem derzeitigen Parser elegant lösen könnte? Oder einen völlig anderen, flexibleren Ansatz? Vielleicht sogar ein Modul, das das für mich erledigen kann?

Gruß,
Fred