This article made me want to try making a compiler or interpreter when I get a block of free time. I actually stopped reading because I want to try to figure out as much as I can on my own.
It's a very fun thing to do! Especially if you construct your own virtual machine--function calls aren't as simple as they appear. Also fun is targeting the Java Virtual Machine using a bytecode library such as ASM.
I personally enjoy using ANTLR for parsing, so that might give you a place to start.