コンパイラ – 原理と構造 – 初版 正誤表
コンパイラ – 原理と構造 – 初版 正誤表

第 8 章 機械語コードへのコンパイル

  1. 81.

    158ページ 11行目

    誤:

    ラムダ式

    正:

    ラムダ計算


  2. 82.

    158ページ (12行目)

    誤:

    ラムダ式

    正:

    ラムダ計算


  3. 83.

    158ページ 23行目

    誤:

    c

    正:

    [[c]]


  4. 84.

    160ページ 2行目(Acc(x)規則)

    誤:

    (S,E{x:v},𝙰𝚌𝚌(x)::C,D)(v::S,E,C,D)

    正:

    (S,E{x:v},𝙰𝚌𝚌(x)::C,D)(v::S,E{x:v},C,D)


  5. 85.

    160ページ 6行目

    誤:

    (S,E0{x:v0},C0,(E,C)::D)

    正:

    (S,E0{x:v1},C0,(E,C)::D)


  6. 86.

    160ページ 8行目

    誤:

    (S,E0{f:Rec(E0,f,x,C0),x:v0},C0,(E,C)::D)

    正:

    (S,E0{f:Rec(E0,f,x,C0),x:v1},C0,(E,C)::D)


  7. 87.

    161ページ 2-7行目

    誤:
    (,,𝙿𝚞𝚜𝚑(1)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚂𝚞𝚋)::,)
    (1::,,𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚂𝚞𝚋)::,)
    (2::1::,,𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚂𝚞𝚋)::,)
    (3::,,𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚂𝚞𝚋)::,)
    (2::3::,,𝙿𝚛𝚒𝚖(𝚂𝚞𝚋)::,)
    (1::,,,)
    正:
    (nil,nil,𝙿𝚞𝚜𝚑(1)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚊𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚜𝚞𝚋)::nil,nil)
    (1::nil,nil,𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚊𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚜𝚞𝚋)::nil,nil)
    (2::1::nil,nil,𝙿𝚛𝚒𝚖(𝚊𝚍𝚍)::𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚜𝚞𝚋)::nil,nil)
    (3::nil,nil,𝙿𝚞𝚜𝚑(2)::𝙿𝚛𝚒𝚖(𝚜𝚞𝚋)::nil,nil)
    (2::3::nil,nil,𝙿𝚛𝚒𝚖(𝚜𝚞𝚋)::nil,nil)
    (1::nil,nil,nil,nil)

  8. 88.

    161ページ 9-14行目

    誤:
    (,,𝙿𝚞𝚜𝚑(1)::𝙿𝚞𝚜𝚑(2)::𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::,)
    (1::,,𝙿𝚞𝚜𝚑(2)::𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::,)
    (2::1::,,𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::,)
    ((1,2)::,,𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::,)
    (3::(1,2)::,,𝙿𝚊𝚒𝚛::,)
    (((1,2),3)::,,,)
    正:
    (nil,nil,𝙿𝚞𝚜𝚑(1)::𝙿𝚞𝚜𝚑(2)::𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::nil,nil)
    (1::nil,nil,𝙿𝚞𝚜𝚑(2)::𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::nil,nil)
    (2::1::nil,nil,𝙿𝚊𝚒𝚛::𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::nil,nil)
    ((1,2)::nil,nil,𝙿𝚞𝚜𝚑(3)::𝙿𝚊𝚒𝚛::nil,nil)
    (3::(1,2)::nil,nil,𝙿𝚊𝚒𝚛::nil,nil)
    (((1,2),3)::nil,nil,nil,nil)

  9. 89.

    161ページ 16行目(説明を追加)

    誤:

    𝙸𝚏(C1,C2)命令は,スタックトップの値を 引数として取り,その値がtrueならコードC1を, falseならコードC2を実行する.

    正:

    𝙸𝚏(C1,C2)命令は,スタックトッ プの値がtrueならコードC1を,falseならコー ドC2を実行する. ここでの表記C1@Cは,C1Cの連結を表す.


  10. 90.

    163ページ 9行目

    誤:

    (1::2::,{𝚡:1},𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::𝚁𝚎𝚝::,

    正:

    (1::2::,{𝚡:2},𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::𝚁𝚎𝚝::,


  11. 91.

    163ページ 11行目

    誤:

    (3::,{𝚡:1},𝚁𝚎𝚝::,(,𝙿𝚞𝚜𝚑(3)::𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::)::)

    正:

    (3::,{𝚡:2},𝚁𝚎𝚝::,(,𝙿𝚞𝚜𝚑(3)::𝙿𝚛𝚒𝚖(𝙰𝚍𝚍)::)::)


  12. 92.

    165ページ 14行目

    誤:

    c¯=c

    正:

    [[c]]¯=[[c]]


  13. 93.

    166ページ 13行目

    誤:

    v=Cls(E,x,e)

    正:

    v=Cls(E,x,e1)


  14. 94.

    169ページ 4,5行目(2箇所)

    誤:

    (𝙿𝚛𝚘𝚓𝟷::K)

    正:

    𝙿𝚛𝚘𝚓𝟷::K   (余分な括弧をトル)


  15. 95.

    169ページ 6行目

    誤:

    *

    正:


  16. 96.

    175ページ 10行目

    誤:

    fun f x = if eq(x,0) then 1 else mul(x, f sub(x,1));

    正:

    fun f x = if prim(eq, x, 0) then 1 else
               prim(mul, x, f prim(sub, x, 1));


  17. 97.

    175ページ 23行目(ページレイアウト維持のため)

    誤:

    Ret
    ]

    正:

    Ret ]