9781565920002 & yacc, 2nd Edition by John R. Levine, Tony Mason, and Doug Brown This errata page lists errors outstanding in the most recent printing. Errors that were corrected in the 9/99 printing and previous printings are NOT listed on this page. Send error reports and technical questions to booktech@oreilly.com. This page was last modified on July 23, 2004. Here's the key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: (xix) 3rd paragraph from bottom: The line reads: The Glossary lists technical terms language and compiler theory. It should read: The Glossary lists technical terms from language and compiler theory. {17-18} IN PRINT: Example 1-7; main() { do { yyparse(); } while (!feof(yyin)); } SHOULD BE: main() { while(!feof(yyin)) { yyparse(); } } AUTHOR: Sometime in the past decade they changed f9781565920002 so that yyin isn't initialized until the first call to the 9781565920002er. The downloadable code is correct. {69} in symlook() function; char *p; (not used, should be removed, although they don't hurt anything.) (Same with page 75.) (111) after first paragraph; WHERE Foods.type = "fruit" should be changed to WHERE Foods.type = 'fruit'; 2nd bit of code, 3rd line; WHERE Courses.flavor = Foods.flavor should be: WHERE Courses.flavor = Foods.flavor; {124} towards the bottom of page; WHERE Foods.type = "fruit" should be changed to WHERE Foods.type = 'fruit'; {126} middle of page; GRANT SELECT, UPDATE (address, telephone ON employees TO PUBLIC should be: GRANT SELECT, UPDATE (address, telephone ON employees TO PUBLIC; GRANT ALL ON foods TO tony, dale WITH GRANT OPTION should be: GRANT ALL ON foods TO tony, dale WITH GRANT OPTION; GRANT REFERENCES (flavor) ON Foods TO PUBLIC should be: GRANT REFERENCES (flavor) ON Foods TO PUBLIC; {127} 2/3 down the page; ORDER BY sequence ASC should be: ORDER BY sequence ASC; {133} Change (or else INTO will be necessary in all SELECTs): select_statement: SELECT opt_all_distinct selection INTO target_commalist table_exp ; to select_statement: SELECT opt_all_distinct selection INTO target_commalist table_exp | // manually added (faisal) SELECT opt_all_distinct selection table_exp ; (135) last line; HAVING COUNT(*) >=3 should be: HAVING COUNT(*) >=3; {157} Example 6-1; extern int *myinputlim; /* end of data */ should be changed to extern char *myinputlim; /* end of data */ {315} reader comment regarding a change made in the 9/99 reprint: The correction said to replace "COMPARISON" with "=". I don't think this change is warranted. The change of "=" to COMPARISON in assignments would allow the following (incorrect) SQL statements: UPDATE T1 SET C1 < NULL WHERE C1 >= 23 The "<" is wrong here and should generate a syntax error. The grammar as corrected says its right. Please put back the "=" (or better still add a token, say ASSIGN, and merge it with the COMPARISON processing). This would also reverse the change on line 321.