36.2.1 Таблица классов синтаксиса

Ниже приведена таблица классов синтаксиса, обозначающие их символы, их значения и примеры использования.

Символы пробелов: ‘ ’ или ‘-’

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

Этот класс синтаксиса может обозначаться как ‘ ’, так и ‘-’. Оба обозначения эквивалентны.

Составляющие слов: ‘w’

Части слов в человеческих языках. Обычно используются в именах переменных и команд в программах. Все буквы верхнего и нижнего регистра, а также цифры, как правило, являются составляющими слов.

Составляющие символов: ‘_’

Дополнительные символы, используемые в именах переменных и команд наряду с составляющими слов. Примеры включают символы ‘$&*+-_<>’ в режиме Lisp, которые могут быть частью имени символа, даже если они не являются частью английских слов. В стандартном C единственным символом, не являющимся составляющей слова, но допустимым в символах, является подчёркивание (‘_’).

Знаки пунктуации: ‘.’

Символы, используемые как знаки пунктуации в человеческом языке или в языках программирования для разделения символов друг от друга. В некоторых режимах языков программирования, например в режиме Emacs Lisp, в этом классе нет символов, поскольку немногие символы, не являющиеся составляющими слов или символов, имеют другое применение. Другие режимы языков программирования, например режим C, используют синтаксис пунктуации для операторов.

Открывающие скобки: ‘(’
Закрывающие скобки: ‘)’

Символы, используемые в различных парах для обрамления предложений или выражений. Такая группировка начинается открывающей скобкой и завершается закрывающей. Каждой открывающей скобке соответствует определённая закрывающая, и наоборот. Обычно Emacs на мгновение показывает соответствующую открывающую скобку, когда вы вставляете закрывающую. См. Мигание скобок.

В человеческих языках и в коде C скобочными парами являются ‘()’, ‘[]’ и ‘{}’. В Emacs Lisp разделители для списков и векторов (‘()’ и ‘[]’) классифицируются как скобочные символы.

Кавычки строк: ‘"’

Символы, используемые для ограничения строковых констант. Одинаковый символ кавычки строки стоит в начале и в конце строки. Такие строки в кавычках не вкладываются друг в друга.

Синтаксические анализаторы Emacs рассматривают строку как единый токен. Обычные синтаксические значения символов внутри строки подавляются.

В режимах Lisp есть два символа кавычек строк: двойная кавычка (‘"’) и вертикальная черта (‘|’). ‘|’ не используется в Emacs Lisp, но используется в Common Lisp. В C также два символа кавычек строк: двойная кавычка для строк и апостроф (‘'’) для символьных констант.

В человеческом тексте нет символов кавычек строк. Мы не хотим, чтобы кавычки отключали обычные синтаксические свойства других символов в цитате.

Экранирующие символы: ‘\’

Символы, которые начинают escape-последовательность, как это используется в строковых и символьных константах. Символ ‘\’ принадлежит этому классу как в C, так и в Lisp. (В C он используется так только внутри строк, но оказывается, что это не вызывает проблем при такой обработке во всём коде C.)

Символы этого класса считаются частью слов, если words-include-escapes не равен nil. См. Перемещение по словам.

Квотирующие символы: ‘/’

Символы, используемые для квотирования следующего символа, чтобы он потерял своё обычное синтаксическое значение. Это отличается от escape-символа тем, что затрагивается только непосредственно следующий символ.

Символы этого класса считаются частью слов, если words-include-escapes не равен nil. См. Перемещение по словам.

Этот класс используется для обратной косой черты в режиме TeX.

Парные разделители: ‘$’

Подобны символам кавычек строк, за исключением того, что синтаксические свойства символов между разделителями не подавляются. В настоящее время только режим TeX использует парный разделитель — ‘$’, который одновременно входит в математический режим и выходит из него.

Префиксы выражений: ‘'’

Символы, используемые как синтаксические операторы, которые считаются частью выражения, если они стоят рядом с ним. В режимах Lisp к таким символам относятся апостроф, ‘'’ (используется для цитирования), запятая, ‘,’ (используется в макросах), и ‘#’ (используется в синтаксисе чтения для некоторых типов данных).

Начало комментария: ‘<’
Конец комментария: ‘>’

Символы, используемые в различных языках для обозначения комментариев. В человеческом тексте нет символов комментариев. В Lisp точка с запятой (‘;’) начинает комментарий, а перевод строки или подача страницы завершает его.

Наследовать стандартный синтаксис: ‘@’

Этот класс синтаксиса не задаёт конкретный синтаксис. Он указывает, что нужно посмотреть в родительской таблице синтаксиса, чтобы найти синтаксис этого символа.

Универсальные разделители комментариев: ‘!’

(Этот класс синтаксиса также известен как “ограничитель комментария”.) Символы, которые начинают или заканчивают особый вид комментария. Любой универсальный разделитель комментариев соответствует любому универсальному разделителю комментариев, но они не могут соответствовать началу или концу комментария; универсальные разделители комментариев могут соответствовать только друг другу.

Этот класс синтаксиса предназначен в первую очередь для использования со свойством текста syntax-table (см. Свойства синтаксиса). Вы можете отметить любой диапазон символов как образующий комментарий, присвоив первому и последнему символам диапазона свойства syntax-table, идентифицирующие их как универсальные разделители комментариев.

Универсальные разделители строк: ‘|’

(Этот класс синтаксиса также известен как “ограничитель строки”.) Символы, которые начинают или заканчивают строку. Этот класс отличается от класса кавычек строк тем, что любой универсальный разделитель строк может соответствовать любому другому универсальному разделителю строк; но они не соответствуют обычным символам кавычек строк.

Этот класс синтаксиса предназначен в первую очередь для использования со свойством текста syntax-table (см. Свойства синтаксиса). Вы можете отметить любой диапазон символов как образующий строковую константу, присвоив первому и последнему символам диапазона свойства syntax-table, идентифицирующие их как универсальные разделители строк.