boolean-expression-parser in java
Gibt es irgendwelche java-Bibliotheken und Verfahren zur Analyse von booleschen Ausdrücken Stückwerk?
Was ich meine ist mit einem Ausdruck wie diesem:
T && ( F || ( F && T ) )
Könnte es gebrochen werden nach unten in einen Ausdruck-Baum um zu zeigen, welche token geführt, dass die 'F' - Wert so (vielleicht sowas in der Art):
T && <- rhs false
( F || <- rhs false
( F && T ) <- eval, false
)
Ich versuche zu kommunizieren Boolesche-Ausdruck-Auswertungen für nicht-Programmierer. Ich stocherte mit Anlr, aber ich konnte es nicht, viel zu tun (es scheint ein bisschen eine Lernkurve).
Habe ich nichts dagegen, es zu schreiben, mich selbst, aber ich möchte lieber nicht das Rad neu erfinden.
InformationsquelleAutor der Frage javamonkey79 | 2012-08-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich codiert diese mit Javaluator.
Es ist nicht genau die Ausgabe, die du suchst, aber ich denke, es könnte ein Startpunkt.
Hier ist die Ausgabe:
InformationsquelleAutor der Antwort Jean-Marc Astesana
Man könnte dies mit MVEL oder JUEL. Beide sind Ausdruck, Sprache, Bibliotheken, Beispiele unter Verwendung von MVEL.
Beispiel:
Prints:
falsche
Wenn Sie buchstäblich verwenden möchten 'T' und 'F' können Sie dies tun:
Prints:
falsche
InformationsquelleAutor der Antwort Dev
Habe ich vor kurzem zusammen eine Bibliothek in Java, die speziell zum manipulieren von booleschen Ausdrücken: jbool_expressions.
Enthält es ein tool zu analysieren, Ausdrücke aus der string-input:
Können Sie auch tun, einige relativ einfache Vereinfachung:
gibt
Wenn Sie wollte, Schritt durch die Zuordnung könnte dann Werte zuweisen. Für das Beispiel hier,
zeigt
und Sie konnte es lösen durch die Zuordnung von B.
zeigt
Nicht 100% das, was Sie forderten, aber hoffe es hilft.
InformationsquelleAutor der Antwort bpodgursky
Check-out BeanShell. Es hat Ausdruck analysieren, akzeptiert Java-ähnlichen syntax.
EDIT:es sei denn, Sie versuchen tatsächlich zu analysieren
T && F
wörtlich, obwohl man könnte dies in BeanShell die Verwendung der Literaletrue
undfalse
.InformationsquelleAutor der Antwort Brian
mXparser Griffe Boolesche Operatoren - finden Sie einige Beispiele
Beispiel 1:
Ergebnis 1:
Beispiel 2:
Ergebnis 2:
Für mehr details bitte Folgen Sie mXparser tutorial.
Beste Grüße
InformationsquelleAutor der Antwort Leroy Kegan