Флаги синтаксиса
В дополнение к классам, записи для символов в таблице синтаксиса могут указывать флаги. Существует восемь возможных флагов, представленных символами ‘1’, ‘2’, ‘3’, ‘4’, ‘b’, ‘c’, ‘n’ и ‘p’.
Все флаги, кроме ‘p’, используются для описания разделителей комментариев. Флаги-цифры используются для разделителей комментариев, состоящих из 2 символов. Они указывают, что символ может также быть частью последовательности комментариев, помимо синтаксических свойств, связанных с его классом символов. Флаги независимы от класса и друг от друга для символов, таких как ‘*’ в режиме C, который является символом пунктуации, и вторым символом начальной последовательности комментариев (‘/*’), и первым символом конечной последовательности комментариев (‘*/’). Флаги ‘b’, ‘c’ и ‘n’ используются для квалификации соответствующего разделителя комментариев.
Вот таблица возможных флагов для символа c и их значений:
- ‘1’ означает, что c — начало двухсимвольной последовательности начала комментария.
- ‘2’ означает, что c — второй символ такой последовательности.
- ‘3’ означает, что c — начало двухсимвольной последовательности конца комментария.
- ‘4’ означает, что c — второй символ такой последовательности.
- ‘b’ означает, что c как разделитель комментария принадлежит альтернативному стилю комментариев “b”. Для двухсимвольного начального комментария этот флаг значим только для второго символа, а для двухсимвольного конечного комментария — только для первого символа.
- ‘c’ означает, что c как разделитель комментария принадлежит альтернативному стилю комментариев “c”. Для двухсимвольного разделителя комментария флаг ‘c’ на любом символе делает его стилем “c”.
- Флаг ‘n’ для символа разделителя комментария указывает, что этот тип комментария может быть вложенным. Внутри такого комментария будут распознаваться только комментарии того же стиля. Для двухсимвольного разделителя комментария флаг ‘n’ на любом символе делает его вложенным.
Emacs поддерживает несколько стилей комментариев одновременно в любой одной таблице синтаксиса. Стиль комментария — это набор флагов ‘b’, ‘c’ и ‘n’, поэтому может быть до 8 разных стилей комментариев, каждый из которых назван по набору своих флагов. Каждый разделитель комментария имеет стиль и соответствует только разделителям комментариев того же стиля. Таким образом, если комментарий начинается с последовательности начала комментария стиля “bn”, он будет продолжаться до следующей соответствующей последовательности конца комментария стиля “bn”. Когда в наборе флагов не установлен ни флаг ‘b’, ни флаг ‘c’, получившийся стиль называется стилем “a”.
Соответствующие настройки синтаксиса комментариев для C++ могут быть следующими:
- ‘/’
‘124’
- ‘*’
‘23b’
- перевод строки
‘>’
Это определяет четыре последовательности разделителей комментариев:
- ‘/*’
-
Это последовательность начала комментария стиля “b”, потому что второй символ, ‘*’, имеет флаг ‘b’.
- ‘//’
-
Это последовательность начала комментария стиля “a”, потому что второй символ, ‘/’, не имеет флага ‘b’.
- ‘*/’
-
Это последовательность конца комментария стиля “b”, потому что первый символ, ‘*’, имеет флаг ‘b’.
- перевод строки
Это последовательность конца комментария стиля “a”, потому что символ перевода строки не имеет флага ‘b’.
- ‘p’ идентифицирует дополнительный символ префикса для синтаксиса Lisp. Эти символы обрабатываются как пробелы, когда они появляются между выражениями. Когда они появляются внутри выражения, они обрабатываются в соответствии с их обычными классами синтаксиса.
Функция
backward-prefix-charsперемещает курсор назад по этим символам, а также по символам, основной синтаксический класс которых — префикс (‘'’). См. Движение и синтаксис.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Syntax-Flags.html