Mathematica 言語の文法
Mathematica 言語の文法は組込み済みの変換規則から形作られている.文法の規則に従いテキスト形,ボックス形の式が計算可能な式に変換される.規則の中でも特に
StandardFormと
InputFormに対応した規則は重要で,それらが
Mathematica 言語の中核を構成している.
TraditionalFormに対応した規則は目的は前者と同じだが詳細で異なる.
a, xyz,    | 代数記号 |
"some text", " + " | 文字列 |
| 123.456, 3*^45 | 数値 |
| +, ->, ≠ | 演算子 |
| (*comment*) | 評価上意味のない入力文 |
Mathematica 言語における記述成分
テキスト形式で式を入力すると,演算上意味のある成分に分解される.
例えば,
xx+yy-zzzzと文字列を入力したら,
xx,
+,
yy,
-,
zzzzの各成分に分解される.
xx,
yy,
zzzzは代数記号を表すシンボルとして扱われ,
+と
-は演算子として扱われる.
式の演算子が式の構造を決定する.
Mathematica で有効な演算子は次の表に示す種類がある.種類により演算子と被演算子の相対的な位置関係が違う.
Mathematica 言語における演算子の種類と例
演算子が正確に機能するには所定の位置に被演算子が配置されていることが必要不可欠である.式に複数の演算子があるときはどの演算子が被演算子を先に取り出すかによって式の解釈に違いが出る.
例えば,
a*b+cと入力したら,
*と
+のどちらが被演算子を先に取り出すかで,
(a*b)+cか
a*(b+c)のどちらにもなり得る.
まぎらわしさを解消するため,演算子には固有の優先度が割り当てられている.優先度が高ければ高いほどその演算子の被演算子がより先に取り出されることになる.
上の例の場合は,乗算
*は加算
+より優先度が高いので,乗算の被演算子がまず取り出される.従って,
a*b+cは
a*(b+c)ではなく,
(a*b)+cと解釈される.
| Out[1]= |  |
|
//は優先度が低いので,この式では最後に適用される.
| Out[2]= |  |
|
| Out[3]= |  |
|
演算子の優先度がどうであろうと,カッコで式の要素を適切に囲うことで任意の評価順序を強制できる.
Out[4]//FullForm= |
| |  |
|
演算子の種類と例
「
演算子の入力形」の表に,演算子や特殊記号が優先度の高い順に列記してあるので参照のこと.
*や
+等の多くの演算子の優先順位は数学で使う標準的な順位に対応して設定してある.全体の順位はなるべくカッコを使う必要がなくなるように設定してある.
カッコでくくらなくても演算順位通りの評価順序になる.
| Out[5]= |  |
|
Out[6]//FullForm= |
| |  |
|
最初の要素にはカッコがないが2番目の要素と同じになる.つまり,カッコを付けても付けなくてもよい.3番目の要素はカッコでくくる必要がある.
| Out[7]= |  |
|
| どれも優先しない | x+y+z | x+y+z |
| 先頭ペア要素から評価 | x/y/z | (x/y)/z |
| 末尾ペア要素から評価 | x^y^z | x^(y^z) |
接合辞型の演算子の評価形態別分類
加算の評価順序を見てみよう.関数 Plusには引数がいくつあってもよい Flatな関数なので,グループ化は行われない.
Out[8]//FullForm= |
| |  |
|
次に,ベキ乗の評価順序を見てみる.関数 Powerは Flatではないので,要素のグループ化が行われる.
Out[9]//FullForm= |
| |  |
|
Mathematica の文法は,キーボードから直接入力できる文字・記号だけでなく,
Mathematica の提供する数々の特殊文字や記号にも対応している.

,

,

等の特殊文字も標準アルファベット文字と同様に扱われるし,代数記号としても使える.また,

,

,

等の特殊記号も同じように使える.
特殊記号によっては演算子として働くものもある.例えば,

と

は中置形の演算子だし,
¬は前置形の演算子である.また,

と

は整合辞形の演算子である.
 とは中置形の演算子である.
Out[10]//FullForm= |
| |  |
|
×は掛け算の演算子で記号 *と作用は同じである.中置形の演算子でもある.
| Out[11]= |  |
|
特殊記号のいくつかは組み合せることによって,複合形の演算子を形成する.例えば,積分式
f
x には

と

の特殊記号がセットで使われる.2つ合わせてはじめて機能するので,複合形の演算子といえる.
 と  を組み合せて積分式を構築する.
Out[12]//FullForm= |
| |  |
|
評価優先度から考えると, ...  の優先度は Timesよりも低いので,カッコは不要である.
| Out[13]= |  |
|
| Out[14]= |  |
|
式の入力は1次元的な行モード入力だけでなく,2次元的な数学表記のボックス形式で入力してもよい.2次元的な入力形態も
Mathematica の文法でカバーしている.
上付き文字のボックス要素はベキ数の指数部と解釈される.
| Out[15]= |  |
|
偏微分記号 xf はボックス形の複合形演算子を形成する.
| Out[16]= |  |
|
 はより複雑な複合形演算子の一部になっている.
| Out[17]= |  |
|
演算子としての  は +より優先度が高いことに注意.
| Out[18]= |  |
|