Use applicative style for doBlock, move stuff around
Consume trailing whitespace instead of leading, add `lexeme`