我必须实现一种方法来解析YACC和LEX中通过引用传递的参数的函数。 例如:
int main (){
int a = 5;
f(a);
printf(a)
return 0;
}
f(passed_by_reference int b){
b++;
}
我尝试使用符号表,但无法匹配变量a和变量b,因为在表中它们像a和b一样保存,因此更改会丢失。
有什么想法吗?
答案 0 :(得分:0)
就解析而言,您只需要将关键字passed_by_reference
1 识别为函数参数的修饰符。
然后,在您的语义中,当您将函数调用绑定到函数定义时,您可以通过引用而不是按值将参数绑定到参数。你如何做到这完全取决于你如何实现你的语义。您是否正在解释解析器生成的某些IR或AST?或者您是否为某些目标执行模型生成某种代码?
1 更常见的是,您可以使用inout
或&
。