Parse a block item.
(parse-block-item pstate) → (mv erp item span new-pstate)
There is a syntactic overlap between statements and declarations, which are the two kinds of block items; the overlap cannot be disambiguated purely syntactically. For now we use an approximate strategy: if the first token may start a declaration specifier, except for an identifier, we commit to attempting to parse a declaration; otherwise, we attempt to parse a statement. We will refine this approach soon.