实验指导 step2:一元运算符
step2 中,我们要给整数常量增加一元运算:取负 -
、按位取反 ~
以及逻辑非 !
。
语法上,我们需要修改 expression
的定义,从 expression : Integer
变成:
expression : unary unary : Integer | ('-'|'!'|'~') unary
三个操作的语义和 C 以及常识相同,例如 ~0 == -1
,!!2 == 1
。
稍微一提,关于按位取反,我们使用补码存储 int;关于逻辑非,只有 0 表示逻辑假,其他的 int 都是逻辑真。