Ausdruck zur Laufzeit auswerten

Status
Nicht offen für weitere Antworten.

Sanix

Top Contributor
Ich möchte dem User die Möglichkeit geben, Script - Files anzulegen. In diesen kann er Bedingungen reinschreiben.
Zum Beispiel var1 > var2.
Kann ich dies irgendwie zur Laufzeit auswerten lassen? Oder muss ich das mühsam machen à la

Falls var1 im Ausdruck vorhanden, dann prüfe ob var2 im Ausdruck vorhanden, falls Vergleichszeichen = ">" etc.
So dass ich schlussendlich zig if Klauseln habe?
 

Sanix

Top Contributor
Ja das habe ich gesehen. Nur habe ich auch im Netz gesucht, es gibt X Parser aber ich habe nur welche gefunden um mathematische Ausdrücke zu parsen.
Ich will aber eigentlich mathematische und logische Operationen durchführen. Aber ich denke mit Benis Parser wurde mir viel Arbeit abgenommen und ich brauche ihn "nur" noch zu erweitern.
 
S

SlaterB

Gast
wenn man will, kann man sich alles zurechtdefinieren ;) ,
ich hatte mich auf Zitat Sanix ' mathematische und logische Operationen ' bezogen
 

Sanix

Top Contributor
Ok, ich hatte nicht richtig geschaut. JEP unterstützt die boolsche Algebra. Dafür sehe ich gerade die Lizenz kostet 700$...
 

byte

Top Contributor
Wie komplex sollen die Ausdrücke denn sein? Für einfache Ausdrücke à la LHS x OPER x RHS kann man sich sowas recht schnell selbst zusammenbauen. Wenn man die dann noch zu komplexen Ausdrücken verknüpfen können soll, dann wirds natürlich schon schwieriger.
 

moormaster

Top Contributor
Das dürfte doch aber nicht allzuproblematisch sein, einen Parser für die Grundrechenarten und ein paar logische Operatoren zu bauen?

Dazu muss man sich nur überlegen, dass die Operatoren eine gewisse Priorität besitzen (z.B. wird * vor + berechnet). Somit kann man aus jedem Ausruck eine Baumstruktur erhalten:


z.B.

3+4*(5+1)

Der Ausdruck in Klammern hat die höchste Priorität und wird als erstes ausgewertet, danach folgt * und zum Schluss +:

D.h. man muss den Ausdruck parsen, um daraus einen binären Baum zu erhalten, der in diesem Fall so aussieht:
Code:
    +
3         *
       4      +
             5   1

Um den Ausdruck auszuwerten, muss also 3 + [Ausdruck aus dem rechten Teilbaum] berechnet werden.

Der rechte Teilbaum schreibt eine Operation 4 * [weiterer rechter Teilbaum] vor.

Somit bleibt zum Schluss nur noch die Auswertung des Teilbaums für 5+1.


Allgemein kann man so einen Baum mit einem einfachen rekursiven Algorithmus auswerten:
Der Knoten beschreibt die Operation auf den Werten des linken und des rechten Teilbaums bzgl. des jeweiligen Knotens.
Die Teilbäume bestehen entweder nur aus einem Blatt (dann kann dort der Wert direkt abgelesen werden) oder sie bestehen aus weiteren Knoten, die erst noch ausgewertet werden müssen (rekursiver Funktionsaufruf):


D.h. du solltest dich am besten erstmal mit binären Bäumen beschäftigen, damit du weisst, was das genau ist und wie man das letztendlich implementieren kann. Danach kannst du dir dann Gedanken machen, wie du aus einer Zeichenkette den entsprechenden Baum bekommst, welcher dann leicht auszuwerten ist.
 

Sanix

Top Contributor
Ich habe jetzt JEPLight verwendet, welches unter GnuGPL released ist und auch schon recht viel kann.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Reguläre Ausdruck Java Basics - Anfänger-Themen 6
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
K Warum zeigt dieser reguläre Ausdruck true an? Java Basics - Anfänger-Themen 1
berserkerdq2 Wie würde man einen regulären Ausdruck in Java schreiben, der prüft, dass zwei bestimtme Zahlen nicht nebeneinadner sind? Java Basics - Anfänger-Themen 3
P Einfacher regulärer Ausdruck (RegEx) für E-Mail-Adressen Java Basics - Anfänger-Themen 2
KogoroMori21 Boolscher Ausdruck Java Basics - Anfänger-Themen 15
C Ausdruck Java Basics - Anfänger-Themen 4
E Boolescher Ausdruck Java Basics - Anfänger-Themen 1
M Regex-Ausdruck: Alle Zeichen bis auf ein bestimmtes erlauben (p{L}) Java Basics - Anfänger-Themen 5
G Warum ist hier ein Lamda-Ausdruck möglich Java Basics - Anfänger-Themen 2
O Lambda Ausdruck mit Wildcard einschränken Java Basics - Anfänger-Themen 5
F Ist das ein korrekter Regex-Ausdruck? Java Basics - Anfänger-Themen 12
B Interface Java Lambda Ausdruck. Java Basics - Anfänger-Themen 11
B Regulärer Ausdruck Java Basics - Anfänger-Themen 12
G Boolschen Ausdruck true machen Java Basics - Anfänger-Themen 2
F Ausdruck wirft unerwarteten Error Java Basics - Anfänger-Themen 2
D Regulärer Ausdruck Java Basics - Anfänger-Themen 8
K Regulären Ausdruck in Java abbilden Java Basics - Anfänger-Themen 4
B Regulärer Ausdruck Java Basics - Anfänger-Themen 3
M Lambda - Ausdruck zu Beschreibung erstellen Java Basics - Anfänger-Themen 7
D Java Ausdruck erzeugen / Formular Java Basics - Anfänger-Themen 4
B Boolscher Ausdruck für mich unverständlich Java Basics - Anfänger-Themen 7
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
J Frage zu bestimmtem Ausdruck Java Basics - Anfänger-Themen 2
G Lambda Ausdruck: Welche Methode ist die Richtige? Java Basics - Anfänger-Themen 1
C Auswertung Ausdruck mit Punknotation + Objekt als Parameter Java Basics - Anfänger-Themen 3
M Arithemtischer Ausdruck unklar Java Basics - Anfänger-Themen 2
C Regulärer Ausdruck matched nicht Java Basics - Anfänger-Themen 2
A Lässt sich dieser Ausdruck irgendwie einfacher schreiben? Java Basics - Anfänger-Themen 4
H Regulären Ausdruck automatisch erstellen Java Basics - Anfänger-Themen 5
T Erste Schritte Im arithm. Ausdruck Zeichen trennen? Java Basics - Anfänger-Themen 13
D Boolescher Ausdruck - Problem Java Basics - Anfänger-Themen 6
B Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 6
M regulärer Ausdruck funktioniert nicht Java Basics - Anfänger-Themen 6
R Suche Regex Ausdruck für HTML Java Basics - Anfänger-Themen 11
E Hilfe bei einem Regulären Ausdruck Java Basics - Anfänger-Themen 7
X Regulärer Ausdruck für einen FileNameFilter Java Basics - Anfänger-Themen 2
S Einfaches Regulaerer Ausdruck Problem Java Basics - Anfänger-Themen 7
S regulärer Ausdruck HTML Java Basics - Anfänger-Themen 5
turmaline Ein regulärer Ausdruck für HTML-Sonderzeichen Java Basics - Anfänger-Themen 3
3 3. Element mit regulären Ausdruck suchen Java Basics - Anfänger-Themen 12
M regex-Ausdruck irgendein Buchstabe 1 mal Java Basics - Anfänger-Themen 8
S Was bedeutet dieser ausdruck? Java Basics - Anfänger-Themen 9
S String nach Ausdruck durchsuchen und Folgeattribut ausgeben Java Basics - Anfänger-Themen 3
H Ausdruck vereinfachen Java Basics - Anfänger-Themen 8
J Datentypen String splitten ohne festen Ausdruck Java Basics - Anfänger-Themen 8
H while schleife ohne ausdruck Java Basics - Anfänger-Themen 7
H Datei durchsuchen mit Regex-Ausdruck Java Basics - Anfänger-Themen 14
O Gibt es dafür einen regulären Ausdruck? Java Basics - Anfänger-Themen 9
B regulärer Ausdruck mit Metazeichen Java Basics - Anfänger-Themen 4
O RegEx-Ausdruck gesucht Java Basics - Anfänger-Themen 2
C bedingten ausdruck zu if-anweisung Java Basics - Anfänger-Themen 3
D regulärer Ausdruck: ^ $ Java Basics - Anfänger-Themen 6
O Mal wieder ein Regex-Ausdruck gesucht! Java Basics - Anfänger-Themen 5
F Regulärer Ausdruck warum false ? Java Basics - Anfänger-Themen 3
O Regulärer Ausdruck gesucht Java Basics - Anfänger-Themen 2
S Regulärer Ausdruck - alles was keine Zahl ist entfernen Java Basics - Anfänger-Themen 2
S regulärer ausdruck zum zählen eines wortes Java Basics - Anfänger-Themen 4
K Regulärer Ausdruck Java Basics - Anfänger-Themen 7
R Regulären Ausdruck geht nicht Java Basics - Anfänger-Themen 2
L Regulärer Ausdruck Java Basics - Anfänger-Themen 2
J Bitte um Erklärung für einen Java-Ausdruck Java Basics - Anfänger-Themen 8
M regulärer Ausdruck Java Basics - Anfänger-Themen 3
T Wie sieht ein '.' im regulären Ausdruck aus? Java Basics - Anfänger-Themen 2
G Wie erstellt man komplexen regulären Ausdruck Java Basics - Anfänger-Themen 5
G Boolscher Ausdruck Java Basics - Anfänger-Themen 11
R Reguläre Ausdruck definieren Java Basics - Anfänger-Themen 3
G Substrings in regulärem Ausdruck Java Basics - Anfänger-Themen 2
F Boolescher Ausdruck (String) in boolean konvertieren Java Basics - Anfänger-Themen 5
F Der "super" Ausdruck Java Basics - Anfänger-Themen 4
G Was zum Teufel ist denn so ein Ausdruck"variabel : vari Java Basics - Anfänger-Themen 8
X Regulärer Ausdruck Java Basics - Anfänger-Themen 6
E regulärer Ausdruck -> wo ist der Fehler Java Basics - Anfänger-Themen 9
G regulärer Ausdruck alles was zwischen ' ' steht Java Basics - Anfänger-Themen 4
P Zeile als regulärer Ausdruck Java Basics - Anfänger-Themen 5
G Regulärer Ausdruck: gefunden und gleichzeitig nicht gefunden Java Basics - Anfänger-Themen 5
M Scanner soll nach einem Ausdruck splitten Java Basics - Anfänger-Themen 2
R Ausdruck Java Basics - Anfänger-Themen 2
M regulärer Ausdruck zum Parsen einer E-Mail Signatur Java Basics - Anfänger-Themen 16
T Regulärer Ausdruck Java Basics - Anfänger-Themen 4
J Was sagt mir dieser Ausdruck? Java Basics - Anfänger-Themen 9
G regulärer ausdruck zur überprüfung von ip-adresse? Java Basics - Anfänger-Themen 13
S Ausdruck? Java Basics - Anfänger-Themen 5
Detlef Bosau Nachladen von Klassen zur Laufzeit Java Basics - Anfänger-Themen 24
E Alter (Laufzeit) berechnen Java Basics - Anfänger-Themen 11
W Array zur Laufzeit bearbeiten? Java Basics - Anfänger-Themen 31
D Objekterzeugungen mit zur Laufzeit variierenden Attributen Java Basics - Anfänger-Themen 7
J GroupLayout zur Laufzeit erweitern Java Basics - Anfänger-Themen 1
B Übersetzungszeit und Laufzeit Java Basics - Anfänger-Themen 3
amgadalghabra Die vier Sortieralgorithmen die durchschnittliche Laufzeit in Millisekunden Java Basics - Anfänger-Themen 37
U Dijkstra Algorithmus Laufzeit Java Basics - Anfänger-Themen 3
S Laufzeit Quicksort wenn alle Elemente gleich sind Java Basics - Anfänger-Themen 4
L Anzahl der Elemente key in einem Array mit log(N) Laufzeit Java Basics - Anfänger-Themen 4
S Interpreter-Fehler Endlosschleife zur Laufzeit aber warum? Java Basics - Anfänger-Themen 15
J JavaFX Label,Button zur Laufzeit Java Basics - Anfänger-Themen 30
H Laufzeit Java Basics - Anfänger-Themen 11
C Laufzeit eines Sortier-Algorithmus ermitteln Java Basics - Anfänger-Themen 4
L Objekt Typ zur Laufzeit ermitteln Java Basics - Anfänger-Themen 1
J Datei im Package zur Laufzeit editieren Java Basics - Anfänger-Themen 1
M Quicksort Laufzeit langsam Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben