Разбор выражений
В этом разделе описаны функции для разбора и сканирования сбалансированных выражений. Следуя терминологии Lisp, мы будем называть такие выражения S-выражениями, хотя эти функции могут работать и с языками, отличными от Lisp. В основном S-выражение — это сбалансированная последовательность в скобках, строка или символ (то есть последовательность символов, синтаксис которых соответствует классу символов слова или символов). Однако символы, относящиеся к классу синтаксиса префикса выражения (см. Таблицу классов синтаксиса), считаются частью S-выражения, если расположены рядом с ним.
Таблица синтаксиса определяет интерпретацию символов, поэтому эти функции можно использовать для разбора выражений Lisp в режиме Lisp и выражений C в режиме C. См. Перемещение по сбалансированным выражениям, где описаны удобные функции более высокого уровня для перемещения по сбалансированным выражениям.
Синтаксис символа определяет, как он изменяет состояние анализатора, а не описывает само это состояние. Например, символ-разделитель строки переключает состояние анализатора между режимами «внутри строки» и «вне строки», но синтаксис символов напрямую не указывает, находятся ли они внутри строки. Например (обратите внимание, что 15 — это код синтаксиса для универсальных разделителей строк),
(put-text-property 1 9 'syntax-table '(15 . nil))
не сообщает Emacs, что первые восемь символов текущего буфера образуют строку, а лишь указывает, что все они являются разделителями строк. В результате Emacs считает их четырьмя последовательными пустыми строковыми константами.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Parsing-Expressions.html