When the directive %locations is used, the C++ parser supports
location tracking, see Tracking Locations.
By default, two auxiliary classes define a position, a single point
in a file, and a location, a range composed of a pair of
positions (possibly spanning several files). If the %define
variable api.location.type is defined, then these classes will not be
generated, and the user defined type will be used.