Spec-Zone.ru › Elisp

Доступ к информации об узле

Основная информация об узле

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

Функция: treesit-node-parser node

Эта функция возвращает парсер, связанный с node.

Функция: treesit-node-buffer node

Эта функция возвращает буфер, связанный с парсером node.

Функция: treesit-node-language node

Эта функция возвращает язык, связанный с парсером node.

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

Функция: treesit-node-start node

Возвращает начальную позицию node.

Функция: treesit-node-end node

Возвращает конечную позицию node.

Функция: treesit-node-text node &optional object

Возвращает текст буфера, представленный узлом node, в виде строки. (Если node получен при разборе строки, это будет текст из этой строки.)

Вот некоторые предикаты для узлов tree-sitter:

Функция: treesit-node-p object

Проверяет, является ли object синтаксическим узлом tree-sitter.

Функция: treesit-node-eq node1 node2

Проверяет, ссылаются ли node1 и node2 на один и тот же узел в синтаксическом дереве tree-sitter. Эта функция использует тот же критерий эквивалентности, что и equal. Также можно сравнивать узлы с помощью equal (см. Предикаты равенства).

Информация о свойствах

В общем случае узлы конкретного синтаксического дерева делятся на две категории: именованные узлы и анонимные узлы. Именован ли узел или является анонимным, определяется грамматикой языка (см. именованный узел).

Помимо того, что узел может быть именованным или анонимным, у него могут быть и другие свойства. Узел может быть «отсутствующим»: такие узлы вставляются парсером для восстановления после некоторых типов синтаксических ошибок, то есть согласно грамматике здесь, вероятно, что-то должно быть, но этого нет. Такое может происходить при редактировании исходного кода программы, когда исходный текст ещё не принял окончательную форму.

Узел может быть «дополнительным»: такие узлы представляют, например, комментарии, которые могут встречаться в любом месте текста.

Узел может быть «устаревшим», если его парсер выполнил повторный разбор хотя бы один раз после создания узла.

Узел «содержит ошибку», если охватываемый им текст содержит синтаксическую ошибку. Ошибка может быть в самом узле или в одном из его потомков.

Узел считается действующим, если его парсер не удалён, а буфер, к которому он относится, является действующим буфером (см. Удаление буферов).

Функция: treesit-node-check node property

Эта функция возвращает значение, отличное от nil, если у node есть указанное свойство property. Значением property может быть named, missing, extra, outdated, has-error или live.

Функция: treesit-node-type node

У именованных узлов есть «типы» (см. тип узла). Например, именованным узлом может быть узел string_literal, где string_literal — его тип. Тип анонимного узла — это просто текст, который он представляет; например, тип узла «,» — это просто «,».

Эта функция возвращает тип node в виде строки.

Информация о дочернем или родительском узле

Функция: treesit-node-index node &optional named

Эта функция возвращает индекс node как дочернего узла его родителя. Если named отлично от nil, учитываются только именованные узлы (см. именованный узел).

Функция: treesit-node-field-name node

У дочернего узла может быть имя поля родительского узла (см. имя поля). Эта функция возвращает имя поля node как дочернего узла его родителя.

Функция: treesit-node-field-name-for-child node n

Эта функция возвращает имя поля для n-го дочернего узла node. Она возвращает nil, если n-го дочернего узла нет или у n-го дочернего узла нет имени поля.

Обратите внимание, что при подсчёте n учитываются как именованные, так и анонимные дочерние узлы, а n может быть отрицательным; например, −1 обозначает последний дочерний узел.

Функция: treesit-node-child-count node &optional named

Эта функция возвращает количество дочерних узлов node. Если named отлично от nil, учитываются только именованные дочерние узлы (см. именованный узел).

Вспомогательные функции

Функция: treesit-node-enclosed-p smaller larger &optional strict

Эта функция возвращает значение, отличное от nil, если smaller заключён в larger. Значениями smaller и larger могут быть ячейка cons (beg . end) или узел.

Возвращает значение, отличное от nil, если начало larger <= начало smaller, а конец larger <= конец smaller.

Если strict равно t, для сравнения используется < вместо <=.

Если strict равно partial, считается, что larger заключает в себе smaller, если хотя бы с одной стороны граница строго охватывает его.

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/Accessing-Node-Information.html

Spec-Zone.ru

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