Mathematica 语言的语法
Mathematica 用各种语法规则去解释输入,将字符串或框符转化为表达式. 由
StandardForm 和
InputForm 使用的规则定义了基本的
Mathematica 语言. 由
TraditionalForm 等其它形式使用的规则遵循了同样的原则,但细节上有许多区别.
a, xyz,    | 符号 |
"some text", " + " | 字符串 |
| 123.456, 3*^45 | 数字 |
| +, ->, ≠ | 运算符 |
| (*comment*) | 将被忽略的输入 |
Mathematica 语言中的记号类型.
当在
Mathematica 中输入文本时,
Mathematica 首先把它分解为记号序列,其中每个记号代表一个语法单元.
例如输入

时,
Mathematica 将其分解为记号序列

,

,

,

和

. 这里

,

和

是对应于符号的记号,而

和

是运算符.
运算符最终决定从一个输入得到的表达式的结构.
Mathematica 语言涉及几种一般类型的运算符,这些类型的区别在于运算符相对于运算量的位置.
Mathematica 语言.
运算符要从它前后的指定位置找出运算量,当一个字符串中包含多个运算符时,就要确定哪一个运算符先选择运算量.
例如,

有可能被解释为

或者

,取决于是

还是

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

比加号

的优先级别高,所有它先选择运算量,

被解释为

而不是

.
运算符

的优先级别比

高,因此在两种情况下,
Times 都是最里层的函数.
| Out[1]= |  |
运算符

的优先级别相当低.
| Out[2]= |  |
运算符

的优先级别较高.
| Out[3]= |  |
不管所使用运算符的优先级别高低,通过适当插入括号就可以指定所要形成的表达式的结构.
Out[4]//FullForm= |
| |  |
| 符号名的扩展 | x_,#2,e::s, 等等 |
| 函数应用变量 | e[e],e@@e, 等等 |
| 与幂相关的运算 | √e,e^e, 等等 |
与乘法相关的运算
| e,e/e,e e,ee, 等等 |
| 与加法相关的运算 | e e,e+e,e e, 等等 |
| 关系型运算符 | e==e,e e,e e,e e,e e, 等等 |
| 箭头及向量运算 | e e,e e,e e,e e, 等等 |
| 逻辑运算符 | ee,e&&e,e e,e e, 等等 |
| 模式和规则运算符 | e..,e|e,e->e,e/.e, 等等 |
| 纯函数运算符 | e& |
| 赋值运算符 | e=e,e:=e, 等等 |
| 复合表达式 | e;e |
按优先级别降低次序排列的运算符概况.
在 "
运算符的输入形式" 一节的表按优先级别次序,给出了
Mathematica 中全部的运算符的列表. 如

和

的情形相同,大部分次序是由标准数学用法决定的. 一般,设定的次序使在典型的输入块中能尽量少用括号.
| Out[5]= |  |
Out[6]//FullForm= |
| |  |
注意这里的第一、第二个形式是相同的,第三个则需要加括号.
| Out[7]= |  |
| 平等 | x+y+z | x+y+z |
| 左分组 | x/y/z | (x/y)/z |
| 右分组 | x^y^z | x^(y^z) |
前缀运算符的分组类型.
Out[8]//FullForm= |
| |  |
Out[9]//FullForm= |
| |  |
Mathematica 语言的语法不仅适用于键盘上能输入的字符,也适用于
Mathematica 支持的特殊字符.
如

、

和

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

、

和

等字母型符号也是如此.
但也有许多特殊字符作为运算符,例如

和

为中缀算符,

为前缀算符,

和

为匹配缀算符.

是中缀算符.
Out[10]//FullForm= |
| |  |

是中缀算符,其含义与

相同.
| Out[11]= |  |
一些特殊字符形成相当复杂的运算符的元素. 例如
f
x 是含有元素

和

的复合运算符.

和

形成复合运算符的一部分.
Out[12]//FullForm= |
| |  |
这里不需要括号:
... 
的优先级别低于
Times.
| Out[13]= |  |
| Out[14]= |  |
Mathematica 中可以用一维字符串输入,也可以用二维单元的形式输入.
Mathematica 语言的语法适用于一维结构和二维结构.
| Out[15]= |  |

是一个二维复合运算符.
| Out[16]= |  |

是更复杂的二维复合运算符的一部分.
| Out[17]= |  |
运算符

的优先级别比

高.
| Out[18]= |  |