Good catch.

With Cache-Control directive extensions, there's not much to do in terms of knowing what will come. The challenge here is that the grammar specifies extensions as having the form: name = "string" | token.

Maybe client code could specify somewhere "expected extension tokens", which can be converted into symbols, and everything else remains a (possibly quote-stripped) string.