JpParser - Auswertung von arithmetischen Ausdrücken
Ein Parser in Java für einfache arithmetische Ausdrücke.
Der Sourcecode ist Freeware. Jeder darf die Software nach
Belieben modifizieren und nutzen.
Download: jpparser.zip
Compilation des Projekts: Aufruf von make. make ist ein Programmierwerkzeug, das bei fast
jedem Compiler mitgeliefert wird. make geht davon aus, daß eine Datei namens makefile vorhanden ist.
In makefile sind Regeln aufgelistet, die sagen, welche Dateien von welchen abhängen und wie
sie zu erzeugen sind (= mit welchen Befehlen sie erzeugt werden können).
Das Hauptprogramm ist Demo.java.
-
Um den Parser zu nutzen, wird zunächst eine Instanz davon erzeugt.
Dann werden mit addFunction arithmetische Funktionen hinzugefügt.
addFunction hat drei Parameter. Der erste gibt den Namen der Funktion an,
z.B. "sin". Der zweite gibt die Anzahl der Parameter der Funktion an.
Der dritte übergibt eine Instanz auf den Funktionsauswerter.
-
Mit der Methode setSourceCode(...) übergibt man den
zu parsenden String.
-
Nun kann man parse() aufrufen, wobei der Sourcecode übersetzt wird in
eine interne Darstellung. Genauer gesagt, es wird Code zum Betreiben eines UPN-Rechners
(UPN = umgekehrt polnische Notation, bzw. RPN = Reverse Polish Notation) erzeugt.
-
Mit der Methode rpnCalculator.run() evaluiert man die interne Darstellung
des Codes. Das kann beliebig oft geschehen.
Es wird ein Object zurückgeliefert. Dieses sollte vom Typ Double sein.
Variablen auswerten
Um Ausdrücke wie 2 * (x + y) zu berechnen, ist es es erforderlich,
Bezeichnern Werte zuzuordnen. Der hierfür vorgesehene Ort ist RpnIdentifier.execute().
Hier steht der Name des Bezeichners in der Member-Variablen identifier zur Verfügung,
den man dazu verwenden soll, um den der Variablen zugeordneten Wert zu
beschaffen, z.B. aus einer Datenbank oder einer Hashtabelle.