Mathematica 言語の文法
Mathematica 言語の文法は組込み済みの変換規則から形作られている.文法の規則に従いテキスト形,ボックス形の式が計算可能な式に変換される.規則の中でも特にStandardFormとInputFormに対応した規則は重要で,それらが Mathematica 言語の中核を構成している.TraditionalFormに対応した規則は目的は前者と同じだが詳細で異なる.
テキスト形式で式を入力すると,演算上意味のある成分に分解される.
例えば,
と文字列を入力したら,
,
,
,
,
の各成分に分解される.
,
,
は代数記号を表すシンボルとして扱われ,
と
は演算子として扱われる.
式の演算子が式の構造を決定する.Mathematica で有効な演算子は次の表に示す種類がある.種類により演算子と被演算子の相対的な位置関係が違う.
| 接頭辞(前置形) | !x | Not[x] |
| 接尾辞(後置形) | x! | Factorial[x] |
| 接合辞(中置形) | x+y+z | Plus[x,y,z] |
| 整合辞 | {x,y,z} | List[x,y,z] |
| 複合形 | x/:y=z | TagSet[x,y,z] |
| 上方演算子 | OverHat[x] |
演算子が正確に機能するには所定の位置に被演算子が配置されていることが必要不可欠である.式に複数の演算子があるときはどの演算子が被演算子を先に取り出すかによって式の解釈に違いが出る.
例えば,
と入力したら,
と
のどちらが被演算子を先に取り出すかで,
か
のどちらにもなり得る.
まぎらわしさを解消するため,演算子には固有の優先度が割り当てられている.優先度が高ければ高いほどその演算子の被演算子がより先に取り出されることになる.
上の例の場合は,乗算
は加算
より優先度が高いので,乗算の被演算子がまず取り出される.従って,
は
ではなく,
と解釈される.
| In[1]:= |
| Out[1]= |
| In[2]:= |
| Out[2]= |
| In[3]:= |
| Out[3]= |
演算子の優先度がどうであろうと,カッコで式の要素を適切に囲うことで任意の評価順序を強制できる.
| In[4]:= |
Out[4]//FullForm= | |
| 代数記号の拡張指定 | x_,#2,e::s,等 |
| 関数適用の指定 | e[e],e@@e,等 |
| ベキ数の指定 | √e,e^e,等 |
乗算関連の演算指定
| |
| 加算関連の演算指定 | e |
| 関係記号 | e==e,e |
| ベクトル量の指定 | e |
| 論理演算記号 | |
| パターン・規則の指定 | e..,e|e,e->e,e/.e,等 |
| 純粋な関数の指定 | e& |
| 割当て記号 | e=e,e:=e,等 |
| 複文型の式の指定 | e;e |
「演算子の入力形」の表に,演算子や特殊記号が優先度の高い順に列記してあるので参照のこと.
や
等の多くの演算子の優先順位は数学で使う標準的な順位に対応して設定してある.全体の順位はなるべくカッコを使う必要がなくなるように設定してある.
| In[5]:= |
| Out[5]= |
| In[6]:= |
Out[6]//FullForm= | |
| In[7]:= |
| Out[7]= |
| In[8]:= |
Out[8]//FullForm= | |
| In[9]:= |
Out[9]//FullForm= | |
Mathematica の文法は,キーボードから直接入力できる文字・記号だけでなく,Mathematica の提供する数々の特殊文字や記号にも対応している.
,
,
等の特殊文字も標準アルファベット文字と同様に扱われるし,代数記号としても使える.また,
,
,
等の特殊記号も同じように使える.
特殊記号によっては演算子として働くものもある.例えば,
と
は中置形の演算子だし,
は前置形の演算子である.また,
と
は整合辞形の演算子である.
| In[10]:= |
Out[10]//FullForm= | |
| In[11]:= |
| Out[11]= |
特殊記号のいくつかは組み合せることによって,複合形の演算子を形成する.例えば,積分式
には
と
の特殊記号がセットで使われる.2つ合わせてはじめて機能するので,複合形の演算子といえる.
| In[12]:= |
Out[12]//FullForm= | |
| In[13]:= |
| Out[13]= |
| In[14]:= |
| Out[14]= |
式の入力は一次元的な行モード入力だけでなく,二次元的な数学表記のボックス形式で入力してもよい.二次元的な入力形態も Mathematica の文法でカバーしている.
| In[15]:= |
| Out[15]= |
| In[16]:= |
| Out[16]= |
| In[17]:= |
| Out[17]= |
| In[18]:= |
| Out[18]= |
