文本形式的翻译

ToExpression[input]通过翻译字符串或字符盒创建一个表达式

将字符串或字符盒转化为表达式.

读取一个字符串,将其翻译成一个表达式.
In[1]:=
Click for copyable input
Out[1]=
这是与以 StandardForm 的形式给出的表达式的文本形式相对应的字符盒结构.
In[2]:=
Click for copyable input
Out[2]=
ToExpression 翻译该字符盒结构,重新得到原来的表达式.
In[3]:=
Click for copyable input
Out[3]=

在 Wolfram 系统的任何进程中,Wolfram 系统总是有效利用 ToExpression 将输入的文本形式翻译为要计算的实际表达式.

使用 Wolfram 系统的笔记本前端时,仅当一个单元的内容送到内核进行计算时才进行翻译. 这意味着在笔记本中,不需要将设置的文本形式与有意义的 Wolfram 系统表达式相对应,仅当要把这些文本形式送往内核时这样做才有必要.

FullForm显式函数记号
InputForm一维记号
StandardForm二维记号

标准 Wolfram 系统输入形式的层次结构(hierarchy).

FullForm 形式输入一个表达式.
In[4]:=
Click for copyable input
Out[4]=
InputForm 形式输入的同一个表达式.
In[5]:=
Click for copyable input
Out[5]=
StandardForm 形式输入的这一个表达式.
In[6]:=
Click for copyable input
Out[6]=

Wolfram 系统内部建立了一系列标准规则供 ToExpression 使用,将文本形式转化为表达式.

这些规则定义了 Wolfram 系统的语法. 规则指出, 应该被解释为 Plus[x,y],而 应该被解释为 Power[x,y]. 若所给的输入是 FullForm 的形式,翻译的规则很简单:每个表达式仅由头部和随后括号内的一列元素组成. 对于 InputForm 的规则稍微复杂一些:它们允许使用 等运算符,并理解运算符出现在运算对象之间时的表达式. StandardForm 涉及到的规则更加复杂,它们不仅允许运算符和运算对象以一维序列形式排列,还允许这些运算符和运算对象以二维结构排列.

Wolfram 系统的设置使得 FullFormInputFormStandardForm 形成一个严格的分层结构:能用 FullForm 输入的肯定能用 InputForm 输入,而能用 InputForm 输入的也肯定能用 StandardForm 输入.

当使用 Wolfram 系统的笔记本前端时,一般使用 StandardForm 的所有特性. 而当使用的界面基于文本时,一般仅能使用 InputForm 的特性.

当在 Wolfram 系统的笔记本中使用 StandardForm 时,可以直接输入如 或加注图形等的二维形式. 但InputForm 仅允许一维形式的输入.

如果复制一个不许计算就能翻译的 StandardForm 表达式,该表达式将以 InputForm 形式贴入外部应用. 否则该文本将以线性格式被复制,该格式使用 能够精确表示二维结构. 这个线性格式被重新粘贴到 Wolfram 系统 笔记本中时将自动转为二维形式.

ToExpression[input,form]假设 input 按指定的文本形式给出,试图创建一个表达式

从其它文本形式导入.

StandardForm 和它的子集 FullFormInputForm 提供了以文本形式代表任意 Wolfram 系统表达式的确切方式. 当给定一种文本形式时,它总能被无歧义地转化为所代表的表达式.

TraditionalForm 是作为输出的文本形式的一个例子. 可以将任何 Wolfram 系统表达式显示为TraditionalForm 的形式. 但 TraditionalForm 不具有 StandardForm 的精确性,通常不能无歧义的由一种 TraditionalForm 的表示返回得到它所代表的表达式.

尽管如此,ToExpression[input,TraditionalForm] 将试图把 TraditionalForm 的文本翻译成它所代表的表达式.

这里读取一个字符串,并以 TraditionalForm 输入的形式将其翻译.
In[7]:=
Click for copyable input
Out[7]=
StandardForm 形式时,同一字符串指的却是各项的乘积.
In[8]:=
Click for copyable input
Out[8]=

TraditionalForm 的输出是以计算结果的形式生成时,代表输出的实际字符盒集合通常包含特殊的Interpretation 对象或其它加以特殊标签的形式来指定一个表达式如何由 TraditionalForm 格式的输出被重新构建.

StandardForm 通过显式转换得到的 TraditionalForm 也同样如此. 但若要对 TraditionalForm 进行大量编辑,或从头输入时,Wolfram 系统就不得不在没有额外信息的情况下尝试将它进行转化.