规范

每个步骤结尾的 规范 一节都会对这个步骤中的新特性给出规范,方便大家查阅。

step2 语法规范

灰色部分表示相对上一节的修改。


program
    : function

function
    : type Identifier '(' ')' '{' statement '}'

type
    : 'int'

statement
    : 'return' expression ';'

expression : unary unary : Integer | ('-'|'!'|'~') unary

step2 语义规范

2.1. MiniDecaf 中,负数字面量不被整体作为一个 token。它被看成是一个取负符号、后面是它的绝对值。 所以我们无法用字面量表示 -2147483648,但可以写成 -2147483647-1(待我们加上四则运算后)。

2.2. 运算越界是未定义行为。例如 -(-2147483647-1) 是未定义行为。

2.3. 除非特别声明,子表达式求值顺序是不确定的。 例如:执行 int a=0; (a=1)+(a=a+1); 之后 a 的值是不确定的。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""