规范
每个步骤结尾的 规范 一节都会对这个步骤中的新特性给出规范,方便大家查阅。
step4 语法规范
灰色部分表示相对上一节的修改。
program : function function : type Identifier '(' ')' '{' statement '}' type : 'int' statement : 'return' expression ';'
expression : logical_or logical_or : logical_and | logical_or '||' logical_and logical_and : equality | logical_and '&&' equality equality : relational | equality ('=='|'!=') relational relational : additive | relational ('<'|'>'|'<='|'>=') additiveadditive : multiplicative | additive ('+'|'-') multiplicative multiplicative : unary | multiplicative ('*'|'/'|'%') unary unary : primary | ('-'|'~'|'!') unary primary : Integer | '(' expression ')'
step4 语义规范
4.1. 如果 ||
和 &&
的子表达式有副作用,那么这就是一个未定义行为。
换言之,不对逻辑表达式的短路求值做要求。
4.2. 比较大小是有符号数的比较大小,因此 0xFFFFFFFF == -1 < 0 == 0x00000000
。