Parse a declaration specifier.
(parse-declaration-specifier tyspec-seenp parstate) → (mv erp declspec span new-parstate)
This is an element of a declaration specifier list,
which is
A declaration specifier (list) may always be followed by a declarator. It may also be followed by an abstract declarator when forming a parameter declaration, but in that case the abstract declarator is optional, so the declaration specifier may be followed by a comma or a closed parenthesis.
This function is called when we expect a declaration specifier, which is the case at the start of a declaration specifier list (because the list cannot be empty), and when the caller parse-declaration-specifiers determines that there must be another specifier or qualifier.
This is similar to parse-specifier/qualifier,
but more complex because there are more alternatives.
The syntactic overlap between
the