Spec-Zone.ru › Elisp

Состояние парсера

Состояние парсера — это список (в настоящее время) одиннадцати элементов, описывающих состояние синтаксического парсера после того, как он проанализировал текст между заданной начальной и конечной точками в буфере с использованием parse-partial-sexp (см. Парсинг низкого уровня). Функции парсинга, такие как syntax-ppss (см. Парсинг позиции), также возвращают состояние парсера в качестве значения. parse-partial-sexp может принимать состояние парсера в качестве аргумента для возобновления парсинга.

Вот значения элементов состояния парсера:

  1. Глубина в скобках, считая с 0. Предупреждение: может быть отрицательной, если закрывающих скобок больше, чем открывающих между начальной и конечной точками парсера.
  2. Позиция символа начала самого внутреннего скобочного группирования, содержащего конечную точку; nil если нет.
  3. Позиция символа начала последнего завершённого подвыражения; nil если нет.
  4. Не-nil если внутри строки. Точнее, это символ, который завершит строку, или t если строку должен завершить символ-разделитель строки по умолчанию.
  5. t если внутри не-вложенного комментария (любого стиля комментария; см. Флаги синтаксиса); или уровень вложенности комментария, если внутри комментария, который может быть вложен.
  6. t если конечная точка находится сразу после символа кавычки.
  7. Минимальная глубина скобок, встреченная во время этого сканирования.
  8. Тип активного комментария: nil если не в комментарии или в комментарии стиля ‘a’; 1 для комментария стиля ‘b’; 2 для комментария стиля ‘c’; и syntax-table для комментария, который должен быть завершён символом-разделителем комментария по умолчанию.
  9. Позиция начала строки или комментария. Внутри комментария — это позиция начала комментария; внутри строки — это позиция начала строки. Вне строк и комментариев этот элемент — nil.
  10. Список позиций открытых скобок, начиная с самой внешней.
  11. Если последняя просканированная позиция буфера была (возможным) первым символом двусимвольного конструктора (разделитель комментария или пара «экранированного»/«символа с кавычками»), то syntax-code (см. Внутреннее устройство таблицы синтаксиса) этой позиции. В противном случае nil.

Элементы 1, 2 и 6 игнорируются в состоянии, которое вы передаёте в качестве аргумента parse-partial-sexp для продолжения парсинга. Элементы 9 и 10 в основном используются внутри кода парсера.

Некоторая дополнительная полезная информация доступна из состояния парсера с помощью этих функций:

Функция: syntax-ppss-toplevel-pos state

Эта функция извлекает из состояния парсера state последнюю просканированную позицию в процессе парсинга, которая находилась на верхнем уровне в грамматической структуре. «На верхнем уровне» означает вне скобок, комментариев или строк.

Значение — nil если state представляет собой парсинг, который достиг позиции на верхнем уровне.

Функция: syntax-ppss-context state

Возвращает string если конечная позиция сканирования, возвращающая state, находится в строке, и comment если она находится в комментарии. В противном случае возвращает nil.

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/Parser-State.html

Spec-Zone.ru

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