2.8.14 Mathematica 语言的语法Mathematica 用各种语法规则去解释输入,将字符串或单元转化为表达式. 由 StandardForm 和 InputForm 使用的规则定义了基本的 Mathematica 语言. 由 TraditionalForm 等其它形式使用的规则遵循同样的原则,但细节上有许多 区别. Mathematica 语言中的记号类型 当在 Mathematica 中输入文本时,Mathematica 首先把它分解为记号序列, 其中每个记号代表一个语法单元. 例如输入 xx+yy-zzzz 时, Mathematica 将其分解为记号序列 xx, +, y, - 和 zzzz. 这里 xx, yy 和 zzzz 是对应于符号 的记号,+ 和 - 是运算符. 运算符最终决定从一个输入得到的表达式的结构. Mathematica 语言涉及几种 一般类型的运算,这些类型的区别在于运算符出现在运算量中的位置. Mathematica 语言中运算符类型的例子 运算符要从它前后的指定位置找出运算量,当一个字符串中包含 多个运算符时,就要确定哪一个运算符先选择运算量. 如 a*b+c有可能被 解释为(a*b)+c 或 a*(b+c),这依赖于 * 或+哪个先选择其运算量. 为了避免 歧义,Mathematica 指定了每个运算符的优先次序,优先级别高的运算符先挑 选它的运算量. 例如乘号 * 比加号 + 的优先级别高,所以 * 先挑选运算量, a*b+c 被解释成 (a*b)+c , 而不是 a*(b+c). 乘号 * 比加号的优先级高所以两个 Times 都出现在最里层
Out[1]= |  |
运算符 // 有相当低的优先级
Out[2]= |  |
运算符 a 有较高的优先级
Out[3]= |  |
不管所使用运算符的级别高低,通过适当插入括号就可以指定所要 形成的表达式的结构. 插入括号后使 Plus 而不是 Times 出现在最里层 Out[4]//FullForm=
 |
按优先级降低次序排列的运算符概况 像 * 和 + 等运算是从标准的数学用法决定的次序. 一般,设定的次序使在典型 的输入块中能尽量少用括号. 运算符的优先级使得这儿不需要括号
Out[5]= |  |
FullForm 显示了所构造表达式的结构 Out[6]//FullForm=
 |
注意这里的第一、第二个形式是相同的,第三个则需要加括号
Out[7]= |  |
前缀算子的分组类型 加法是一个平等函数,没有必要分组 Out[8]//FullForm=
 |
幂不是一个平等函数,运算量必须成对分组 Out[9]//FullForm=
 |
Mathematica 语言的语法不仅适用于键盘上能输入的字符,也适用于 Mathematica 支持的特殊字符. 像 , 和 等字母与通常 的英语字母一样处理,例如可以以符号名的形式出现. 对 , , 等字母 型的符号也是如 此. 但也有许多特殊字符作为运算符. 例如 和 是中缀 算符,而 ¬ 是前缀算符, 和 匹配缀算符. 是中缀算符
Out[10]//FullForm=
 |
× 是中缀算符,其含义与 * 相同
Out[11]= |  |
一些特殊字符形成相当复杂的运算符的元素,例 如 是含有元素 和 的复合运算符. 和 形成复合运算符的一部分
Out[12]//FullForm=
 |
这里不需要括号: ... 的优先级低于乘法
Out[13]= |  |
但这里需要括号
Out[14]= |  |
在 Mathematica 中可以用一维字符串输入,也可以用二维单元的形式输入, Mathematica 语言的语法适用于一维结构和二维结构. 上标解释为幂
Out[15]= |  |
是一个二维复合运算符
Out[16]= |  |
是更复杂的二维复合运算符的一部分
Out[17]= |  |
运算符比加号有更高的优先级
Out[18]= |  |
|