Normal
Hey Loits!Ich bin gerade dabei einen Evaluator für FIQL zu schreiben und ich stehe derzeit ein bisschen auf dem Schlauch. Die Klammern machen mir Probleme. Ich dachte ich mache mir einen Expression Crawler. Also nehmen wir mal an wir hätten jetzt eine Pseudo-Expression:[code]x1;((x2,x3);(x4;(x5,x6)))[/code]Die Variablen hier wären jetzt boolische Werte, ';' ist ein UND und ',' ein ODER.Jetzt würde ich gerne die Sub-Expression des "tiefsten" Scope auflösen und mich dann hoch arbeiten, bis ich nur noch einen entgültigen Wert habe.Für das Beispiel würde jetzt also die Funktion "eval(String expression)" mit folgenden Werten und in der Reihenfolge aufgerufen werden. 'E' makiert hier immer das Ergebnis einer Evaluation.[code]1 x5,x62 x4;E13 x2,x34 E2;E35 x1;E4[/code]Das ganze bereitet mir ein bisschen Kopfschmerzen, weil ich keine Ahnung habe wie ich da rangehen soll.
Hey Loits!
Ich bin gerade dabei einen Evaluator für FIQL zu schreiben und ich stehe derzeit ein bisschen auf dem Schlauch. Die Klammern machen mir Probleme. Ich dachte ich mache mir einen Expression Crawler. Also nehmen wir mal an wir hätten jetzt eine Pseudo-Expression:
[code]x1;((x2,x3);(x4;(x5,x6)))[/code]
Die Variablen hier wären jetzt boolische Werte, ';' ist ein UND und ',' ein ODER.
Jetzt würde ich gerne die Sub-Expression des "tiefsten" Scope auflösen und mich dann hoch arbeiten, bis ich nur noch einen entgültigen Wert habe.
Für das Beispiel würde jetzt also die Funktion "eval(String expression)" mit folgenden Werten und in der Reihenfolge aufgerufen werden. 'E' makiert hier immer das Ergebnis einer Evaluation.
[code]
1 x5,x6
2 x4;E1
3 x2,x3
4 E2;E3
5 x1;E4
[/code]
Das ganze bereitet mir ein bisschen Kopfschmerzen, weil ich keine Ahnung habe wie ich da rangehen soll.