zhouqijie

过程的中间代码

本节使用术语“函数”来表示带有返回值的过程。

D -> define T id(F) { S }   //函数声明    
F -> ε | T id, F            //形参  
S -> return E               //S的产生式新增一条返回语句  
E -> id(A)                  //E的产生式新增一条函数调用  
A -> ε | E, A               //实参  

一个函数类型必须包含返回值类型和形式参数类型。令void是一个表示没有参数或没有返回值的特殊类型。

当编译器处理到一个函数定义时,函数名被放入最上层的符号表,以便在程序其他部分使用。(CRE:形参也要加入到符号表)

在声明的产生式中,当看到define和函数名之后,我们需要把旧的符号表压栈并建立新的符号表。

在表达式中,一个函数和运算符的处理方法相同。适用于自动类型转换等类型检查规则。

为每个表达式参数生成一条param指令。可以逐个参数生成求值指令和param指令,也可以先翻译求值指令,再统一生成param指令。

(END)