there's a pretty good text on making a recursive decent parser by Jack W Crenshaw kicking around on the net. It's a little old, but it's straightforward and free. (It's in pascal, but easily translatable).
*EDIT*
in fact, here it is
*EDIT*
in fact, here it is