Разбор исходного кода программы
Emacs предоставляет различные способы разбора исходного текста программы и создания синтаксического дерева. В синтаксическом дереве текст больше не рассматривается как одномерный поток символов, а представляется в виде структурированного дерева узлов, каждый из которых соответствует фрагменту текста. Таким образом, синтаксическое дерево позволяет реализовать такие интересные функции, как точная подсветка синтаксиса, отступы, навигация, структурное редактирование и т. д.
В Emacs есть простое средство для разбора сбалансированных выражений (см. Разбор выражений). Также существует библиотека SMIE для универсальной навигации и расстановки отступов (см. Простой механизм расстановки отступов).
Помимо этого, Emacs также поддерживает интеграцию с библиотекой tree-sitter, если поддержка этой библиотеки была включена при компиляции. Библиотека tree-sitter реализует инкрементальный синтаксический анализатор и поддерживает широкий спектр языков программирования.
- Функция: treesit-available-p
Эта функция возвращает non-
nil, если функции tree-sitter доступны в текущем сеансе Emacs.
Чтобы разбирать исходный код программы с помощью библиотеки tree-sitter и получать доступ к синтаксическому дереву программы, Lisp-программа должна загрузить библиотеку грамматики языка и создать анализатор для этого языка и текущего буфера. После этого Lisp-программа может запрашивать у анализатора сведения об определённых узлах синтаксического дерева. Затем она может получать различные сведения о каждом узле и искать узлы с помощью мощного синтаксиса сопоставления с образцом. В этой главе объясняется, как всё это делать, а также как Lisp-программа может работать с исходными файлами, в которых сочетаются несколько языков программирования.
- Грамматика языка tree-sitter
- Использование анализатора tree-sitter
- Получение узлов
- Доступ к сведениям об узлах
- Сопоставление узлов tree-sitter с образцом
- Определяемые пользователем «объекты» и навигация
- Разбор текста на нескольких языках
- Разработка основных режимов с помощью tree-sitter
- Соответствие API tree-sitter для C
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/Parsing-Program-Source.html