home *** CD-ROM | disk | FTP | other *** search
- Understanding and Writing Compilers
- by Richard Bornat
- ISBN 0 333 21732 2
- published by Macmillan
-
- Errata from Geoff Collyer.
-
- General comments: stack manipulation, especially procedure entry and
- exit, assumes it is okay to reference beyond top of stack, which is not
- true in the presence of interrupts which use the same stack. Should
- adjust T first, move to -1(T) second (as on PDP-11 UNIX with hardware
- SP and either kernel stack and hardware interrupts or user stack and
- signals (software interrupts)).
-
- fig 2.5: minute is a name, not a number
- fig 3.12: missing " in Error() call after case ifsymbol
- p.68: footnote 1 is missing a period
- p.91: page heading & number are missing; footnote 1 contains the typo
- `sytactic' rather than `syntactic'
- fig 7.4: SKIPGT should be SKIPLE
- fig 7.17: label missing
- p.140: `bounds of of the vector' has one too many `of's in 2nd paragraph
- fig 9.5: error checking code is too late, should be before ADD
- fig 9.7: JSUB 2, should be JSUB L,
- fig 9.18: missing . in nodep^left
- fig 10.4: optimised order: y := 3 should be y := 4
- fig 10.12: ``DO 1 K=1,'' is missing 50
- p.170: .PP When the same optimisations are performed with the *the*
- fig 12.3: uses != instead of the correct \=
- fig 12.10: disagrees with p. 208; roles of p1 & p3 should be swapped (verify)
- fig 13.5 remove ``,'' in ``ADDn,''
- fig 13.9 ``RETNi ,0(L)'' should be ``RETNi ,0(T)''
- fig 13.15 `declpart^node' should be `nodep.declpart'?
- p.227 ``F and T registers'' should be ``F and E registers''
- ch. 14 - alternately do GC my way (see attachment)
- fig 14.9 omit 2nd ``counter''? are start & mem supposed to be the same?
- fig 14.11 ``a.tail :='' will produce a cycle; should be ``b.tail :=''?
- fig 15.4 first ``T->P'' should be ``F->P''
- p.262 in 10., 0 <= i <= n should be 1 <= i <= n
- fig 15.10 S1, S2, S3 in Input: should be E2, S1, S2
- fig 15.2 ``1. n'' should be ``1..n''
- p.224 2nd complete paragraph: sentences can also start with + or - terminals
- p.281 footnote is missing ``1''
- fig 16.13 `default' needs `:' after it
- fig 16.17b ``both alpha and gamma'' should be ``both alpha and beta'';
- in (iv.b), FIRST* symbols of delta may follow the LAST* symbols of
- both gamma *and* alpha
- fig 16.29 tree for B shows last node of 4 on its 1st line pointing at 5;
- should be B. Tree for E is missing loop from 2nd (t,i) to
- (a,(t,+),NULL)
- fig 16.30 :=+ should be +:=
- p.313 how can the input of fig 17.7 use the matrix of fig 17.6?
- [in] != [a-g]; i is identifiers and n is numbers?
- this is not made explicit anywhere
- p.344 2nd word (therefore) needs a capital
- fig 18.21 won't accept fig 18.22's input; add ``E->@V''?
- fig 18.23 don't understand Formal production
- p.374 last line: ``... of it *it* quickly'' - too many `it's
-
- p.380 is a wonderful denunciation of ld -s & strip
-