Spec-Zone.ru › Elisp

Низкоуровневый разбор

Самый простой способ использования парсера выражений — указать ему начальную позицию и состояние, а также конечную позицию для разбора.

Функция: parse-partial-sexp start limit &optional target-depth stop-before state stop-comment

Эта функция разбирает s-выражение в текущем буфере, начиная с позиции start, не просматривая данные после limit. Она останавливается в позиции limit или когда выполняются определённые критерии, описанные ниже, и устанавливает курсор в место остановки. Она возвращает состояние парсера, описывающее статус разбора в точке остановки.

Если третий аргумент target-depth не nil, разбор останавливается, если глубина в скобках становится равной target-depth. Глубина начинается с 0 или с того значения, которое задано в state.

Если четвёртый аргумент stop-before не nil, разбор останавливается, когда встречается любой символ, начинающий s-выражение. Если stop-comment не nil, разбор останавливается после начала не вложенного комментария. Если stop-comment — символ syntax-table, разбор останавливается после начала не вложенного комментария или строки, или после окончания не вложенного комментария или строки, в зависимости от того, что произойдёт раньше.

Если state равно nil, предполагается, что start находится на верхнем уровне структуры скобок, например, в начале определения функции. Возможно, вам нужно возобновить разбор в середине структуры. Для этого необходимо предоставить аргумент state, описывающий начальное состояние разбора. Значение, возвращённое предыдущим вызовом parse-partial-sexp, прекрасно подойдёт для этого.

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/Low_002dLevel-Parsing.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API