入力文法

文字の入力
直接入力(例:+
完全名で入力(例:[Alpha]
エイリアスで入力(例:EscaEsc)(注:ノートブックフロントエンドのみ有効)
パレットからコピー(注:ノートブックフロントエンドのみ有効)
文字コードで入力(例::03b1
文字の主要な入力法
すべての印字可能ASCII文字はキーボードで直接入力できる.これらアルファベットや数字以外の文字には明示的に名前が与えられていて,キーボードにない文字でも入力できるようになっている.
[RawSpace]
![RawExclamation]
"[RawDoubleQuote]
#[RawNumberSign]
$[RawDollar]
%[RawPercent]
&[RawAmpersand]
'[RawQuote]
([RawLeftParenthesis]
)[RawRightParenthesis]
*[RawStar]
+[RawPlus]
,[RawComma]
-[RawDash]
.[RawDot]
/[RawSlash]
:[RawColon]
;[RawSemicolon]
<[RawLess]
=[RawEqual]
>[RawGreater]
?[RawQuestion]
@[RawAt]
[[RawLeftBracket]
[RawBackslash]
][RawRightBracket]
^[RawWedge]
_[RawUnderscore]
`[RawBackquote]
{[RawLeftBrace]
|[RawVerticalBar]
}[RawRightBrace]
~[RawTilde]
アルファベット,数字以外の印字可能ASCII文字の完全名
Wolfram言語カーネルへ入力されるすべての文字は,その文字が送られてくるストリームのオプションCharacterEncodingの設定に従い解釈される.
[Name]
完全名で文字を入力する
nnn
8進法の文字コード nnn で入力する
.nn
16進法の文字コード nn で入力する
:nnnn
16進法の文字コード nnnn で入力する
|nnnnnn
16進法の文字コード nnnnnn で入力する
文字の入力法
文字コードはToCharacterCodeを使い取得できる.得られる文字コード番号はUnicode規格とその拡張規格に準じる.
8ビット形式の文字には256未満のコードが,16ビット文字には256から65535の文字コードが与えられている.文字のコードはすべて1114112未満である.Wolfram言語では約1200個の文字に対して明示的に名前が与えられている.それ以外の文字は文字コードで入力する.
バックスラッシュ(10進コード:92)
シングルスペース(10進コード:32)
ダブルクォート(10進コード:34)
b
バックスペースまたはCtrl+H(10進コード:8)
t
タブまたはCtrl+I(10進コード:9)
n
改行文字またはCtrl+J(10進コード:10,完全名[NewLine]
f
改ページ文字またはCtrl+L(10進コード:12)
r
リターンまたはCtrl+M(10進コード:13)
000
ヌル文字(コード:0)
特殊な8ビット文字
表記法と文法
標準入力にかかわるWolfram言語の文法は,InputForm(入力形)とStandardForm(標準形)でデフォルトで使用されているものである.文法は,MakeExpression[expr,form]で定義を作ることにより変更できる.
オプションを設定することで,ノートブックのセルやストリームがどの形式の入力を受け付けるかを指定できる.
例えば,TraditionalForm(慣用形)における入力の文法は,InputForm(入力形)やStandardForm(標準形)の文法とは異なっている.
つまるところ,入力の文法は文字列やボックスを式としてどう解釈するかを定めたものである.例えば,ノートブック用フロントエンドにおいてボックスが入力されるとき,ボックスの解釈を変更するInterpretationBoxTagBoxを表示しないようにすることができるのである.
文字列
"characters"
文字列
"
ダブルクォート"を入力する
バックスラッシュ記号を入力する
(行の終り)
文字列の入力の際,この中では改行を改行のまま扱う
!()
二次元のボックス記述に使う
文字列の入力
文字列にはどのような文字も使える.文字名や文字コードで入力した場合,その文字は直接入力したときと全く同様に扱われる.
ノートブックフロントエンドでは,Wolfram言語に保存された文字列がペーストされたのと同じように再生できるように,デフォルトで文字列にペーストされたテキストには自動的に適当な 記号が挿入される.
!()の中ではバックスラッシュを使ったボックス記述を使用することができる.
StringExpressionオブジェクトはパターン要素のような記号的なコンストラクトが入っている文字列を表すのに使うことができる.
シンボル名とコンテキスト
name
シンボル名
`name
現行コンテキストにあるシンボル
context`name
指定したコンテキストにあるシンボル
context`
コンテキスト名
context1`context2`
複合コンテキスト名
`context`
現在のコンテキストに相対的なコンテキスト
シンボル名とコンテキストの入力
シンボル名やコンテキストには,Wolfram言語で文字や文字的な記号として扱われるものならどれも使用可能である.また,名前の先頭以外では数字も使用できる.コンテキストはバッククォート(`)で終らなければならない.
digits
整数
digits.digits
近似数
base^^digits
整数,任意の底
base^^digits.digits
近似数,任意の底
mantissa*^n
科学表記 ( mantissa × 10n )
base^^mantissa*^n
科学表記,任意の底 ( mantissa × basen )
number`
近似数,機械精度
number`s
近似数,任意精度,精度
number``s
近似数,任意精度,確度
数の入力形
236の底の数は base^^digits の形式で入力できる.その際底自体は10進数で与える.10より大きい底を使うときは,追加の桁にazまたはAZのアルファベットを使う.この場合大文字と小文字の区別はない.浮動点数を表すには digits に小数点(.)を付加する.
科学表記法では,仮数部 mantissa はナンバーマーク(`)を使用することができる.指数部 は10進整数で指定する.
精度や確度 は実数を取る.整数である必要はない.
base^^number`s の書式において,精度 は10進値で与える.ただし,10進数における桁数ではなく,指定された底における桁数で指定する.
近似値 はその桁数がCeiling[$MachinePrecision+1]以下の場合は機械精度であると解釈される.桁数がこれより多ければ, は任意精度の数と解釈される. の確度は小数点の右側の桁数であり,精度はLog[10,Abs[x]]+Accuracy[x]であると解釈される.
0``s の形式で入力された数は精度が0,確度が であるとみなされる.
ブラケット型オブジェクト
ブラケット型オブジェクトでは左右を特別な区切り記号で区切り,その範囲を指定する.Wolfram言語の入力のどこにでも挿入可能である.また,ネストさせてもよい.
ブラケット型オブジェクトの区切り記号は一種の挿入句的な演算子である.このとき,ブラケットはその内容を完全にくくってしまうので,演算優先度を割り当てる必要はない.
(*任意のテキスト*)
コメント文
(expr)
カッコ:入力をくくる
コンマで区分けされた要素を持たないブラケット型オブジェクト
コメント文はネストしても,また,何行に渡っても構わない.また,8ビットと16ビット形式の文字を混ぜて使ってもよい.
カッコの中には完全独立な式がなければならない.(e,e)()は不正となる.
{e1,e2,}List[e1,e2,]
<|e1,e2,|>Association[e1,e2,]
e1,e2,Association[e1,e2,]
e1,e2,AngleBracket[e1,e2,]
exprFloor[expr]
exprCeiling[expr]
e1,e2,BracketingBar[e1,e2,]
e1,e2,DoubleBracketingBar[e1,e2,]
(input)
ボックスの入力,またはボックスのグループ化
コンマで区分けされた要素を持ったブラケット型オブジェクト
式の列はの形式で表されている.
{e1,e2,}にはいくつの要素が含まれていてもよく,各要素はコンマで区切る.
{}は要素なしのリスト,つまりList[]を表す.同様に<||>はゼロ値の連想,つまりAssociation[]を表す.
e1,e2,は,[LeftAssociation]e1,e2,[RightAssociation]と入力することができる.
普通のコンマの代りに隠しコンマ[InvisibleComma]を使うことができる.[InvisibleComma]は表示されないが,役割はコンマと全く同じである.
区切り記号に特殊文字を使用する場合,記号の名前には[LeftName][RightName]が使われる慣例になっている.
一次元的な文字列でボックス入力を行うには()を使う.一番外側の()の内側と外側では使用される文法に相違がある.詳しくは「ボックスの入力」を参照のこと.
h[e1,e2,]
式の標準形
e[[i1,i2,]]Part[e,i1,i2,]
ei1,i2,Part[e,i1,i2,]
頭部付きのブラケット型オブジェクト
頭部付きのブラケット型オブジェクトでは頭部以外の被演算子が明示的に区切られている.また,頭部の有効範囲を指定するために演算の優先順位が割り当てられなければならない.
例えば,h[e]の優先度は非常に高いので,!h[e]Not[h[e]]と解釈される.しかし,h_s[e]は,(h_s)[e]に解釈されてしまう.
演算子
Wolfram言語には,ブラケット型の式の他,多数の中置演算子,前置演算子,後置演算子がある.この中には数学演算,文字列処理,パターンマッチング,関数型プログラミング等のための演算子も含まれる.詳しい優先順位や結合性についての情報は「演算子の入力形」に記載されている.
二次元の入力形
xyPower[x,y]
Divide[x,y]
Sqrt[x]
Power[x,1/n]
a11a12
a21a22
{{a11,a12,},{a21,a22,}}
xyD[y,x]
x,yD[y,x,]
yxIntegrate[y,{x,xmin,xmax}]
xIntegrate[y w/z,{x,xmin,xmax}]
ySum[y,{x,xmin,xmax}]
yProduct[y,{x,xmin,xmax}]
組込みの評価規則を持つ二次元の入力形
GridBoxを用いて表した配列はリストのリストとして解釈される.たとえGridBoxが1行しか持たない場合でも,の形に解釈がされる.
入力形 において, と同様に省略可能である.
組込みの評価規則を持たない二次元入力形
のように被演算子の範囲が演算子により覆われている場合,優先順位に関して特に考える必要はない. のような形式の場合,左方向の優先順位が判明していなければいけない.そのため,そのような形の優先順位が上記の表に示されている.
ボックスの入力
パレットを使う.
コントロールキーを使う.
ボックスの入力法

コントロールキー

Ctrl+2 または Ctrl+@
平方根
Ctrl+5 または Ctrl+%
反対位置に移動(例:下付き文字から上付き文字へ移る)
Ctrl+6 または Ctrl+^
上付き文字
Ctrl+7 または Ctrl+&
真上付き文字
Ctrl+9 または Ctrl+(
テキストの途中で新たなセルを開始する
Ctrl+0 または Ctrl+)
テキストの途中で新たなセルを終了する
Ctrl+- または Ctrl+_
下付き文字
Ctrl + Shift + ,
真下付き文字
Ctrl + Enter
表に新たな行を設ける
Ctrl + ,
表に新たな列を設ける
Ctrl + .
選択範囲を拡げる
Ctrl + /
分数
Ctrl + Space
現在点,現行状況から退避する
Ctrl + , Ctrl + , Ctrl + , Ctrl +
オブジェクトをスクリーン上の最小単位分移動させる
標準コントロールキー
英語キーボードでは,左側と右側の両方の組合せが使用可能である.その他のキーボードでは左側のキーは使えるが,右側のキーは使用できない可能性がある.

テキスト記述によるボックスの構築

ノートブックにおいてStandardFormTraditionalFormのセル中等で,テキスト入力によりボックスを作成するとき,入力はカーネルへ直接入力する場合と多少違った扱いになる.
まず,入力形はトークンに分解される.次に,各トークンは個別の文字列としてボックス構造に入れられる.例えば,xx+yyyと入力したなら,"xx""+""yyy"のトークンに変換される.
シンボル(例:x123
数(例:12.345
演算子(例:+=
間隔調整文字(例:
文字列(例:"text"
ボックスの構築に使用されるトークンの種類
各演算子とその被演算子を保持するためRowBoxが作成される.RowBoxのネストはWolfram言語の標準文法の優先順位に従って決定される.
間隔調整文字は自動的には除去されないが,連なった間隔調整文字は1つのトークンにまとめられる.

文字列による入力

()
原形ボックスの入力
!()
ボックスの入力と解釈
ボックスの入力
記号\(\)の間に記述されるテキスト入力はボックスを構成するためのものと解釈される.\!を指定したときにのみボックスの解釈を行う.指定しなかったら,入力形 x\^y は,例えばSuperscriptBox[x,y]として残され,Power[x,y]へは変換されない.
最も外側の\()の内側に別の\()を使うと,新たなRowBoxが挿入され,グループ化が行われる.
(box1,box2,)RowBox[box1,box2,]
box1^box2SuperscriptBox[box1,box2]
box1_box2SubscriptBox[box1,box2]
box1_box2%box3SubsuperscriptBox[box1,box2,box3]
box1&box2OverscriptBox[box1,box2]
box1+box2UnderscriptBox[box1,box2]
box1+box2%box3UnderoverscriptBox[box1,box2,box3]
box1/box2FractionBox[box1,box2]
\@boxSqrtBox[box]
form` boxFormBox[box,form]
\*input
input を解釈してボックスを構築する
\
スペースの挿入
\n
改行の挿入
\t
行の先頭でインデントする
文字列を使ったボックスの構築
\(\)の間に入力した文字列中のスペース,タブ,改行文字は削除される.スペースを挿入したい場合はを使う.特殊な間隔調整文字である\[ThinSpace]\[ThickSpace]\[NegativeThinSpace]等は削除されない.
タイプセット形式を文字列に挿入する場合,その文字列の内部表現では上記の形式が使われる.フロントエンドではタイプセット形式が表示されるが,内容をファイルに保存する場合や文字列をカーネルに送り評価する場合は,\()の表記が使われる.
入力式の範囲
Wolfram言語では1つの行に入力したものは,すべて同一の式に属するものとして扱われる.
Wolfram言語では1つの式が,複数の行に渡ってもよい.一般に,独立した式が形成されるまでは,連続した行は1つの式に属するものとみなされる.
例えば,行が=で終るとWolfram言語は式が次の行まで続くものとみなす.行末においてカッコや挿入句的な演算子が閉じていない場合等も同様である.
ある行末までの入力が完全な式を形成している場合,通常Wolfram言語は直ちに式の処理を行う.
一方,行末に (\[Continuation])を置くことで式の入力が修了していないことを明示することもできる.このとき,Wolfram言語は続く行の先頭のスペースやタブを除去したのち,式に取り込む.
特殊な入力
?symbol
シンボルに関する情報を得る
??symbol
より詳しい情報を得る
?s1s2
複数のオブジェクトに関して情報を得る
! command
外部コマンドを実行する(テキストベースのインターフェースのみ)
外部ファイルの内容を表示する(テキストベースのインターフェースのみ)
特殊な入力行
ほとんどのバージョンのWolfram言語において,上記の特殊入力の行を入力のどこにでも挿入できる.ただし唯一の制約として,この特殊入力は行のはじめからなされなければならないという約束がある.
Wolfram言語のバージョンによっては外部コマンドの実行書式!command が使えないこともある.
フロントエンドのファイル
ノートブックのファイルやフロントエンドの初期化ファイルでは標準の入力法に準拠した文法が使用される.この文法では次のようなものが使用できる.