Parse do { ... } blocks

This commit also has changes that handle empty statements.