2.8.4 文本形式的翻译从字符串或子符箱转化为表达式 将字符串转化为表达式
Out[1]= |  |
这是一个以 StandardForm 形式给出表达式的字符盒结构
Out[2]= |  |
ToExpression 翻译这个字符盒结构重新产生原来的表达式
Out[3]= |  |
在任何进程中,Mathematica 总是有效地利用 ToExpression 将输入 的文本形式转化为要计算的表达式. 使用 Mathematica 的笔记本前端时,仅当一个单元的内容送到内核进行 计算时才进行翻译. 这意味着在笔记本中,不需要将设置的文本形式与有意义的 Mathematica 表达式相对应,仅当把这些文本形式送往内核时才有必要与 表达式对应. 标准Mathematica输入的级别 用 FullForm 形式输入一个表达式
Out[4]= |  |
用 InputForm 形式输入的同一个表达式
Out[5]= |  |
用 StandardForm 形式输入的这一表达式
Out[6]= |  |
Mathematica 中建立了一系列标准规则以便 ToExpression 能将文本形式转化为表达式. 这些规则定义了Mathematica 的语法,它们指出 x + y 将被转化为 Plus[x, y], 应该被转化为 Power[x, y]. 当以 FullForm 输入时就直接转化:每个表达式仅由头部和括号内的一列元素 组成,对 InputForm 的规则稍微复杂一些:它们允许使用 +, =, 和 -> 等运算符. StandardForm 涉及到更复杂的规则它允许一维和二维结构形式的运算. FullForm, InputForm 和 StandardForm 在 Mathematica 中有级别,能用 FullForm 输入的肯定能用 InputForm 输入,InputForm 的输入在 StandardForm 中也有效. 当使用 Mathematica 的笔记本前端时, 一般使用 StandardForm. 当使用文本界面时一般将使用 InputForm. InputForm的两种形式 在 Mathematica 笔记本中使用 StandardForm 时可以直接输入 等二维形式. 但 InputForm 仅允许一维的形式输入. 即使在 InputForm 中的实际文本是一维的, 但仍可以用它来表示二维形式. 如 \!\(x\^2\) 表示二维形式 , Mathematica会将它转化为 Power[x, 2]. 常用的一维输入
Out[7]= |  |
这里是一个表示二维形式的输入
Out[8]= |  |
即使输入不同,但从后两行得到的是同样的表达式
Out[9]= |  |
从 Mathematica 中复制一个二维形式时,一般看到的是 \!\( ... \) 形式.当把这个二维形式粘贴到 Mathematica 的笔记本时, 它将自动转化为二维形式.当在一个笔记本中简单地输入 \!\( ... \) 时,可以 用 Make 2D 菜单项将其转化为二维形式. 从其它文本形式的输入 StandForm 和它的子集 FullForm 及 InputForm 提供了以文本形式表示任何表达式 的确切方式. 当给出了这些文本形式时,它被无歧义地转化为所代表的表达式. TraditionalForm 是作为输出的文本形式的一个例子. 可以用 TraditionalForm 显示 任何表达式. 但 TraditionalForm 没有 StandForm 的精确性,一般来讲无法从 TraditionalForm 返回无歧义的得到所代表的表达式. 然而, ToExpression[input, TraditionalForm] 会将以TraditionalForm 给出的文本转化为它所代表的表达式. 将字符串转化为 TraditionalForm 的输入
Out[10]= |  |
在 StandardForm 中,同样的字符串表示相乘
Out[11]= |  |
在计算结果中产生了 TraditionalForm 的输出时,表示这个输出的字符盒集合包含 特殊的 InterpretationBox 和 TagBox 项,它们指明怎样以 TraditionalForm 的输出重新构造表达式. 明确从 StandardForm 转换为 TraditionalForm 中,这种情况也中对的. 但对 TraditionalForm 进行大量编辑时,或从头 输入时,Mathematica 就必须在没有额外信息的情况下尝试将它进行转化.
|