Должны ли файлы конфигурации оставлять пробелы перед комментариями? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь реализовать простой формат файла конфигурации в соответствии с этой статьей Eri c S. Raymond (которая называет их файлами "run-control").

За исключением этого исключения, здесь приведены обычные правила стиля для синтаксиса контроля выполнения. Исторически они основаны на синтаксисе Unix оболочек:

Поддерживают пояснительные комментарии и приводят их с #. Синтаксис также должен игнорировать пробелы перед символом #, так что поддерживаются комментарии в той же строке, что и директивы конфигурации.

Не делайте коварных различий между пробелами. То есть синтаксически обрабатывать серии пробелов и табуляций так же, как один пробел. Если ваш формат директивы ориентирован на строки, то лучше игнорировать завершающие пробелы и табуляции в строках. Суть в том, что интерпретация файла не должна зависеть от различий, которые человеческий глаз не видит.

Рассматривать несколько пустых строк и строк комментариев как одну пустую строку. Если формат ввода использует пустые строки в качестве разделителей между записями, вы, вероятно, захотите убедиться, что строка комментария не заканчивает запись.

Лексически обрабатывать файл как простую последовательность разделенных пробелами маркеров или строк жетоны. Сложные лексические правила трудно выучить, трудно запомнить, а людям трудно разобрать. Избегайте их.

Но поддержите строковый синтаксис для токенов со встроенным пробелом. Используйте одинарные или двойные кавычки в качестве сбалансированных разделителей. Если вы поддерживаете оба, остерегайтесь давать им другую семантику, как в оболочке; это известный источник путаницы.

Поддержка синтаксиса backsla sh для встраивания непечатных и специальных символов в строки. Стандартный шаблон для этого - синтаксис backsla sh -escape, поддерживаемый компиляторами C. Так, например, было бы весьма удивительно, если бы строка «a \ tb» не интерпретировалась как символ «a», за которым следует вкладка, за которой следует символ «b».

Итак, после прочтения, кажется, разрешено следующее

groovy 2.4.1
groovy 2.4.1 # inline comment
# a comment line


# the lines before are blank lines

Но как насчет чего-то вроде

    # a comment line preceeded by some whitespace
    groovy 2.4.1 # the line starting with leading spaces

Должен ли я также поддерживать что-то подобное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...