Prof. Dr. J. Dankert


Mathematischer Parser

Der mathematische Parser, der in die CAMMPUS-Programme eingebunden ist, wird für C-, FORTRAN- und Turbo-Pascal-Programmierer und als C++-Klassenbibliothek zugänglich gemacht. Zur Demonstration der Möglichkeiten, die der Parser bietet, sind besonders die CAMMPUS-Programme MCALCU, MLINEQ und MATCAL geeignet.

Die Parser-Toolbox ist eine Sammlung von Unterprogrammen, die in andere Programme eingebunden werden können. Über einige wenige Interface-Routinen, die aus dem Anwender-Programm aufgerufen werden, wird die Berechnung von reellen Zahlenwerten ermöglicht, die durch arithmetische Ausdrücke (als Strings) definiert werden.

Die Ausdrücke dürfen ZAHLEN, definierte KONSTANTEN (bzw. Variablen), die mathematischen STANDARDFUNKTIONEN, öffnende und schliessende Klammern ( [ { } ] ) enthalten. Diese Elemente können durch die Symbole für die vier Grundrechenarten + - * / und das Symbol für das Potenzieren (^ oder **) verknüpft werden. Leerzeichen werden ignoriert, bei den Buchstaben wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. Die arithmetischen Operationen werden unter Beachtung der Vorrangregeln ausgeführt.

Ein arithmetischer Ausdruck, der einer Parser-Routine als String zu übergeben ist, wird einer syntaktischen Kontrolle unterzogen. Wenn er fehlerfrei ist, wird versucht, den Wert des Ausdrucks zu ermitteln, wobei weitere Kontrollen (Verwendung unerlaubter Argumente für die Standardfunktionen, Division durch Null, Überlaufgefahr, ...) durchgeführt werden. Fehler können durch einen zurückgegebenen Indikator (und den Bereich im String, in dem der Fehler entdeckt wurde) identifiziert werden.

Beispiele für korrekte arithmetische Ausdrücke:

Level 1, Level 2 und Matrix-Parser

Level 2 enthält die komplette Funktionalität des Levels 1. Die Verwendung einer Toolbox des Levels 1 empfiehlt sich, um das Programm nicht mit ungenutztem Code und sich selbst nicht mit dem Lesen nicht genutzter Information zu belasten.

Kopiermöglichkeiten:


Stand: 07. Jan 2014 14:59:07 CET

[an error occurred while processing this directive]