This is documentation for Mathematica 4, which was
based on an earlier version of the Wolfram Language.
View current documentation (Version 11.1)

 Documentation /  Mathematica /  Das Mathematica Buch /  Die Prinzipien von Mathematica /  Textförmige Eingabe und Ausgabe /

Die Darstellung textueller FormenAbgekürzte und flache Ausgabe

2.8.4 Die Interpretation textueller Formen

Wandlung von Zeichenketten oder Boxen in Ausdrücke

In diesem Fall wird eine Zeichenkette als ein Ausdruck interpretiert.

In[1]:= ToExpression["2 + 3 + x/y"]

Out[1]=

Hier wird eine Box-Struktur erzeugt, die der textuellen Form eines Ausdrucks in StandardForm entspricht.

In[2]:= ToBoxes[2 + x^2, StandardForm]

Out[2]=

ToExpression interpretiert diese Box-Struktur und liefert wieder den ursprünglichen Ausdruck.

In[3]:= ToExpression[%]

Out[3]=

Mathematica setzt in jeder Mathematica-Session im Grunde ToExpression ein, um die textuelle Form Ihrer Eingabe in einen Ausdruck zu überführen, der sich evaluieren läßt.

Wenn Sie die Notebook-Benutzeroberfläche für Mathematica einsetzen, dann erfolgt die Interpretation nur dann, wenn der Zellinhalt zum Kern geschickt wird, zum Beispiel zur Evaluierung. Das heißt, innerhalb eines Notebooks ist es nicht erforderlich, daß die von Ihnen konstruierten textuellen Formen sinnvollen Mathematica-Ausdrücken entsprechen. Das ist nur dann notwendig, wenn Sie diese Formen zum Kern senden wollen.

Die Hierarchie der Formen für normale Mathematica-Eingabe

Hier ist ein in FullForm eingegebener Ausdruck.

In[4]:= Plus[1, Power[x, 2]]

Out[4]=

Hier derselbe Ausdruck, eingegeben in InputForm.

In[5]:= 1 + x^2

Out[5]=

Und hier ist der Ausdruck, diesmal eingegeben in StandardForm.

In[6]:=

Out[6]=

Mathematica verfügt über einen Satz Standardregeln, nach denen ToExpression textuelle Formen in Ausdrücke wandelt.

Diese Regeln definieren die Grammatik von Mathematica. Sie besagen zum Beispiel, daß x + y als Plus[x, y] und als Power[x, y] interpretiert werden soll. Erfolgt die Eingabe in FullForm, dann lassen sich die Regeln ohne weiteres anwenden: Jeder Ausdruck besteht dann einfach aus einem Kopf, auf den eine in eckigen Klammern eingeschlossene Sequenz von Elementen folgt. Die Regeln für InputForm sind etwas komplizierter: Sie erlauben Operatoren wie +, = und ->, und sie verstehen die Bedeutung von Ausdrücken, in denen diese Operatoren zwischen Operanden auftreten. Für die StandardForm werden noch kompliziertere Regeln eingesetzt, die erlauben, daß Operatoren und Operanden nicht nur in einer eindimensionalen Sequenz, sondern in einer zweidimensionalen Struktur angeordnet sind.

Mathematica ist so konstruiert, daß FullForm, InputForm und StandardForm eine strikte Hierarchie bilden: Alles, was Sie in FullForm eingeben, wird auch in InputForm funktionieren, und alles, was Sie in InputForm eingeben können, wird auch in StandardForm funktionieren.

Wenn Sie eine Notebook-Benutzeroberfläche für Mathematica einsetzen, dann werden Sie in der Regel alle Eigenschaften der StandardForm nutzen wollen. Wenn Sie eine textorientierte Schnittstelle einsetzen, dann werden Sie in der Regel nur die Eigenschaften der InputForm nutzen können.

Zwei Versionen von InputForm

Wenn Sie in einem Mathematica-Notebook StandardForm einsetzen, können Sie zweidimensionale Formen wie direkt eingeben. Aber InputForm erlaubt nur eindimensionale Formen. Aber auch wenn der in InputForm eingegebene Text eindimensional sein muß, so kann er doch eine zweidimensionale Form darstellen. So repräsentiert zum Beispiel \!\(x\^2\) die zweidimensionale Form und wird von Mathematica als Power[x, 2] interpretiert.

Hier ist normale eindimensionale Eingabe.

In[7]:= x^2 + 1/y

Out[7]=

Hier ist Eingabe, die eine zweidimensionale Form darstellt.

In[8]:= \!\( x\^2 + 1\/y \)

Out[8]=

Obwohl die Eingaben unterschiedlich waren, sind die auf den zwei letzten Zeilen erhaltenen Ausdrücke genau dieselben.

In[9]:= % == %%

Out[9]=

Wenn Sie eine eindimensionale Form aus Mathematica herauskopieren, so erhalten Sie sie normalerweise in \!\( ... \)-Form. Wenn Sie diese eindimensionale Form zurück in ein Mathematica-Notebook einfügen, wird sie automatisch in zweidimensionale Form „einrasten". Wenn Sie eine \!\( ... \)-Form einfach so in ein Notebook eintippen, können Sie mit dem Menübefehl In 2D-Format umwandeln (Make 2D) erreichen, daß sie in eine zweidimensionale Form gewandelt wird.

Importieren aus anderen textuellen Formen

Mit StandardForm und den Untermengen FullForm und InputForm läßt sich jeder Mathematica-Ausdruck präzise in textueller Form darstellen. Und eine derartige textuelle Form kann immer unmißverständlich in den Ausdruck konvertiert werden, den sie darstellt.

TraditionalForm ist ein Beispiel einer textuellen Form, die hauptsächlich für die Ausgabe gedacht ist. Jeder Mathematica-Ausdruck kann in TraditionalForm dargestellt werden. TraditionalForm hat jedoch nicht die Präzision von StandardForm. Deshalb gibt es im allgemeinen keinen eindeutigen Weg, aus einer TraditionalForm-Darstellung den Ausdruck zu rekonstruieren, den sie darstellt.

Dennoch versucht ToExpression[eingabe, TraditionalForm] zumindest, Text in TraditionalForm als Ausdruck zu interpretieren.

Dies interpretiert eine Zeichenkette als TraditionalForm-Eingabe.

In[10]:= ToExpression["f(6)", TraditionalForm]

Out[10]=

In StandardForm würde die Zeichenkette ein Produkt von Termen bedeuten.

In[11]:= ToExpression["f(6)", StandardForm]

Out[11]=

Wird als Ergebnis einer Berechnung TraditionalForm-Ausgabe erzeugt, so wird der eigentliche Satz der Boxen, die die Ausgabe bilden, in der Regel spezielle InterpretationBox- und TagBox-Objekte enthalten, die angeben, wie ein Ausdruck aus der TraditionalForm-Ausgabe rekonstruiert werden kann.

Dasselbe gilt für TraditionalForm, die durch explizite Konvertierung von StandardForm erhalten wurde. Wenn Sie jedoch ausgiebig TraditionalForm bearbeiten oder sie vollständig neu eingeben, dann wird Mathematica versuchen müssen, sie ohne den Vorteil jeglicher zusätzlicher eingebetteter Information zu interpretieren.

Die Darstellung textueller FormenAbgekürzte und flache Ausgabe