Rating:  Summary: If someone needs to write a parser, this is the book. Review: The book is compact, well written and describes really every problem with LEX & YACC I can think of. I've got every answer I had about these tools in this book. It's a good book for everyone who'll write a compiler or any other program which needs parsing.The only thing I have is the lack of Bison-describing. They reference to the Bison-documentation, but this would make the book complete.
Rating:  Summary: good book, but can be better Review: The book is fairly aged at internet time and should be replaced by a newer editions. flex and bison/byacc are easier to find as they are free. They need a bit more spaces. Also, people read a book want to spend less time reading the on-line manuals on screen. The C part of the examples are not paradigm work. Uninitialized pointers are casually used and memory are some times never freed. Lex and yacc seems best with well-defined classroom or smaller projects. I am interested to learn how to solve the more complicated real world problems.
Rating:  Summary: Not good, but beggars can't be choosers Review: There is too much repetition of basic ideas in the first few chapters of the book, and not enough coverage of more advanced topics (like how to use marker nonterminals, how to use $<>$ constructs, etc). The discussion of shift/reduce and reduce/reduce conflicts in chaper 8 is pretty good though and would make a fine introduction for a beginner wanting to learn /basic/ concepts. Good error handling is definitely a black art, but I still would have liked to have been given more information about it in chapter 9. The examples were also a bit too soft. Chapters 4 and 5 have some interesting (and highly unusual)examples for scanning and parsing applications, but they do not show off many of the advanced capabilites of lex and yacc. What this book really needs are couple of examples that demonstrate how to overcome classic scanning and parsing horrors (like how to do type checking in, say, C); a chapter like this instead of one of chapters 4 or 5 would be great. Even today lex and yacc are very important tools in the computer scientist's toolkit. They were designed 25 (or so) years ago, but /real/ documentation is still nonexistant. This means that unfortunately, this book is one of the best. I think that the FSF's Bison manual is much better value for money. It also does not cover advanced topics in enough depth, but what is does explain, it explains quite clearly.
Rating:  Summary: Not good, but beggars can't be choosers Review: There is too much repetition of basic ideas in the first few chapters of the book, and not enough coverage of more advanced topics (like how to use marker nonterminals, how to use $<>$ constructs, etc). The discussion of shift/reduce and reduce/reduce conflicts in chaper 8 is pretty good though and would make a fine introduction for a beginner wanting to learn /basic/ concepts. Good error handling is definitely a black art, but I still would have liked to have been given more information about it in chapter 9. The examples were also a bit too soft. Chapters 4 and 5 have some interesting (and highly unusual)examples for scanning and parsing applications, but they do not show off many of the advanced capabilites of lex and yacc. What this book really needs are couple of examples that demonstrate how to overcome classic scanning and parsing horrors (like how to do type checking in, say, C); a chapter like this instead of one of chapters 4 or 5 would be great. Even today lex and yacc are very important tools in the computer scientist's toolkit. They were designed 25 (or so) years ago, but /real/ documentation is still nonexistant. This means that unfortunately, this book is one of the best. I think that the FSF's Bison manual is much better value for money. It also does not cover advanced topics in enough depth, but what is does explain, it explains quite clearly.
Rating:  Summary: Really good book Review: This book is really good, it explains items on a level that makes it easy for everyone to understand. But I do have one complaint though, I wish that it was longer and explained some more advanced topics deeper.
Rating:  Summary: Disappointing Review: This book was disappointing. I had hoped for a tutorial and reference on Lex/Yacc Flex/Bison for building language recognisers, but in the tradition of "yet another boring and useless reverse polish notation" calculator - it gives us a desktop infix expression calculator. (How could I have possibly guessed?) The book presents some interesting material for those who want to parse SQL, but if you're eager to learn about translating programming languages, this book is nearly useless. It gives superficial and confusing treatment of language constructs like "if-then-else" statements, and gives only an exercise for recognising a function call and "playing it back." (I feel these are cop-outs.) It also fails to explain clearly how to construct unambiguous grammars, or use facilities for operator precedence or whatver to control the ambiguity. To be fair, I am guessing this was meant as a reference for Lex/Yacc for those who already know how to construct language recognisers and have some knowledge of using these tools. But then why bother to give especially bad tutorial material in the early chapters if this were the case? This books is also in need of a new edition.
Rating:  Summary: Disappointing Review: This book was disappointing. I had hoped for a tutorial and reference on Lex/Yacc Flex/Bison for building language recognisers, but in the tradition of "yet another boring and useless reverse polish notation" calculator - it gives us a desktop infix expression calculator. (How could I have possibly guessed?) The book presents some interesting material for those who want to parse SQL, but if you're eager to learn about translating programming languages, this book is nearly useless. It gives superficial and confusing treatment of language constructs like "if-then-else" statements, and gives only an exercise for recognising a function call and "playing it back." (I feel these are cop-outs.) It also fails to explain clearly how to construct unambiguous grammars, or use facilities for operator precedence or whatver to control the ambiguity. To be fair, I am guessing this was meant as a reference for Lex/Yacc for those who already know how to construct language recognisers and have some knowledge of using these tools. But then why bother to give especially bad tutorial material in the early chapters if this were the case? This books is also in need of a new edition.
Rating:  Summary: You will succeed Review: This book will get you writing language compilers in Lex and Yacc. It is clearly written, to the point, and has a wealth of useful information. It should be supplemented with a more theoretical work, like Aho, Sethi and Ullman's book on compilers.
Rating:  Summary: A must-read for language designers Review: This book, along with the Dragon Book, forms the required reading for anyone interested in compilers and language processing. I was quite impressed by the clarity of the examples, and the breadth of the different lex and yacc implementations that it covers. If you need to do complex parsing or language design, definitely pick up a copy of this.
Rating:  Summary: Nice but incomplete Review: This is a nice introduction for anyone who wants to start working with lex and yacc. What it explains, it explains well. Unfortunately, there is much it does not explain at all. For example, how do I process conditional statements, how do I deal with functions and procedures, how do I incorporate classes in my language. The book needs a second volume which picks up where this one ends.
|