Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction 如何为具有嵌套函数的语言设计中间表示?_Compiler Construction_Intermediate Language_Compiler Development - Fatal编程技术网

Compiler construction 如何为具有嵌套函数的语言设计中间表示?

Compiler construction 如何为具有嵌套函数的语言设计中间表示?,compiler-construction,intermediate-language,compiler-development,Compiler Construction,Intermediate Language,Compiler Development,我正在为带有嵌套函数的语言编写编译器 我决定使用display从内部函数访问外部函数的局部变量,我不知道如何表示将激活记录写入中间表示的display数组,因为要做到这一点,我需要访问堆栈指针寄存器,它依赖于机器 还有另一种解决方案,我可以将这一步推迟到编译的最后阶段,即机器依赖的翻译,而不是将激活记录的编写转换为中间表示 所以,我的问题是: 哪种解决方案更好,如果是第一种,如何表示将激活记录写入中间表示的数组?我认为您应该使用第二种。我认为您应该使用第二种。

我正在为带有嵌套函数的语言编写编译器

我决定使用display从内部函数访问外部函数的局部变量,我不知道如何表示将激活记录写入中间表示的display数组,因为要做到这一点,我需要访问堆栈指针寄存器,它依赖于机器

还有另一种解决方案,我可以将这一步推迟到编译的最后阶段,即机器依赖的翻译,而不是将激活记录的编写转换为中间表示

所以,我的问题是:


哪种解决方案更好,如果是第一种,如何表示将激活记录写入中间表示的数组?

我认为您应该使用第二种。我认为您应该使用第二种。