recursive descent combinators for erlang