I'm looking for a book to learn how to implement interpreters for programming languages. Thing is there are much more 'compiler books' than 'interpreter books'. So my question is: can I read a book that teaches how to build compilers, to learn how to build interpreters (at a very beginner level)? Is this a good idea? If so, what do I need to keep in mind while reading?
-
1Definitely yes. See [this answer](http://programmers.stackexchange.com/a/250740/40065) and the references there. Mostly because even interpreters are transforming the source code byte streams (into AST or bytecode). – Basile Starynkevitch Jul 23 '14 at 10:41
2 Answers
Absolutely - an interpreter is just a "one line at a time" compiler. It performs much the same task, that of taking some form of human-understandable source code and turning it into something a computer processor can understand. A compiler will do this for entire source file(s), whereas an interpreter will do this on an as-read basis.
You will need to handle a few differences around loading source as needed, and handling parsing source files to find the next line to read, but otherwise you'll be implementing a compiler fundamentally.

- 48,354
- 6
- 102
- 172
-
Thanks. Two questions: A- Is there anything I need to keep in mind while reading a compiler book and trying to understand interpreters from it? B- A good beginner-friendly book you can recommend? I hear the dragon book is too much for a complete beginner. – Aviv Cohn Jul 23 '14 at 10:52
-
See references [here](http://programmers.stackexchange.com/a/250740/40065) – Basile Starynkevitch Jul 23 '14 at 11:15
-
So basically: a compiler book teaches me what to do to an entire source code file, so in an interpreter I take that and simply do it to each individual line of code, from the top down? I'm asking because I want to understand how to apply what Im learning from my compiler book to implementing an interpreter. – Aviv Cohn Jul 23 '14 at 15:38
Is a book that teaches how to build compilers good for learning to implement interpreters?
Yes - A good book on compilers will cover a wide range of topics, many of which are directly relevant to interpreters / interpreted languages. For example:
- lexical analysis
- parsing
- creation of an AST
- type checking, identifier resolution and other kinds of semantic analysis
- "compiler" error reporting
- possibly ... generation of an abstract machine code that the interpreter will "execute".
If so, what do I need to keep in mind while reading?
Keep in mind that some of the material in the book may not be that relevant. For example, a typical abstract machine is register-less, so the sections of the book on register allocation during code generation are typically not relevant to an interpreter.
(But that's just common sense. You wouldn't normally read a book like that from cover to cover. You'd typically skim the bits that don't seem relevant to your goals.)

- 25,180
- 6
- 64
- 87