Fixtype of tokens.
This is a tagged union type, introduced by fty::deftagsum.
This corresponds to token in the grammar in [C:A.1.1] [C:6.4].
This is used by the parser.
It is not part of the abstract syntax in abstract-syntax,
even though the ABNF grammar has a rule for
We represent a C keyword or puncutator as an ACL2 string, which suffices to represent all C keywords and punctuators, which are all ASCII. We could consider defining enumeration fixtypes for keywords and puncutators instead, and use them here instead of strings.
We use the identifiers, constants, and string literals from the abstract syntax to represent the corresponding tokens. However, note that the parser never generates enumeration constants, which overlap with identifiers, but need type checking to be distinguished from identifiers; the parser always classifies those as identifiers.