算术表达式
跳到导航
跳到搜索
算术表达式是由数和算术运算(也即四则运算)构成的表达式。算术表达式通常只是一个记录计算过程的符号串,它作为一个严密的数学对象本身的研究仍然是不充分的。对于一个复杂的数域,如实数域,记录一次计算过程本身写出一个表达式是容易的,然而作为一个概念,严格的定义实数域上的表达式仍然有内在的困难。这个困难之一来自于除零错误造成的语法与语义的不一致。另外一种困难来自于无限长度的表达式的计算,比如著名的令人迷惑的级数 [math]\displaystyle{ -\frac{1}{12}= 1 + 2 + 3 + ... }[/math]
语法式定义
下面我们形式的引入有理数域上的算术表达式,因为此时我们可以存在算法判定如下的纯语法式构造什么时候会出现除零错误。
有理数域[math]\displaystyle{ \mathbb{Q} }[/math]上的算术表达式是指有如下产生式规则生成的符号串
- [math]\displaystyle{ a \longleftarrow x }[/math]
- [math]\displaystyle{ a \longleftarrow ( a + a ) }[/math]
- [math]\displaystyle{ a \longleftarrow ( a - a ) }[/math]
- [math]\displaystyle{ a \longleftarrow ( a \times a ) }[/math]
- [math]\displaystyle{ a \longleftarrow ( a \div a ) }[/math]
其中 [math]\displaystyle{ x \in \mathbb{Q} }[/math],我们称此时有 [math]\displaystyle{ a \in \mathbb{E} \left [\mathbb{Q} \right ] }[/math]。
字串表示与语法树表示
在上述生成过程中,我们可以得到一个算术表达式的字串表示或者树表示,两种表示是等价的。例如:
[math]\displaystyle{ (((((1 \times 2) \times 2) - 1) \times (2 + 1)) - 6)\label{eq:equation} }[/math]
相应的语法树如下: