什么是A-Normal表格?

时间:2009-05-06 05:27:44

标签: compiler-construction compiler-development

我正在阅读有关各种中间形式的内容,但除了类似wiki的条目外,我无法获得有关A-normal表单的信息。有没有人知道这个或有很好的资源呢?

2 个答案:

答案 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,它给出了行政范式中严格语言的小步操作语义。