入力文法
文字の入力
| • 直接入力(例: |
| • 完全名で入力(例: |
| • エイリアスで入力(例:EscaEsc)(注:ノートブックフロントエンドのみ有効) |
| • パレットからコピー(注:ノートブックフロントエンドのみ有効) |
| • 文字コードで入力(例: |
すべての印字可能ASCII文字はキーボードで直接入力できる.これらアルファベットや数字以外の文字には明示的に名前が与えられていて,キーボードにない文字でも入力できるようになっている.
|
|
カーネルへ入力されるすべての文字は,その文字が送られてくるストリームのオプションCharacterEncodingの設定に従い解釈される.
文字コードはToCharacterCodeを使い取得できる.得られる文字コード番号はUnicode規格とその拡張規格に準じる.
8ビット形式の文字には256以下のコードが,16ビット文字には256から65535の文字コードが与えられている.Mathematica では約900個の文字に対して明示的に名前が与えられている.それ以外の文字は文字コードで入力する.
| \\ | バックスラッシュ(10進コード:92) |
| \ | シングルスペース(10進コード:32) |
| \" | ダブルクォート(10進コード:34) |
| \b | バックスペースまたはCtrl+H(10進コード:8) |
| \t | タブまたはCtrl+I(10進コード:9) |
| \n | 改行文字またはCtrl+J(10進コード:10,完全名 |
| \f | 改ページ文字またはCtrl+L(10進コード:12) |
| \r | リターンまたはCtrl+M(10進コード:13) |
| \000 | ヌル文字(コード:0) |
表記法と文法
標準入力にかかわる Mathematica の文法は,InputForm(入力形)とStandardForm(標準形)でデフォルトで使用されているものである.文法は,MakeExpression[expr, form]で定義を作ることにより変更できる.
オプションを設定することで,ノートブックのセルやストリームがどの形式の入力を受け付けるかを指定できる.
例えば,TraditionalForm(慣用形)における入力の文法は,InputForm(入力形)やStandardForm(標準形)の文法とは異なっている.
つまるところ,入力の文法は文字列やボックスを式としてどう解釈するかを定めたものである.例えば,ノートブック用フロントエンドにおいてボックスが入力されるとき,ボックスの解釈を変更するInterpretationBoxやTagBoxを表示しないようにすることができるのである.
文字列
文字列には8ビットおよび16ビット形式の文字が使える.文字名や文字コードで入力した場合,その文字は直接入力したときと全く同様に扱われる.
ノートブックフロントエンドでは,Mathematica に保存された文字列がペーストされたのと同じように再生できるように,デフォルトで文字列にペーストされたテキストには自動的に適当な \ 記号が挿入される.
の中ではバックスラッシュを使ったボックス記述を使用することができる.
StringExpressionオブジェクトはパターン要素のような記号的なコンストラクトが入っている文字列を表すのに使うことができる.
シンボル名とコンテキスト
| name | シンボル名 |
| `name | 現行コンテキストにあるシンボル |
| context`name | 指定したコンテキストにあるシンボル |
| context` | コンテキスト名 |
| context1`context2` | 複合コンテキスト名 |
| `context` | 現在のコンテキストに相対的なコンテキスト |
シンボル名やコンテキストには,Mathematica で文字や文字的な記号として扱われるものならどれも使用可能である.また,名前の先頭以外では数字も使用できる.コンテキストはバッククォート(
)で終らなければならない.
数
| digits | 整数 |
| digits.digits | 近似数 |
| base^^digits | 整数,任意の底 |
| base^^digits.digits | 近似数,任意の底 |
| mantissa*^n | 科学表記 (mantissa× |
| base^^mantissa*^n | 科学表記,任意の底 (mantissa× |
| number` | 近似数,機械精度 |
| number`s | 近似数,任意精度,精度 |
| number``s | 近似数,任意精度,確度 |
〜
の底の数は
の形式で入力できる.その際底自体は10進数で与える.
より大きい底を使うときは,追加の桁に
-
または
-
のアルファベットを使う.この場合大文字と小文字の区別はない.浮動点数を表すには digits に小数点(
)を付加する.
科学表記法では,仮数部 mantissa はナンバーマーク(
)を使用することができる.指数部
は10進整数で指定する.
の書式において,精度
は10進値で与える.ただし,10進数における桁数ではなく,指定された底における桁数で指定する.
近似値
はその桁数がCeiling[$MachinePrecision]+1以下の場合は機械精度であると解釈される.桁数がこれより多ければ,
は任意精度の数と解釈される.
の確度は小数点の右側の桁数であり,精度はLog[10, Abs[x]]+Accuracy[x]であると解釈される.
0``s の形式で入力された数は精度が0,確度が
であるとみなされる.
ブラケット型オブジェクト
ブラケット型オブジェクトでは左右を特別な区切り記号で区切り,その範囲を指定する.Mathematica への入力のどこにでも挿入可能である.また,ネストさせてもよい.
ブラケット型オブジェクトの区切り記号は一種の挿入句的な演算子である.このとき,ブラケットはその内容を完全にくくってしまうので,演算優先度を割り当てる必要はない.
コメント文はネストしても,また,何行に渡っても構わない.また,8ビットと16ビット形式の文字を混ぜて使ってもよい.
カッコの中には完全独立な式がなければならない.
や
は不正となる.
| {e1,e2,...} | List[e1,e2,...] |
| AngleBracket[e1,e2,...] | |
| Floor[expr] | |
| Ceiling[expr] | |
| BracketingBar[e1,e2,...] | |
| DoubleBracketingBar[e1,e2,...] | |
| \(input\) | ボックスの入力,またはボックスのグループ化 |
にはいくつの要素が含まれていてもよく,各要素はコンマで区切る.
は要素なしのリスト,つまりList[]を表す.
普通のコンマの代りに隠しコンマ
を使うことができる.
は表示されないが,役割はコンマと全く同じである.
区切り記号に特殊文字を使用する場合,記号の名前には
と
が使われる慣例になっている.
一次元的な文字列でボックス入力を行うには
を使う.一番外側の
の内側と外側では使用される文法に相違がある.詳しくは「ボックスの入力」を参照のこと.
頭部付きのブラケット型オブジェクトでは頭部以外の被演算子が明示的に区切られている.また,頭部の有効範囲を指定するために演算の優先順位が割り当てられなければならない.
例えば,
の優先度は非常に高いので,
はNot[h[e]]と解釈される.しかし,
は,
に解釈されてしまう.
二次元の入力形
|
|
GridBoxを用いて表した配列はリストのリストとして解釈される.たとえGridBoxが1行しか持たない場合でも,
の形に解釈がされる.
|
|
や
のように被演算子の範囲が演算子により覆われている場合,優先順位に関して特に考える必要はない.
や
のような形式の場合,左方向の優先順位が判明していなければいけない.そのため,そのような形の優先順位が上記の表に示されている.
ボックスの入力
コントロールキー
| Ctrl+2 または Ctrl+@ | 平方根 |
| Ctrl+5 または Ctrl+% | 反対位置に移動(例:下付き文字から上付き文字へ移る) |
| Ctrl+6 または Ctrl+^ | 上付き文字 |
| Ctrl+7 または Ctrl+& | 真上付き文字 |
| Ctrl+9 または Ctrl+( | テキストの途中で新たなセルを開始する |
| Ctrl+0 または Ctrl+) | テキストの途中で新たなセルを終了する |
| Ctrl+- または Ctrl+_ | 下付き文字 |
| Ctrl+4 または Ctrl+$ | 真下付き文字 |
| Ctrl+Enter | 表に新たな行を設ける |
| Ctrl+, | 表に新たな列を設ける |
| Ctrl+. | 選択範囲を拡げる |
| Ctrl+/ | 分数 |
| Ctrl+Space | 現在点,現行状況から退避する |
| Ctrl+ | オブジェクトをスクリーン上の最小単位分移動させる |
英語キーボードでは,左側と右側の両方の組合せが使用可能である.その他のキーボードでは左側のキーは使えるが,右側のキーは使用できない可能性がある.
テキスト記述によるボックスの構築
ノートブックにおいてStandardFormやTraditionalFormのセル中等で,テキスト入力によりボックスを作成するとき,入力はカーネルへ直接入力する場合と多少違った扱いになる.
まず,入力形はトークンに分解される.次に,各トークンは個別の文字列としてボックス構造に入れられる.例えば,
と入力したなら,
,
,
のトークンに変換される.
各演算子とその被演算子を保持するためRowBoxが作成される.RowBoxのネストは Mathematica の標準文法の優先順位に従って決定される.
間隔調整文字は自動的には除去されないが,連なった間隔調整文字は1つのトークンにまとめられる.
文字列による入力
記号
と
の間に記述されるテキスト入力はボックスを構成するためのものと解釈される.
を指定したときにのみボックスの解釈を行う.指定しなかったら,入力形
は,例えばSuperscriptBox[x, y]として残され,Power[x, y]へは変換されない.
最も外側の
の内側に別の
を使うと,新たなRowBoxが挿入され,グループ化が行われる.
| \(box1,box2,...\) | RowBox[box1,box2,...] |
| box1\^box2 | SuperscriptBox[box1,box2] |
| box1\_box2 | SubscriptBox[box1,box2] |
| box1\_box2\%box3 | SubsuperscriptBox[box1,box2,box3] |
| box1\&box2 | OverscriptBox[box1,box2] |
| box1\+box2 | UnderscriptBox[box1,box2] |
| box1\+box2\%box3 | UnderoverscriptBox[box1,box2,box3] |
| box1\/box2 | FractionBox[box1,box2] |
| \@box | SqrtBox[box] |
| form\` box | FormBox[box,form] |
| \*input | input を解釈してボックスを構築する |
| \ | スペースの挿入 |
| \n | 改行の挿入 |
| \t | 行の先頭でインデントする |
と
の間に入力した文字列中のスペース,タブ,改行文字は削除される.スペースを挿入したい場合は
を使う.特殊な間隔調整文字である\[ThinSpace],\[ThickSpace],\[NegativeThinSpace]等は削除されない.
タイプセット形式を文字列に挿入する場合,その文字列の内部表現では上記の形式が使われる.フロントエンドではタイプセット形式が表示されるが,内容をファイルに保存する場合や文字列をカーネルに送り評価する場合は,
の表記が使われる.
入力式の範囲
Mathematica では1つの行に入力したものは,すべて同一の式に属するものとして扱われる.
Mathematica では1つの式が,複数の行に渡ってもよい.一般に,独立した式が形成されるまでは,連続した行は1つの式に属するものとみなされる.
例えば,行が
で終ると Mathematica は式が次の行まで続くものとみなす.行末においてカッコや挿入句的な演算子が閉じていない場合等も同様である.
ある行末までの入力が完全な式を形成している場合,通常 Mathematica は直ちに式の処理を行う.
一方,行末に \ や
(\[Continuation])を置くことで式の入力が修了していないことを明示することもできる.このとき,Mathematica は続く行の先頭のスペースやタブを除去したのち,式に取り込む.
特殊な入力
| ?symbol | シンボルに関する情報を得る |
| ??symbol | より詳しい情報を得る |
| ?s1s2... | 複数のオブジェクトに関して情報を得る |
| !command | 外部コマンドを実行する(テキストベースのインターフェースのみ) |
| !!file | 外部ファイルの内容を表示する(テキストベースのインターフェースのみ) |
ほとんどのバージョンの Mathematica において,上記の特殊入力の行を入力のどこにでも挿入できる.ただし唯一の制約として,この特殊入力は行のはじめからなされなければならないという約束がある.
Mathematica のバージョンによっては外部コマンドの実行書式!command が使えないこともある.
フロントエンドのファイル
ノートブックのファイルやフロントエンドの初期化ファイルでは標準の入力法に準拠した文法が使用される.この文法では次のようなものが使用できる.
