
Program analysis utilizes static techniques for computing reliable information about the dynamic behavior of programs. Applications include compilers (for code improvement), software validation (for detecting errors) and transformations between data representation (for solving problems such as Y2K). This book is unique in providing an overview of the four major approaches to program analysis: data flow analysis, constraint-based analysis, abstract interpretation, and type and effect systems. The presentation illustrates the extensive similarities between the approaches, helping readers to choose the best one to utilize.
It is so foundational to what we do at rev.ng, that we gift a physical copy of the book to every interviewee, even if they don't pass.
Yes, that's something that every compiler (for languages with scopes that allow hiding) needs. Typically you also never compare variables by name but by pointer to a symbol structure or some numeric ID.
> Does anyone know of code that makes clear what is involved in def-use for a variable without saying "this is an exercise for the reader" ?
It's not code, but chapter 2 of Nielson/Nielson/Hankin's Principles of Program Analysis discusses how to do this. See accompanying slides on the book's website: http://www.imm.dtu.dk/~hrni/PPA/ppasup2004.html
In a sense, this must be an exercise for the reader, since if you are working on your own compiler, nobody's code will be compatible with yours.
download http://www.daimi.au.dk/~bra8130/Wiley_book/wiley.html
print http://www.amazon.com/Semantics-Applications-Appetizer-Under...
EDIT:
after reading the author page it looks like the OPs book has not been updated so keep in mind that it is the state of the field as of the 80s. The work by Nielson and Nielson is fairly recent. I would also suggest "Principles of Program Analysis" for a follow up book.
http://www.amazon.com/Principles-Program-Analysis-Flemming-N...