15

さまざまな中間形式について読んでいましたが、wiki のようなエントリ以外に A-normal 形式に関する情報を取得できません。ここの誰かがこれについて知っているか、それについて良いリソースを持っていますか?

4

2 に答える 2

7

管理通常形式を参照してください。

コンピュータサイエンスでは、管理正規形(略してANF)はプログラムの標準形であり、Flanagan et al 1993によって導入され、機能コンパイラの中間表現として機能し、その後の機械語への変換をより直接的にします。

ANFでは、関数へのすべての引数は自明でなければなりません。つまり、各引数の評価はすぐに停止する必要があります。

文法

次のBNF文法は、ANFの制約をサポートするために変更された純粋なλ計算を説明しています。

EXP ::= VAL 
      | let VAR = VAL in EXP
      | let VAR = VAL VAL in EXP

VAL ::= VAR
      | λ VAR . EXP

コンパイラや研究で使用されるANFのバリアントは、定数、レコード、タプル、複数引数関数、プリミティブ演算、および条件式も許可することがよくあります。

フラナガン、コーマック; Sabry、Amr; Duba、Bruce F.; Felleisen、Matthias。「継続を伴うコンパイルの本質」が決定的な情報源である可能性があります。

cs252r:AdvancedFunctionalProgrammingに関するいくつかのメモも見つかりました。

于 2009-05-06T05:42:27.440 に答える
4

本質的に、管理標準形式のラムダ項は、それ自体を評価するための手順として読み取ることができます。これは、アプリケーションへのすべての引数が既に「評価済み」である必要があり、したがって、引数を評価する順序を必ず明示する必要があるためです。

遅延関数型言語をコンパイルするための厳密な中間言語に関するこの独立した興味深い論文には、興味深い概要があります。セクション 3.1 以降、特に図 7 は、管理標準形式の厳密な言語のスモールステップ操作セマンティクスを示しています。

于 2009-06-21T23:50:38.630 に答える