start of recursive descent parser.

Coding style is apparently heavily influenced by my time spend learning Erlang.
Hopefully I don't run into stack overflow issues.