规范

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

step7 语法规范

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


program
    : function

function : type Identifier '(' ')' compound_statement
type : 'int'
compound_statement : '{' block_item* '}'
block_item : statement | declaration statement : 'return' expression ';' | expression? ';' | 'if' '(' expression ')' statement ('else' statement)?
| compound_statement
declaration : type Identifier ('=' expression)? ';' expression : assignment assignment : conditional | Identifier '=' expression conditional : logical_or | logical_or '?' expression ':' conditional logical_or : logical_and | logical_or '||' logical_and logical_and : equality | logical_and '&&' equality equality : relational | equality ('=='|'!=') relational relational : additive | relational ('<'|'>'|'<='|'>=') additive additive : multiplicative | additive ('+'|'-') multiplicative multiplicative : unary | multiplicative ('*'|'/'|'%') unary unary : primary | ('-'|'~'|'!') unary primary : Integer | '(' expression ')' | Identifier

step7 语义规范

7.1. 不得声明当前作用域已经声明过的同名变量。

7.2. 声明某变量时,只要当前作用域没有同名变量,那么声明即合法。 如果更早的作用于中有同名变量,那么从此声明开始,到此声明所在作用域结束,更早的那个变量声明都被此声明覆盖。

7.3. 使用不在当前开作用域中的变量名是不合法的。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""