将“ return”语句转换为A范式

时间:2019-02-18 10:37:27

标签: functional-programming compiler-construction anf

我试图弄清楚如何将命令性代码转换为A-normal形式。我可以看到如何对许多结构进行操作。例如,do ... while循环可能会转换为

letrec
    loop() =
        body
        let t = test
        if t then loop() else ()
    loop()

体内的continue将转换为对loop()的立即尾部递归调用。 break将转换为循环后对下一段代码的尾部递归调用。

但是return语句转换成什么?我并不是说在函数主体的末尾,您只需要省略关键字即可获得典型的ANF和其他函数符号的隐式返回,而是中间的一个,它立即从整个函数中返回。在ANF中通常如何表示?

0 个答案:

没有答案