- 36頁,下の注
「(context-dependent grammar)」→「(context-sensitive grammar)」
- 67頁,プログラムの下から5行
「while (charClassT[ch]==digit) {」
→
「}
while (charClassT[ch]==digit) {」
- 84頁,上15行
「Director(A, α)はAをaに展開」→「Director(A, α)はAをαに展開」
- 85頁,下11行〜下8行
「b) A→αBβ(B∈VN)なる生成規則があればFirst(β)をFollow(B)に加え
る.ただし,ε∈First(β)のときεは加えない.
c) A→αBなる生成規則があるか,またはA→αBβなる生成規則がありε∈
First(β)ならば,Follow(A)をFollow(B)に加える.」
→
「b) A→αBβ(B∈VN)なる生成規則について
(i) First(β)をFollow(B)に加える.ただし,ε∈First(β)のときεは加え
ない.
(ii) ε∈First(β),またはβ=εならば,Follow(A)をFollow(B)に加え
る.」
- 94頁,上1行目
「より一般的には、β⇒*εのとき」→「より一般的には、β≠εでβ⇒*εのとき」
- 124頁,上5,6行
「4角」→「四角」
- 131頁,下4行
「jpc」の「j」の下線を除く
- 136頁,下12行
「2番地であるとしている.」
→
「2番地であるとしている.命令語のアドレス部はレベル番号と相対アドレスからなる.例えば「load 0 4」はレベル0のデータ領域の中の相対アドレス4のデータをロードする命令である.」
- 136頁,下3行
「(3)」→「(5)」
- 135頁,下1行,図8.3
- 136頁,上3行(2カ所),5行,9行(2カ所),11行,13行
- 137頁,上7行,図8.4
- 138頁,図8.5,図8.6
- 141頁,下7行
「トップ」→「top」
(注意:134頁の下と135頁の上の「トップ」は変更しない)
- 141頁,下4行
「cal(コール)」→「cal(コール),ret(リターン)」
- 142頁,上1行
「先頭番地.」
→
「先頭番地であり,ret命令のレベルは関数本体のレベル,番地部は関数の引数の個数である.」
- 142頁,上4行
「,ret(リターン)」→「」
- 142頁,上5〜6行
「,retのときレベル.」→「である.」
- 153頁,上1行
「checkGet」→「checkGet」
- 155頁,下8,9行
case End: case Semicolon: /* 空文を読んだことにして終わり */
return;
→
case End: case Semicolon: case Period: /* Follow(statement)のトークン */
return; /* の場合:空文を読んだことにして終わり */
- 157頁,下12行
errorMessage("\\#par"); /* pars(tIndex)は仮引数の個数 */
→
errorMessage("unmatched par"); /* pars(tIndex)は仮引数の個数 */
- 158頁,下
case Equal:genCodeO(eq); break;
case Lss: genCodeO(ls); break;
case Gtr: genCodeO(gr); break;
case NotEq: genCodeO(neq); break;
case LssEq: genCodeO(lseq); break;
case GtrEq:genCodeO(greq); break;
→
case Equal: genCodeO(eq); break;
case Lss: genCodeO(ls); break;
case Gtr: genCodeO(gr); break;
case NotEq: genCodeO(neq); break;
case LssEq: genCodeO(lseq); break;
case GtrEq: genCodeO(greq); break;
- 164頁,下3分の1
「void errorType(char *m) /* 型エラーを.texファイルに出力 */
{ 」
→
「void errorType(char *m) /* 型エラーを.texファイルに出力 */
{
printSpaces();」
- 165頁,真ん中辺
「(i==(int)Id)」→「(i==(int)Id)」
- 166頁,下13行
「spaces+=TAB;」→「spaces+=TAB; /* 行の先頭のタブ以外は不正確 */」
- 167頁,上3,4行,および72頁の真ん中辺
「if (i > MAXNAME)
errorMessage("too long");」
→
「if (i >= MAXNAME){
errorMessage("too long");
i = MAXNAME - 1;
}」
- 167頁,上16行,および72頁,下13行
「num = 0; i = 0;」→「num = 0;」
- 168頁,下5〜9行
「static void printSpaces() /* 空白や改行の印字 */
{
int i = CR;
if (i-- > 0){
fprintf(fptex, "\\par\n");
while (i-- > 0)
fprintf(fptex, "\\ \\par\n");
}
i = spaces;
while (i-- > 0)
fprintf(fptex, "\\ ");
}」
→
「static void printSpaces() /* 空白や改行の印字 */
{
while (CR-- > 0)
fprintf(fptex, "\\ \\par\n");
while (spaces-- > 0)
fprintf(fptex, "\\ ");
CR = 0; spaces = 0;
}」
- 169頁,下7行
「(i==(int)Num)」→「(i==(int)Num)」
- 172頁,下15行
「tIndex++」→「++tIndex」
- 176頁,上10行
「#define MAXMEM 2000 /* 実行時スタックの最大長さ */」
→
「#define MAXMEM 2000 /* 実行時スタックの最大長さ */
#define MAXREG 20 /* 演算レジスタスタックの最大長さ */」
- 179頁,真ん中あたり
「 if (top >= MAXMEM)」
→
「 if (top >= MAXMEM-MAXREG)」
- 182頁,上2行
「Thch」→「Tech」
- 182頁,下5行
「Institute」→「Institut」
- 185頁,1章2.の解答の図のT型の中
「M」→「VL」
- 187頁,4章1.(c)の解答の(4)

初期状態からa,aで遷移した状態が最終状態(2重丸)となっているのを1重丸とする
- 187頁,4章1.(c)の解答の(5)

(1)初期状態からcで遷移した状態が1重丸となっているのを最終状態(2重丸)とする
(2)右端の状態(初期状態からc,b,cで遷移した状態)を削除し,初期状態からc,b,cで遷移する状態は,初期状態からc,a,aで遷移した状態と同じとする
- 188頁,5章1.(4)の解答の最後の行
「LL(1)文法である」→「LL(1)文法でない」
- 193頁,下5行
「2文法 104」→「2分法 105」