Mathematica 语言的语法

Mathematica 用各种语法规则去解释输入,将字符串或框符转化为表达式. 由 StandardFormInputForm 使用的规则定义了基本的 Mathematica 语言. 由 TraditionalForm 等其它形式使用的规则遵循了同样的原则,但细节上有许多区别.

a, xyz, 符号
"some text", "+" 字符串
123.456, 3*^45数字
+, ->, 运算符
(*comment*)将被忽略的输入

Mathematica 语言中的记号类型.

当在 Mathematica 中输入文本时,Mathematica 首先把它分解为记号序列,其中每个记号代表一个语法单元.

例如输入 时,Mathematica 将其分解为记号序列 . 这里 是对应于符号的记号,而 是运算符.

运算符最终决定从一个输入得到的表达式的结构. Mathematica 语言涉及几种一般类型的运算符,这些类型的区别在于运算符相对于运算量的位置.

前缀!xNot[x]
后缀x!Factorial[x]
中缀x+y+zPlus[x,y,z]
匹配缀{x,y,z}List[x,y,z]
复合x/:y=zTagSet[x,y,z]
上缀OverHat[x]

Mathematica 语言.

运算符要从它前后的指定位置找出运算量,当一个字符串中包含多个运算符时,就要确定哪一个运算符先选择运算量.

例如, 有可能被解释为 或者 ,取决于是 还是 先选择其运算量.

为了避免歧义,Mathematica 指定了每个运算符的优先级别,优先级别高的运算符先选择它的运算量.

例如,乘号 比加号 的优先级别高,所有它先选择运算量, 被解释为 而不是 .

运算符 的优先级别比 高,因此在两种情况下,Times 都是最里层的函数.
In[1]:=
Click for copyable input
Out[1]=
运算符 的优先级别相当低.
In[2]:=
Click for copyable input
Out[2]=
运算符 的优先级别较高.
In[3]:=
Click for copyable input
Out[3]=

不管所使用运算符的优先级别高低,通过适当插入括号就可以指定所要形成的表达式的结构.

插入括号后使 Plus 而不是 Times 成为最里层函数.
In[4]:=
Click for copyable input
Out[4]//FullForm=
符号名的扩展x_,#2,e::s, 等等
函数应用变量e[e],e@@e, 等等
与幂相关的运算e,e^e, 等等
与乘法相关的运算
e,e/e,ee,ee, 等等
与加法相关的运算ee,e+e,ee, 等等
关系型运算符e==e,ee,ee,ee,ee, 等等
箭头及向量运算ee,ee,ee,ee, 等等
逻辑运算符ee,e&&e,ee,ee, 等等
模式和规则运算符e..,e|e,e->e,e/.e, 等等
纯函数运算符e&
赋值运算符e=e,e:=e, 等等
复合表达式e;e

按优先级别降低次序排列的运算符概况.

在 "运算符的输入形式" 一节的表按优先级别次序,给出了 Mathematica 中全部的运算符的列表. 如 的情形相同,大部分次序是由标准数学用法决定的. 一般,设定的次序使在典型的输入块中能尽量少用括号.

运算符的优先级使得这里不需要括号.
In[5]:=
Click for copyable input
Out[5]=
FullForm 显示了所构造表达式的结构.
In[6]:=
Click for copyable input
Out[6]//FullForm=
注意这里的第一、第二个形式是相同的,第三个则需要加括号.
In[7]:=
Click for copyable input
Out[7]=
平等x+y+zx+y+z
左分组x/y/z(x/y)/z
右分组x^y^zx^(y^z)

前缀运算符的分组类型.

Plus 是一个 Flat 函数,因此这里不需要分组.
In[8]:=
Click for copyable input
Out[8]//FullForm=
Power 不是 Flat,运算量必须成对分组.
In[9]:=
Click for copyable input
Out[9]//FullForm=

Mathematica 语言的语法不仅适用于键盘上能输入的字符,也适用于 Mathematica 支持的特殊字符.

等字母与通常的英语字母一样处理,例如可以以符号名的形式出现. 对 等字母型符号也是如此.

但也有许多特殊字符作为运算符,例如 为中缀算符, 为前缀算符, 为匹配缀算符.

是中缀算符.
In[10]:=
Click for copyable input
Out[10]//FullForm=
是中缀算符,其含义与 相同.
In[11]:=
Click for copyable input
Out[11]=

一些特殊字符形成相当复杂的运算符的元素. 例如 是含有元素 的复合运算符.

形成复合运算符的一部分.
In[12]:=
Click for copyable input
Out[12]//FullForm=
这里不需要括号: 的优先级别低于 Times.
In[13]:=
Click for copyable input
Out[13]=
但这里需要括号.
In[14]:=
Click for copyable input
Out[14]=

Mathematica 中可以用一维字符串输入,也可以用二维单元的形式输入. Mathematica 语言的语法适用于一维结构和二维结构.

上标解释为幂.
In[15]:=
Click for copyable input
Out[15]=
是一个二维复合运算符.
In[16]:=
Click for copyable input
Out[16]=
是更复杂的二维复合运算符的一部分.
In[17]:=
Click for copyable input
Out[17]=
运算符 的优先级别比 高.
In[18]:=
Click for copyable input
Out[18]=
New to Mathematica? Find your learning path »
Have a question? Ask support »