低レベル入出力の規則
式とボックスの変換用の低レベル関数
| Out[1]= |  |
| Out[2]= |  |
Mathematica には入力式の解釈と出力式の生成のために膨大な数の規則が組み込まれている.それらの規則は,特に,StandardFormにおいて矛盾がないように設定されている.したがって,StandardFormの入出力では入力用の式と出力用の式が交換可能になる.
演算子の処理規則をカスタマイズすることは非常にまれであろう.それは必要がないからである.Mathematica には多くの機能上未定義な演算子に関しても,入出力処理で使う規則がすでに組み込まれているからである.
例えば,乗算演算子の一般形を作るならば,
等の演算子に入出力処理の規則がすでに定義済みなので,それを使えば用が足りる.
出力式が

の演算子で表示される.
| Out[3]= |  |
また,入力すると

が演算子であることが認識される.
Out[4]//FullForm= |
| |  |
Format[expr]を使い特定の式を特殊書式で表示させる方法は説明したが,一度書式変換した出力式は入力式としては使えなくなってしまうので気を付ける.
必要ならば,基本的な入出力の処理規則から定義し直すことも可能である.つまり,MakeBoxesとMakeExpressionの割付け式を定義する.ただし,少しでも間違った定義をすると,矛盾してしまうので十分な注意が必要である.

が添数付きの演算子

として表示される.
| Out[6]= |  |
この記述は入力式として解釈できない.添数付きの

は

として扱われる.
Out[9]//FullForm= |
| |  |
MakeBoxesを使い規則を定義することは,基本的にFormat機能を使った変換書式の定義付けの低レベル版に相当する.両者の違いは,MakeBoxesでは引数の評価は行われないが,Formatでは行われるということにある.したがって,前者を使うときは,変換した式が評価処理を経てどうなるかは全く気にせずに変換規則を組み立てることができる.
さらに,Formatは,それを使って変換して得られた二次的な式に対して再度自動的に適用される.MakeBoxesは動作が異なり,二次的な式に変換を要するものがあっても特別にMakeBoxesを適用しない限り変換は起らない.
| • 評価最小単位の要素に分解する. |
| • スペース記号等を除去する. |
| • 評価優先順に従いボックスを構築する. |
| • スタイルボックス(StyleBox)等の評価に無関係なオブジェクトは除去する. |
| • MakeExpression用の変換規則を適用する. |
入力式に施される処理手順