Ich habe versucht, alle möglichen Kombination von Ausdrücken in einer bestimmten Bedingung zu finden.Finden Sie alle möglichen Kombinationen in einem booleschen Ausdrucksbaum in Java
Betrachten Sie zum Beispiel die folgende Bedingung.
((b > 5) | (c > 4)) & ((c < 6) | (b < 2)))
Ich brauche die endgültige Kombination wie
[(b > 5) , (c < 6)]
[(b > 5) , (b < 2)]
[(c > 4) , (c < 6)]
[(c > 4) , (b < 2)]
Die Logik ist wie (a|b)&(c|d) -> a&c,a&d,b&c,b&d
. Die obige comma (,)
kann als AND-Operator betrachtet werden.
Da ein Baum die beste Lösung zum Analysieren von Ausdrücken ist, gelang es mir, einen abstrakten Syntaxbaum mit einem rekursiven Descent-Parser zu erstellen, der Java verwendet, wobei der Baum wie folgt aussieht.
Ich verwende eine modifizierte Version des Parsers wie in this Blog beschrieben. Dies ist, wo ich feststecke, wie ich nicht die endgültigen Ausdrücke extrahieren kann.
Gibt es irgendwelche Eingaben, in welche Richtung ich versuchen könnte.
Andere Beispiele betrachten Sie die folgende Bedingung.
((b > 5) & ((c < 6) | (b < 2)))
Ergebnis:
[(b > 5) , (c < 6)]
[(b > 5) , (b < 2)]
betrachten die folgende Bedingung.
((b > 5) | ((c < 6) & (b < 2)))
Ergebnis:
[(b > 5)]
[(c < 6) , (b < 2)]