Characters with additional annotations.
Our lexer (and preprocessor) operate on lists of "extended characters", which associate regular characterp objects with their origin in the Verilog source code.
We represent these origins using vl-location-p structures, which simply have a file name, line number, and column number. We represent each extended character as an vl-echar-p, a structure that associates a character with its location.