MBSPar
MBSPar ist ein Parser , welcher mathematische Terme auszuwerten imstande ist . Er wird nur für Entwickler interessant sein , da er eine Library darstellt , die alleine nicht lauffähig ist. Es ist vorgesehen , dass dieser Parser in andere Programme integriert wird ( z.B. MBSPlot ).
Interface
ZZ. werden folgende Funktionen als Schnittstelle zur Verfügung gestellt:
| Compute(char *) | berechnet den als Arument übergebenen Term |
| DefVar(char *v,long) | Definiert die Variable v neu oder um |
| GetiError() | Liefert Fehlercode |
| InitParser() | Initialisiert den Parser |
Diese Funktion berechnet den als Zeiger auf ein char-Array (einen String)
übergebenen Term . Dieser wird bei der Berechnung nicht verändert , kann also
später wiederverändert werden.
Der Term muss dabei den unten angeführten REGELN
entsprechen .
Dieser Funktion kommt die Aufgabe der Variablenverwaltung zu . Dazu wird ihr der Name einer Variable als Zeiger auf ein char- Array sowie der Wert der Variable übergeben .Ist die Variable noch nicht bekannt , wird sie , sofern noch Speicher verfügbar ist, neu erstellt , ansonsten mit dem Wert neu definiert.
Tritt ein Fehler bei der Berechnung auf , so liefert Compute() den Wert E_MAYBEERROR zurück . Dies besagt jedoch nur , dass ein Fehler aufgetreten sein könnte . Um zu überprüfen , ob und um welchen Fehler es sich handelt , wird die Funktion GetiError() aufgerufen : Im Fehlerfall liefert sie (als int ) den Fehlercode zurück , ansonsten E_OK.Die Fehlerkonstanten sind in der Headerdatei ParError.h definiert.
Diese Funktion dient der Initialisierung des Parsers. Sie sollte vor allen anderen MBSPar - Funktionen aufgerufen werden , allerdings ist dies , wenn keine Variablen oder Konstanten verwendet werden sollen , nicht erforderlich.
Regeln zur Beschaffenheit eines Terms
MBSPar kann Terme berechnen , die
1. algebraisch korrekt sind ,
2. folgende Rechenzeichen beinhalten
: +-*/^(potenzieren) $(radizieren)
3. folgende Funktionen beinhalten : sin()
cos() tan() log() rnd() (Zufallsgenerator)
4. folgende Konstanten beinhalten : e
(eulerscheZahl) pi(Kreiszahl)
Variablennamen können theoretisch , ebenso wie Term , maximal 255 Zeichen lang sein
Der Parser ist einfach um andere Funktionen und Konstanten erweiterbar. Siehe hierzu den Quellcode.
Bugs
Es sind keine Bugs bekannt ,allerdings zeigt sich bei der Verwendung mit MBSPlot ein unerklärliches Fehlverhalten im Bereich der Variablenverwaltung
Changelog
Dies ist ein Auszug der Changelog - Datei die diesem Programm beiliegt
Version |
Aenderungen
| Datum
========|=================================================|=======
1.0.0 | Urversion
| 11.4.2001
1.1.0 | *Fehlerbehandlung hinzugefuegt
| 20.9.2001
| (parerror.h eingefuegt , iError & GetiError)
|
| *Bug im KLA beseitigt
|
| (Klammermatrix jetzt vor rekursivem Aufruf
|
| gesichert, so dass kein Ueberschreiben )
|
| *Bug in RemBrackets() beseitigt (Term (9/(4))
|
| zuvor nicht auswertbar)
(c)ixtys 18.10.2001