Базовая синтаксическая запись символов
Поскольку символы — это на самом деле целые числа, печатное представление символа — десятичное число. Это также возможный синтаксис чтения символа, но запись символов таким образом в программах Lisp не является понятным программированием. Вы всегда должны использовать специальные синтаксические форматы чтения символов, предоставляемые Emacs Lisp. Эти синтаксические форматы начинаются с вопросительного знака.
Обычный синтаксис чтения буквенно-цифровых символов — вопросительный знак, за которым следует символ; таким образом, «?A» для символа A, «?B» для символа B и «?a» для символа a.
Например:
?Q ⇒ 81 ?q ⇒ 113
Вы можете использовать тот же синтаксис для символов пунктуации. Однако, если символ пунктуации имеет специальное синтаксическое значение в Lisp, его необходимо заключить в кавычки с помощью «\». Например, «?\(» — способ записи символа открывающей скобки. Аналогично, если символ — «\», необходимо использовать вторую «\», чтобы заключить его в кавычки: «?\\».
Вы можете выразить символы Control-g, Backspace, Tab, Новая строка, Вертикальная табуляция, Форм-подача, Пробел, Возврат, Del и Escape как «?\a», «?\b», «?\t», «?\n», «?\v», «?\f», «?\s», «?\r», «?\d» и «?\e» соответственно. («?\s», за которым следует дефис, имеет другое значение — он применяет модификатор Super к последующему символу.) Таким образом,
?\a ⇒ 7 ; control-g, C-g ?\b ⇒ 8 ; backspace, BS, C-h ?\t ⇒ 9 ; tab, TAB, C-i ?\n ⇒ 10 ; newline, C-j ?\v ⇒ 11 ; vertical tab, C-k ?\f ⇒ 12 ; formfeed character, C-l ?\r ⇒ 13 ; carriage return, RET, C-m ?\e ⇒ 27 ; escape character, ESC, C-[ ?\s ⇒ 32 ; space character, SPC ?\\ ⇒ 92 ; backslash character, \ ?\d ⇒ 127 ; delete character, DEL
Эти последовательности, начинающиеся с обратной косой черты, также известны как последовательности экранирования, потому что обратная косая черта выполняет роль символа экранирования; это не имеет ничего общего с символом ESC. «\s» предназначен для использования в константах символов; в строковых константах просто напишите пробел.
Разрешена и не причиняет вреда обратная косая черта перед любым символом без специального значения экранирования; таким образом, «?\+» эквивалентно «?+». Нет причин добавлять обратную косую черту перед большинством символов. Однако, вы должны добавить обратную косую черту перед любыми символами «()[]\;"», и вы должны добавить обратную косую черту перед любыми символами «|'`#.,», чтобы избежать путаницы с командами Emacs для редактирования кода Lisp. Вы также должны добавить обратную косую черту перед символами Юникода, которые напоминают упомянутые выше ASCII, чтобы избежать путаницы у людей, читающих ваш код. Emacs будет выделять некоторые неэкранированные, часто путающиеся символы, такие как «‘», чтобы способствовать этому. Вы также можете добавить обратную косую черту перед символами пробелов, такими как пробел, табуляция, новая строка и форма подачи. Тем не менее, чище использовать одну из легко читаемых последовательностей экранирования, таких как «\t» или «\s», вместо фактического символа пробела, такого как табуляция или пробел. (Если вы пишете обратную косую черту, за которой следует пробел, вы должны написать дополнительный пробел после константы символа, чтобы отделить её от последующего текста.)
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/Basic-Char-Syntax.html