Разбор выражений
В этом разделе описываются функции для разбора и сканирования сбалансированных выражений. Мы будем называть такие выражения sexp, следуя терминологии Lisp, даже если эти функции могут действовать с языками, отличными от Lisp. В основном, sexp — это либо сбалансированная скобочная группа, строка или символ (то есть последовательность символов, синтаксис которых соответствует либо слову, либо символу). Однако символы в синтаксическом классе префикса выражения (см. Таблица синтаксических классов) обрабатываются как часть sexp, если они расположены рядом с ним.
Таблица синтаксиса управляет интерпретацией символов, поэтому эти функции могут использоваться для выражений Lisp в режиме Lisp и для выражений C в режиме C. См. Движение по списку для удобных функций более высокого уровня для перемещения по сбалансированным выражениям.
Синтаксис символа управляет тем, как он изменяет состояние анализатора, а не описывает само состояние. Например, символ-разделитель строки переключает состояние анализатора между режимом "в строке" и "в коде", но синтаксис символов не говорит напрямую, находятся ли они внутри строки. Например (обратите внимание, что 15 — код синтаксиса для универсальных разделителей строк),
(put-text-property 1 9 'syntax-table '(15 . nil))
не сообщает Emacs, что первые восемь символов текущего буфера являются строкой, а скорее, что все они являются разделителями строк. В результате Emacs обрабатывает их как четыре последовательных пустых константных строки.
| • Движение с помощью разбора | Функции движения, работающие путём разбора. | |
| • Разбор позиции | Определение синтаксического состояния позиции. | |
| • Состояние анализатора | Как Emacs представляет синтаксическое состояние. | |
| • Разбор низкого уровня | Разбор в заданной области. | |
| • Управление разбором | Параметры, влияющие на разбор. |
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/Parsing-Expressions.html