语法:
PostfixExpr ::= InfixExpr [id [nl]]
InfixExpr ::= PrefixExpr
| InfixExpr id [nl] Inf2424ixExpr
PrefixExpr ::= [„-‟ | „+‟ | „!‟ | „~‟] SimpleExpr
表达式由算符和操作数构成。
6.12.1. 前缀运算
前缀运算op e由前缀算符op(必须是„+‟, „-‟, „!‟或„~‟之一)。表达式op e等价于后缀方法应用e.unary_op。
前缀算符不同于普通的函数应用,他们的操作数表达式不一定是原子的。例如,输入序列-sin(x)读取为-(sin(x)),函数应用negate sin(x)将被解析为将中缀算符sin应用于操作数negate和(x)。
6.12.2. 后缀操作
后缀算符可以是任意标识符。后缀操作e op被解释为e.op。
6.12.3. 中缀操作
中缀算符可以是任意标识符。中缀算符的优先级和相关性定义如下:
中缀算符的优先级由算符的第一个字符确定。字符按照优先级升序在下面列出,同一行中的字符具有同样的优先级。
(所有字母)
|
^
&
< >
= !
:
+ -
* / %
(所有其他特殊字符)
也就是说,由字母开头的算符具有最低的优先级,然后是由„|‟开头的算符,下同。
这个规则中有一个例外,就是赋值算符(§6.12.4)。赋值算符的优先级与简单赋值(=)相同。也就是比任何其他算符的优先级要低。
算符的相关性由算符的最后一个字符确定。由„:‟结尾的算符是右相关的。其他所有算符是左
PostfixExpr ::= InfixExpr [id [nl]]
InfixExpr ::= PrefixExpr
| InfixExpr id [nl] Inf2424ixExpr
PrefixExpr ::= [„-‟ | „+‟ | „!‟ | „~‟] SimpleExpr
表达式由算符和操作数构成。
6.12.1. 前缀运算
前缀运算op e由前缀算符op(必须是„+‟, „-‟, „!‟或„~‟之一)。表达式op e等价于后缀方法应用e.unary_op。
前缀算符不同于普通的函数应用,他们的操作数表达式不一定是原子的。例如,输入序列-sin(x)读取为-(sin(x)),函数应用negate sin(x)将被解析为将中缀算符sin应用于操作数negate和(x)。
6.12.2. 后缀操作
后缀算符可以是任意标识符。后缀操作e op被解释为e.op。
6.12.3. 中缀操作
中缀算符可以是任意标识符。中缀算符的优先级和相关性定义如下:
中缀算符的优先级由算符的第一个字符确定。字符按照优先级升序在下面列出,同一行中的字符具有同样的优先级。
(所有字母)
|
^
&
< >
= !
:
+ -
* / %
(所有其他特殊字符)
也就是说,由字母开头的算符具有最低的优先级,然后是由„|‟开头的算符,下同。
这个规则中有一个例外,就是赋值算符(§6.12.4)。赋值算符的优先级与简单赋值(=)相同。也就是比任何其他算符的优先级要低。
算符的相关性由算符的最后一个字符确定。由„:‟结尾的算符是右相关的。其他所有算符是左