© Excellent backgrounds/Shutterstock.com
Java Magazin
Teil 2: Parser für mathematische Ausdrücke in Java

Baum pflanzen und ernten

Im ersten Teil haben wir uns mit der Theorie des Compilerbaus auseinandergesetzt. Nun wollen wir es ganz praktisch angehen und einen einfachen mathematischen Funktionsparser bauen. Dieser enthält kompakt alle wesentlichen Elemente eines Compilers. Ein solcher Funktionsparser dient nicht nur als Lehrbeispiel, sondern hat auch praktische Anwendungen. Sehen Sie selbst!

Veikko Krypczyk, Elena Bochkor


ArtikelserieTeil 1: Theoretische Grundlagen des CompilerbausTeil 2: Parser für mathematische Ausdrücke in Java

Im ersten Teil der zweiteiligen Artikelserie haben wir die Basics des Compilerbaus erörtert. Die Hauptkomponente eines jeden Compilers ist der Parser, dessen Aufgabe darin besteht, den Quelltext zu analysieren und daraus einen Syntaxbaum zu erstellen. Dieser Syntaxbaum spiegelt die Struktur des Quelltexts wider. Hat man den Quelltext analysiert, kann man ihn entsprechend weiterverarbeiten. Im vorliegenden zweiten Teil werden wir die Angelegenheit praktisch angehen. Als Beispiel für einen Compiler implementieren wir einen mathematischen Formelparser, der in der Lage ist, mathematische Ausdrücke, z. B. Formeln und Gleichungen, in ihre Bestandteile zu zerlegen. Der entstandene Syntaxbaum dient für Berechnungen und eine weitere automatisierte Verarbeitung des mathematischen Ausdrucks. Dabei ist dem Programm der mathematische Ausdruck im Vorfeld nicht bekannt, sondern die Gleichung wird erst zur Laufzeit zur Verfügung gestellt, beispielsweise durch Benutzereingabe.

Was zunächst nach strenger Theorie klingt, hat bei näherer Betrachtung vielfältige Anwendungen, z. B. beim symbolischen Rechnen: Da der Computer nach der Analyse die Gleichung versteht, kann er sie auch weiterverarbeiten. Beispielsweise kann er Gleichungen vereinfachen oder in eine bestimmte Form überführen. Diese Technik wird in so genannten Computeralgebrasystemen (CAS) eingesetzt. CAS können mit mathematischen Ausdrücken rechnen. Die Besonderheit ist, dass sie mit den Symbolen des Ausdrucks arbeiten und nicht nur Zahlenwerte berechnen. Beispielsweise können CAS Ableitungen oder Integrale einer Ausgangsfunktion automatisch bestimmen, und auch bei der grafischen Darstellung von Formeln spielen sie eine Rolle. Um Formeln in Textverarbeitungen oder Grafikprogrammen korrekt in mathematischer Syntax darzustellen, muss das Programm dessen mathematische Struktur zunächst erkennen. Anhand des erkannten Aufbaus der Gleichung kann es den mathematischen Ausdruck dann grafisch darstellen, ein Beispiel zeigt Abbildung 1. Die Schreibweise (x^2+4*x-2)/(x-1) wird dabei in die abgebildete mathematische Notation überführt.

Abb. 1: Darstellung einer mathematischen Formel in korrekter Notation

Formelparser sind die Grundlage für das Rechnen mit mathematischen Ausdrücken, die erst zur Laufzeit bekannt werden. Sie sind damit Bestandteile vieler Programme für Technik und Naturwissenschaft. Im Übrigen sind Tabell...

Java Magazin
Teil 2: Parser für mathematische Ausdrücke in Java

Baum pflanzen und ernten

Im ersten Teil haben wir uns mit der Theorie des Compilerbaus auseinandergesetzt. Nun wollen wir es ganz praktisch angehen und einen einfachen mathematischen Funktionsparser bauen. Dieser enthält kompakt alle wesentlichen Elemente eines Compilers. Ein solcher Funktionsparser dient nicht nur als Lehrbeispiel, sondern hat auch praktische Anwendungen. Sehen Sie selbst!

Veikko Krypczyk, Elena Bochkor


ArtikelserieTeil 1: Theoretische Grundlagen des CompilerbausTeil 2: Parser für mathematische Ausdrücke in Java

Im ersten Teil der zweiteiligen Artikelserie haben wir die Basics des Compilerbaus erörtert. Die Hauptkomponente eines jeden Compilers ist der Parser, dessen Aufgabe darin besteht, den Quelltext zu analysieren und daraus einen Syntaxbaum zu erstellen. Dieser Syntaxbaum spiegelt die Struktur des Quelltexts wider. Hat man den Quelltext analysiert, kann man ihn entsprechend weiterverarbeiten. Im vorliegenden zweiten Teil werden wir die Angelegenheit praktisch angehen. Als Beispiel für einen Compiler implementieren wir einen mathematischen Formelparser, der in der Lage ist, mathematische Ausdrücke, z. B. Formeln und Gleichungen, in ihre Bestandteile zu zerlegen. Der entstandene Syntaxbaum dient für Berechnungen und eine weitere automatisierte Verarbeitung des mathematischen Ausdrucks. Dabei ist dem Programm der mathematische Ausdruck im Vorfeld nicht bekannt, sondern die Gleichung wird erst zur Laufzeit zur Verfügung gestellt, beispielsweise durch Benutzereingabe.

Was zunächst nach strenger Theorie klingt, hat bei näherer Betrachtung vielfältige Anwendungen, z. B. beim symbolischen Rechnen: Da der Computer nach der Analyse die Gleichung versteht, kann er sie auch weiterverarbeiten. Beispielsweise kann er Gleichungen vereinfachen oder in eine bestimmte Form überführen. Diese Technik wird in so genannten Computeralgebrasystemen (CAS) eingesetzt. CAS können mit mathematischen Ausdrücken rechnen. Die Besonderheit ist, dass sie mit den Symbolen des Ausdrucks arbeiten und nicht nur Zahlenwerte berechnen. Beispielsweise können CAS Ableitungen oder Integrale einer Ausgangsfunktion automatisch bestimmen, und auch bei der grafischen Darstellung von Formeln spielen sie eine Rolle. Um Formeln in Textverarbeitungen oder Grafikprogrammen korrekt in mathematischer Syntax darzustellen, muss das Programm dessen mathematische Struktur zunächst erkennen. Anhand des erkannten Aufbaus der Gleichung kann es den mathematischen Ausdruck dann grafisch darstellen, ein Beispiel zeigt Abbildung 1. Die Schreibweise (x^2+4*x-2)/(x-1) wird dabei in die abgebildete mathematische Notation überführt.

Abb. 1: Darstellung einer mathematischen Formel in korrekter Notation

Formelparser sind die Grundlage für das Rechnen mit mathematischen Ausdrücken, die erst zur Laufzeit bekannt werden. Sie sind damit Bestandteile vieler Programme für Technik und Naturwissenschaft. Im Übrigen sind Tabell...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang