>>1
You can do one in like a page or two of code, and there's so many examples. Look into meta-circular interpreter's.
Some books that show examples: SICP(Scheme), PAIP(Scheme in CL, since Scheme is easier to implement, has a compiler too), Graham's Roots of Lisp (
http://www.paulgraham.com/rootsoflisp.html - it's simpler than more real interpreters as it doesn't have a real lexical environment), Lisp in Small Pieces (this is a book dedicated to writing Lisp/Scheme interpreters and compilers, there's multiple versions here). Aside from that, there's so many toy metacircular implementations floating around the Internet, so just search a bit, and most implementations come with EVAL, so you can look into that, however I've seen CL implementations that don't have a real EVAL, instead it's just a simple(from memory, untested):
(defun eval (body)
(funcall (compile nil `#'(lambda () ,@body))))