●69P リスト3−17
(誤)
public abstract class JTCode { } リスト JTCode.java 今のところ、中身はありません。(正)
public abstract class JTCode { public JTCode run() throws Exception{ return this; } } リスト JTCode.java 今のところ、中身はメソッドrun()だけになります。 run()メソッドは実際の計算を行うメソッドです。クラスJTCodeでは単にthisを返すようにしておきます。こうしておけば、後で出てくる数値を表すクラスなど、計算を必要としないいくつかのクラスで使い回せて便利です。
●76P 9行目
(誤)
System.out.println("result = " + code.toString()); // (ア)結果を表示(正)
System.out.println("result = " + code.run().toString()); // (ア)結果を表示
●91P リスト4−9 3行目から
●97P リスト4−13 3行目から
●210P リスト8−4 3行目から
(誤)
switch(token){ case EOS: // 空のプログラム break; case INT: code = new JTInt((Integer)lex.value()); getToken(); break;(正)
switch(token){ case TokenType.EOS: // 空のプログラム break; case TokenType.INT: code = new JTInt((Integer)lex.value()); getToken(); break;
●92P (リストを除いた)1行目(誤)
run()メソッドは実際の計算を行うメソッドです。クラスJTCodeでは単にthisを返すようにしておきます。こうしておけば、後で出てくる数値を表すクラスなど、計算を必要としないいくつかのクラスで使い回せて便利です。(正) (上記を削除)
●92P リスト4−10 4〜5行目
(誤)
private JTCode code1; // 左側の式 private JTCode code2; // 右側の式(正)
protected JTCode code1; // 左側の式 protected JTCode code2; // 右側の式
●199P 下から10行目
(誤)
JTCode c = (JTCode)list.get(i);(正)
JTCode c = (JTCode)args.get(i);
●212P リスト8−5
(誤)
import java.util.ArrayList; public class JTDotExpr extends JTCode { private JTCode code; private JTSymbol symbol; private ArrayList list = null; public JTDotExpr(JTCode c, JTSymbol sym) { code = c; symbol = sym; } public JTCode run() throws Exception { JTCode c; c = code.run(); c = c.message(symbol); // (A) return c; } }(正)
public class JTDotExpr extends JTCode { private JTCode code; private JTSymbol symbol; public JTDotExpr(JTCode c, JTSymbol sym) { code = c; symbol = sym; } public JTCode run() throws Exception { JTCode c; c = code.run(); c = c.message(symbol); // (A) return c; } }
●231、232P リスト9−7
(誤)
import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; public class JTObject extends JTCode { Hashtable slots; public JTObject(Hashtable tbl){ slots = tbl; } public String toString() { return "(正)
import java.util.ArrayList; import java.util.Enumeration; import java.util.Hashtable; public class JTObject extends JTCode { Hashtable slots; public JTObject(Hashtable tbl){ slots = tbl; } public String toString() { return "
●238P 例3(●248Pも同様)
(誤)
o = object { def x = 1; // インスタンス変数x fun f(){ def x = 3; // ローカル変数x x; // ここのxはローカル変数xを指して欲しい。 }; }; o.f(); // => 3が返ってきてほしい。(正)
o = object { def x = 1; // インスタンス変数x fun f(){ def x = 3; // ローカル変数x x; // ここのxはローカル変数xを指して欲しい。 }; }; print(o.f()); // => 3が返ってきてほしい。