Низкоуровневый разбор
Самый простой способ использования парсера выражений — указать ему начальную позицию и состояние, а также конечную позицию для разбора.
- Функция: 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