Terminate virtual braces when going out of scope. This is necessary for some macros where a semicolon is not present.
Check that keywords which are followed by an expression (such as 'do') actually have an expression after them. Otherwise demote the keyword to a word. This is needed when these keywords are used as names in preprocessor statements (and thus are not presented to the compiler).