Compilers: Principles, Techniques, & Tools

Compilers: Principles, Techniques, & Tools

  • Downloads:4347
  • Type:Epub+TxT+PDF+Mobi
  • Create Date:2022-12-10 05:53:23
  • Update Date:2025-09-06
  • Status:finish
  • Author:Jeffrey D. Ullman
  • ISBN:0321491696
  • Environment:PC/Android/iPhone/iPad/Kindle

Summary

This introduction to compilers is the direct descendant of the well-known book by Aho and Ullman, Principles of Compiler Design。 The authors present updated coverage of compilers based on research and techniques that have been developed in the field over the past few years。 The book provides a thorough introduction to compiler design and covers topics such as context-free grammars, fine state machines, and syntax-directed translation。

Download

Reviews

Pierre Jacomet

I read both version 1 and version 2 of this book。 version 1 uses C language for the examples wheres version 2 uses Java。 In some parts I prefer version 1 and in other parts I prefer version 2。 Both versions are still mostly the same core concepts。For both cases the important chapters for today's (2022) state of compiler technology would be 1 through 4。 Chapters 1 and 2 are the introduction to compiler technology, chapter 3 lexical analysis and 4 parsing。 These amount to how 95% of folks would go I read both version 1 and version 2 of this book。 version 1 uses C language for the examples wheres version 2 uses Java。 In some parts I prefer version 1 and in other parts I prefer version 2。 Both versions are still mostly the same core concepts。For both cases the important chapters for today's (2022) state of compiler technology would be 1 through 4。 Chapters 1 and 2 are the introduction to compiler technology, chapter 3 lexical analysis and 4 parsing。 These amount to how 95% of folks would go about building a front end for a compiler today。 Chapter 5 syntax directed translation and 6 intermediate code generation are interesting and more for specific cases。The remainder of the chapters which are related mostly to backend optimization or runtime environment。 Definitely interesting, but because (1) As of today technology on the back end has progressed a lot and (2) Backend is notoriously more difficult as it is much more tightly bound to the CPU architecture, so no real benefit for folks that want to build something cross-platform。 IMO most of nowadays compiler writers in general use an intermediate representation language such as the JVM IR or net IR or LLVM IR which is what their front end writes to, using the APIs that either LLVM or 。NET provide。 The back end then takes care of translating the IR into actual machine instructions which is the more difficult and more uninteresting part of language writing。 。。。more

Alex

Excellent reference with thorough coverage of core concepts。 Not particularly approachable as a first text on the subject without some external guidance, but covers many useful techniques with utility beyond just compiler construction。 I suspect I am more likely to return to this one for reference than many other course-assigned texts in the future。

xvvifzmrr-

I won't recommend the book for newbie。The learning curve is too cliffy。 I won't recommend the book for newbie。The learning curve is too cliffy。 。。。more

Vladimir Kameñar

This book teaches an abstract way of thinking。 In theory anyone can write a compiler without reading this book。 I suppose that most people who read this book don't write any compilers。 However, this book did change my programming mentality。 It's one of the very few books I do recommend。 This book teaches an abstract way of thinking。 In theory anyone can write a compiler without reading this book。 I suppose that most people who read this book don't write any compilers。 However, this book did change my programming mentality。 It's one of the very few books I do recommend。 。。。more

Joe

THE standard compiler textbook, but so badly written with no regard for didactics。 Avoid this one and go for a better alternative, such as "Engineering a Compiler" by Keith D。 Cooper。 THE standard compiler textbook, but so badly written with no regard for didactics。 Avoid this one and go for a better alternative, such as "Engineering a Compiler" by Keith D。 Cooper。 。。。more

Saurabh Jha

Good content, horrendous writing。The good thing about this book is it is comprehensive and covers a lot of ground from different vantage points。 For example, the parsing chapters also cover the design of lex and yacc apart from basic topics。 The type checking and runtime environment chapters had examples from C and ML to cover different scenarios。Now the bad parts。 The book is awfully written and I cannot understand how can a book in its 2nd (or 3rd?) edition continue to be so bad。 It was shoddy Good content, horrendous writing。The good thing about this book is it is comprehensive and covers a lot of ground from different vantage points。 For example, the parsing chapters also cover the design of lex and yacc apart from basic topics。 The type checking and runtime environment chapters had examples from C and ML to cover different scenarios。Now the bad parts。 The book is awfully written and I cannot understand how can a book in its 2nd (or 3rd?) edition continue to be so bad。 It was shoddy writing throughout but the prize for the worst writing are these topics:1。 Discussion of bottom up parsing where they directly jump to deterministic graph without discussing the non deterministic version。2。 Implementation of L-attributed SDTs with an obtuse of parser stack。3。 Implementation of type unification with their shoddy graph data structure。4。 Implementation of run time system for ML using "display" which is incomprehensible。Another consistent problem is their horrible use of passive voice。 This interacts really badly with their discussion of mathematical aspects。 While the use of passive voice might be excusable, its shoddy use is not。Reading this book often felt like deciphering some ancient text。 I needed to translate a lot of obtuse writing into something that can be understood in my head。 This translation happens for all readings involuntarily but it was alarming I had to consciously do it for this book。I am not sure why is this book called a "classic" computer science book。 It is more like a kind of book that students are forced to study by their professors。 This book is impossible to read unless you are following some other source。 I followed Prof。 Alex Aiken's lectures https://archive。org/details/academict。。。This book might be responsible for the unpopularity of the study and research in programming languages。 I agree compilers are not easy but this book has taken a difficult topic and made it incomprehensible thereby doing a disservice to this whole field of study。 。。。more

Stefan

Rather theoretical take on the subject, I clearly got better understanding what compilers (parsers, lexers, optimisers etc) do, but I doubt I'd get far with just that knowledge。 Especially in the world of LLVM or Roslyn。 So have a scan if you must, but looks elsewhere for practical details (TODO: update the review with link to blog entry once I know where to look ;-) Rather theoretical take on the subject, I clearly got better understanding what compilers (parsers, lexers, optimisers etc) do, but I doubt I'd get far with just that knowledge。 Especially in the world of LLVM or Roslyn。 So have a scan if you must, but looks elsewhere for practical details (TODO: update the review with link to blog entry once I know where to look ;-) 。。。more

Tanzila

from where i can get this complete book to read 。。。?

Lane Surface

Currently reading, but overall this book is very digestible for me。 I haven't found myself easily lost。 The language used is clear and comprehensive。 Maybe a little dry at times, though the content is quite academic in nature, so that is to be expected。 Currently reading, but overall this book is very digestible for me。 I haven't found myself easily lost。 The language used is clear and comprehensive。 Maybe a little dry at times, though the content is quite academic in nature, so that is to be expected。 。。。more

Carter

A classic but now bit dated but the basics in this field haven't changed much。 I would speculate not knowing too much yet about certain aspects of modern compiler design research yet that one would have to in order to get a full picture look at recent PLDI and POPL proceedings。 I find the text compared to say Sipser for example lacking in clarity in terms of presentation which is why I took off a star。 It's a bit too note like and driven by examples as opposed to consisting of well structured ex A classic but now bit dated but the basics in this field haven't changed much。 I would speculate not knowing too much yet about certain aspects of modern compiler design research yet that one would have to in order to get a full picture look at recent PLDI and POPL proceedings。 I find the text compared to say Sipser for example lacking in clarity in terms of presentation which is why I took off a star。 It's a bit too note like and driven by examples as opposed to consisting of well structured expository writing in some places。 Overall the best there is though at present。 。。。more

Roberto Luiz Souza Monteiro

Excelente livro。Excelente livro。 Muito melhor que as versões anteriores。 Apresenta um exemplo prático, construindo um compilador e apresenta exercícios de aprendizagem。 Recomendo。

Pierre-Henry Soria

Highly recommended! Probably not for everybody, but still a very well written and explained one!

Frederic Desgreniers

Really good book that helps understand how compilers work。 However, it's very heavy reading and somewhat outdated compared to alternatives。 Would still recommend for anyone that wants to get into compilers。 Really good book that helps understand how compilers work。 However, it's very heavy reading and somewhat outdated compared to alternatives。 Would still recommend for anyone that wants to get into compilers。 。。。more

Alfredo Amatriain

I've read few technical books that make such a bad attempt at being instructive。 What should be an interesting subject matter is weighted by the most convoluted and hard to follow explanations imaginable。 This book proves that it's not enough to be knowledgeable about a subject to write about it: you have to be able to lay out your ideas so they are no harder to grasp than necessary。 That's where this book utterly fails。 I've read few technical books that make such a bad attempt at being instructive。 What should be an interesting subject matter is weighted by the most convoluted and hard to follow explanations imaginable。 This book proves that it's not enough to be knowledgeable about a subject to write about it: you have to be able to lay out your ideas so they are no harder to grasp than necessary。 That's where this book utterly fails。 。。。more

Richard Callaby

This book can be a bit esoteric and hard to understand。 There are several other books that go into greater detail that can help fill in the gaps that are left out of this book。 I wouldn't read this book by itself to gain enough knowledge to really grasp the subject。 As well, there are many good open source compilers I would recommend anyone download and examine to understand how a compiler works in this modern age。This is a book you keep on your shelf to impress other geeks who may pass by。 With This book can be a bit esoteric and hard to understand。 There are several other books that go into greater detail that can help fill in the gaps that are left out of this book。 I wouldn't read this book by itself to gain enough knowledge to really grasp the subject。 As well, there are many good open source compilers I would recommend anyone download and examine to understand how a compiler works in this modern age。This is a book you keep on your shelf to impress other geeks who may pass by。 With that being said I would recommend everyone who is serious about the subject get it as it is pretty good despite what I said above。 。。。more

Chandan Khatwani

Great book for detailed explanation of compilers

Alexis Petrounias

Do not use as an introductory book to compiler construction。

Alessandro Pellizzari

Il primo capitolo è un'ottima introduzione alla scrittura di interpreti e compilatori, con relative grammatiche。 Molto lineare e comprensibile。Quando inizia a entrare nei dettagli diventa velocemente incomprensibile, passando a un linguaggio troppo strettamente matematico anche per concetti che sono molto più semplici da spiegare in "linguaggio umano" (come è riuscito a fare nel primo capitolo。。。)Capisco la necessità di usare formalismi accademici, ma non aiuta molti a comprendere。 Il primo capitolo è un'ottima introduzione alla scrittura di interpreti e compilatori, con relative grammatiche。 Molto lineare e comprensibile。Quando inizia a entrare nei dettagli diventa velocemente incomprensibile, passando a un linguaggio troppo strettamente matematico anche per concetti che sono molto più semplici da spiegare in "linguaggio umano" (come è riuscito a fare nel primo capitolo。。。)Capisco la necessità di usare formalismi accademici, ma non aiuta molti a comprendere。 。。。more

Jeremy West

Made it through the fundamental chapters related to my intro to compilers course: scanning, parsing, type checking, and code generation。 Seems to be a great resource, much better than the text assigned by the Professor。 The examples and algorithms were helpful in understanding the core concepts。

Jerry Hilts

Ouch。

Pravin Chukkala

I think this is helpful in my board exams

Rick Eversole

Must have reference work for computer programmers who want to work on compilers or interpreters。

Dwight Walker

computer software compiler logic and creation - important for porting software from one platform to another for software engineers - a classic text from university computer science courses

Zerg

Follow along textbook for Coursera Stanford Compilers class。 Definitely useful to have to flesh out details left out of lecture videos。 Not necessary for doing the programming assignments。Mediocre as a textbook。 Content is fine, maybe even too many examples, but typesetting makes the text more difficult to read。 Sections and terms are referenced before their definitions。 Key definitions are italicized rather than bolded and indented making them hard to find。 The authors instead chose to bold pro Follow along textbook for Coursera Stanford Compilers class。 Definitely useful to have to flesh out details left out of lecture videos。 Not necessary for doing the programming assignments。Mediocre as a textbook。 Content is fine, maybe even too many examples, but typesetting makes the text more difficult to read。 Sections and terms are referenced before their definitions。 Key definitions are italicized rather than bolded and indented making them hard to find。 The authors instead chose to bold program keywords such as 'null', 'and', 'or'。 This seems backwards。Figures and tables and examples and formulas and sections all use the same name format but have their own numbering, so figure 4。18 sits next to example 4。7 in section 4。3 contains equation 4。15 referencing a term defined in section 4。7。 Other figures and tables and formulas are also not numbered period。 。。。more

Koen Crolla

Damned boring。 The Dragon Book is one of those ones that shows up on everyone's Top \d+ CS/Dev Books list, but it's one of the ones that are there because you're supposed to be impressed with the implication that the list-maker got all the way through it, not because it's genuinely great。It has all the information you need to write a functioning compiler for almost any kind of language you'd want to write a compiler for,† it just lays that information out in the dullest, most laborious way possi Damned boring。 The Dragon Book is one of those ones that shows up on everyone's Top \d+ CS/Dev Books list, but it's one of the ones that are there because you're supposed to be impressed with the implication that the list-maker got all the way through it, not because it's genuinely great。It has all the information you need to write a functioning compiler for almost any kind of language you'd want to write a compiler for,† it just lays that information out in the dullest, most laborious way possible。 The fact that this edition uses Java for much of its code doesn't help, but it actually doesn't hurt nearly as much as you might expect; too bad that's only because it's very light on working code samples。If you somehow make it through the first eight chapters, the last four are more interesting (if more uneven), but not sufficiently so to salvage the whole book。--------† Often missing, however, is a defence of non-obvious design decisions as being genuinely good ideas rather than just accidents of history。 。。。more

Darrell Ulm

One of the best books to describe concepts and algorithms for compilers, data-structures and optimizations。

Maxim Perepelitsyn

Great classic compiler textbook。 Though I think it serves much better if it's not the first compiler book for the reader and/or the reader has some experience in the field。 Great classic compiler textbook。 Though I think it serves much better if it's not the first compiler book for the reader and/or the reader has some experience in the field。 。。。more

Ratonpust

This review has been hidden because it contains spoilers。 To view it, click here。 hi

Uma Maheswari

good

Afifa

nice book。