Преобразование операторов возврата в нормальную форму

Я пытаюсь выяснить, как преобразовать императивный код в A-нормальную форму. Я вижу, как это сделать для многих конструкций. Например, do ... while цикл может преобразовать в

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

continue внутри тела будет преобразовано в немедленный хвост рекурсивный вызов loop(), break преобразовал бы в хвостовой рекурсивный вызов к следующему куску кода после цикла.

Но что делает return заявление преобразовать в? Я не имею в виду одно в конце тела функции, где вам просто нужно исключить ключевое слово, чтобы получить неявный возврат, типичный для ANF и других функциональных обозначений, но одно в середине, которое сразу же возвращается из всей функции. Как это обычно представлено в ANF?

0 ответов

Другие вопросы по тегам