Я считаю, что использование этих отрицательных значений было просто способом обозначить специальные токены в коде.
В примере кода допустимые токены имеют значения от 0 до 255, поэтому любое значение из этого диапазона можно использовать для специальных токенов, таких как tok_eof. Поэтому, поскольку от 0 до 255 нельзя использовать для перечисления, они решили использовать отрицательные значения, хотя они могли бы использовать 256, 257, 258 и т. Д. Отрицательные значения кажутся более ложными, чем 256, 257, 258 IMO.