通过引用传递变量的实现

时间:2016-06-17 21:35:30

标签: compiler-construction

我必须实现一种方法来解析YACC和LEX中通过引用传递的参数的函数。 例如:

int main (){
int a = 5;
f(a);
printf(a)
return 0;
}

f(passed_by_reference int b){
b++;
}

我尝试使用符号表,但无法匹配变量a和变量b,因为在表中它们像a和b一样保存,因此更改会丢失。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

就解析而言,您只需要将关键字passed_by_reference 1 识别为函数参数的修饰符。

然后,在您的语义中,当您将函数调用绑定到函数定义时,您可以通过引用而不是按值将参数绑定到参数。你如何做到这完全取决于你如何实现你的语义。您是否正在解释解析器生成的某些IR或AST?或者您是否为某些目标执行模型生成某种代码?

1 更常见的是,您可以使用inout&