Здравствуйте, Arsen.Shnurkov, Вы писали:
AS>Почему было принято именно такое проектное решение? Как это можно использовать? В каких языках программирования такое применяется и несёт смысловую нагрузку?
В C# — xml doc имеет смысловую нагрузку.
Leading trivia "кушает" всё, а вот trailing — только до конца строки.
AS>Для меня все пробелы одинаковы, и они могли бы разбираться на отдельном этапе в отдельные узлы-списки в синтаксическом дереве.
Какой ещё отдельный этап? Нам дали текст со всем этим добром, вдобавок оно ж и делает ровно то что ты говоришь — узел будет иметь набор leading и trailing trivia.
AS>Чего я не понимаю?
Вообще просто таков дизайн, который пытается угодить в том числе и редакторам, для которых эти тривиа — важные элементы. + в тривию попадают не только пробелы, комментарии но и директивы препроцессора, если мне неизменяет память. Плюс они достаточно эффективно их хранят и переиспользуют.
PS: Токены это узлы дерева которые не могут иметь детей. Тривиа вообще отлельным лесом по момоему стоит. Но в теле парсера токенизация входного потока — это не совсем тоже самое, там вечно хаки вокруг них.