テキスト記述の式の解釈

ToExpression[input]文字列やボックスを解釈し式に変換する

文字列とボックスの式への変換

文字列を式に変換する.
In[1]:=
Click for copyable input
Out[1]=
StandardFormの式をボックス形式に変換する.
In[2]:=
Click for copyable input
Out[2]=
ToExpressionはボックス形式を解釈し,もとの式を再構築する.
In[3]:=
Click for copyable input
Out[3]=

式はテキストとして入力される.入力があると,実行的なToExpressionの機能が効果的に使われ,テキストが評価可能な式を表しているかどうかを解釈する.

ノートブック用フロントエンドを使っている場合,入力したセルの内容が評価のためカーネルに送られるものに限って上記の解釈作業が行われる.したがって,ノートブックで数式等を書くとき,それがカーネルに送られるものでなければ,特にカーネルの認識可能な形式でなければいけないということはない.

FullForm明示的な関数の記述形式
InputForm一次元的な行モードの記述形式
StandardForm二次元的な数学記号を直接表示編集可能にする記述形式

入力式の表記法と階層関係

同じ式を表記別に入力する.まず,FullFormで行う.
In[4]:=
Click for copyable input
Out[4]=
次にInputFormで入力する.
In[5]:=
Click for copyable input
Out[5]=
最後に,StandardFormで入力する.
In[6]:=
Click for copyable input
Out[6]=

Wolframシステムには入力テキストと式の対応関係を定義した変換規則が組み込まれている.ToExpressionを使うと,その変換規則をもとに入力テキストから式への変換が行われる.

これらの変換規則が集まりWolframシステム言語の文法を形作っている.変換規則の例として, とタイプすると関数形の式Plus[x,y]が生成されるとか, と入力すると式Power[x,y]が生成される等がある.FullFormの入力であれば解釈に使う規則は単純明快である.つまり,「式は必ず特定頭部を持ち,頭部の後には角カッコでくくった引数要素が続く」とする.入力形式がInputFormになると規則はやや複雑になる.演算子のや,関係記号であるを許容しながら被演算子(オペランド)を適切に読み取らなければいけない.StandardFormにおいては一層複雑な規則が必要になる.対処しなければいけない演算子や被演算子は単純な一次元配置のものだけでなく,分数や積分記号に見られるような二次元的な広がりを持つものもある.

以上3つの表記法FullFormInputFormStandardFormは階層的な関係でつながっている.つまり,FullFormで記述可能なものはInputFormですべて有効であるし,InputFormで有効なものはStandardFormでも有効である.

ノートブック用フロントエンドを使っているなら,StandardFormの提供するすべての機能を利用したい.使うフロントエンドがテキスト型インターフェースなら,普通はInputFormを使うしかない.

ノートブックでStandardFormを使っている場合,や注釈付きのグラフィックス等の数式を直接入力し,また,編集することができる(数学記号は左右だけでなく上下等にも広がりを持つので二次元的な記述になる).しかしInputFormでは,一次元形式しか使えない.

評価しないでその解釈形が決められるStandardForm式をコピーすると,外部アプリケーションにはInputFormとしてペーストされる.それ以外の場合は,テキストはを使った二次元構造を正確に表す線形形式でコピーされる.この線形形式をWolframシステムノートブックに再び打ち込んだ場合,自動的に二次元形式に変換される.

ToExpression[input,form]入力文 input がテキスト形式の表記で与えられたと仮定して式を生成する

他のテキスト形式からの変換

テキスト形式を使い,StandardFormとそのサブセットであるFullFormInputFormのどれでも式を記述することができる.これらの表記法に基づいた記述文は1対1の関係で確実に式に変換することができる.

テキスト形式の記述法にはTraditionalFormと呼ばれるもう1つの記述法がある.TraditionalFormは主に出力用に使われ,Wolframシステムの認識する式なら何でも表示することができる.ただし,TraditionalFormの記述はStandardFormに比べ正確性に欠ける.また,一度,TraditionalFormで式を出力したら,その式からもとの式は再構築できないときもある.

それでも,書式ToExpression[input,TraditionalForm]を使えば,TraditionalFormの記述から強制的に式を生成させることは可能である.確実な解釈は保証されない.

文字列をTraditionalFormの式として認識させる.
In[7]:=
Click for copyable input
Out[7]=
同じ式の文字列をStandardFormにすると,違った解釈がなされる.
In[8]:=
Click for copyable input
Out[8]=

計算結果をTraditionalFormで生成した場合,式の各成分に対応したボックス記述には特殊なInterpretationオブジェクト,あるいは,TraditionalForm出力からどのように式を再構築するかを指定する特殊なタグの付いた形式が含まれる.

この拡張情報の埋め込み処理はStandardFormからTraditionalFormに変換した式に対しても行われる.ただし,はじめからTraditionalFormで式を編集したり,TraditionalFormの出力式に著しい変更を施した場合は,拡張情報が失われてしまい,式の正確な解釈が困難になってしまうので注意する.