我正在阅读有关各种中间形式的内容,但除了类似wiki的条目外,我无法获得有关A-normal表单的信息。有没有人知道这个或有很好的资源呢?
答案 0 :(得分:6)
请参阅Administrative normal form。
在计算机科学,行政 normal form(缩写为ANF)是一个 规范形式的节目,这是 由Flanagan等人1993年介绍 作为中间人 功能编译器中的表示 进行后续转换 机器代码更直接。
在ANF中,函数的所有参数 必须是微不足道的。也就是评价 每个论点必须停止 立即
语法
以下BNF语法描述 纯λ演算修改为 支持ANF的限制:
EXP ::= VAL VAL
| let VAR = EXP in EXP
VAL ::= ? VAR . EXP
| VAR
编译器或编译器中使用的ANF变体 在研究中经常允许常数, 记录,元组,多参数 功能,原始操作和 条件表达式也是如此。
Flanagan,Cormac; Sabry,Amr; Duba,Bruce F.; Felleisen,Matthias。 "The Essence of Compiling with Continuations"可能是最终来源。
还在cs252r : Advanced Functional Programming上找到了一些注释。
答案 1 :(得分:2)
本质上,管理规范形式的lambda术语可以作为评估自身的过程来读取,因为应用程序的所有参数必须已经被“评估”,因此必须明确评估参数的顺序
在this independently interesting paper中有一个关于编译惰性函数语言的严格中间语言的有趣概述。 3.1节及以下,特别是图7,它给出了行政范式中严格语言的小步操作语义。