Parse a pointer.
(parse-pointer parstate) → (mv erp tyqualattribss span new-parstate)
In the grammar, a `pointer' is a sequence of one or more stars, each followed by zero or more type qualifiers and attribute specifiers. In our abstract syntax, we model this notion as a list of lists of type qualifiers and attribute specifiers, one inner list for each star (implicit in our abstract syntax), with the outer list corresponding to the sequence of stars.
We read a star, which must be present: this function is called when we expect a pointer. If the next token is a type qualifier or starts an attribute specifier, we put it back and read a list of one or more type qualifiers and attribute specifier; then we check the next token if there is another star, in which case we recursively call this function. If instead the initial star is followed by another star, we also call this function recursively. We stop when there is not a star.