Spec-Zone.ru › Elisp

Разбор исходного кода программы

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

Spec-Zone.ru

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