complete first recursive descent parser exercise