Простой движок форматирования отступов
SMIE — это пакет, предоставляющий универсальный движок навигации и форматирования отступов. Основанный на очень простом парсере, использующем грамматику приоритетов операторов, он позволяет основным режимам расширять навигацию по выражениям Lisp, основанную на s-выражениях, на языки, отличные от Lisp, а также обеспечивает простой в использовании, но надёжный автоформатирование отступов.
Грамматика приоритетов операторов — это очень примитивная технология парсинга по сравнению с некоторыми более распространёнными техниками, используемыми в компиляторах. Она обладает следующими характеристиками: её возможности парсинга очень ограничены, и она в значительной степени неспособна обнаруживать синтаксические ошибки, но она имеет преимущество в алгоритмической эффективности и может анализировать вперёд так же хорошо, как и назад. На практике это означает, что SMIE может использовать её для форматирования отступов на основе обратного парсинга, что он может предоставить как forward-sexp , так и backward-sexp функциональность, и что он будет естественным образом работать с синтаксически некорректным кодом без каких-либо дополнительных усилий. Недостатком является то, что это также означает, что большинство языков программирования не могут быть правильно обработаны с помощью SMIE, по крайней мере, без применения некоторых специальных ухищрений (см. Хитрости SMIE).
| • Настройка SMIE | Настройка и особенности SMIE. | |
| • Грамматики приоритетов операторов | Очень простая техника парсинга. | |
| • Грамматика SMIE | Определение грамматики языка. | |
| • Лексер SMIE | Определение токенов. | |
| • Хитрости SMIE | Обход ограничений парсера. | |
| • Форматирование отступов SMIE | Указание правил форматирования отступов. | |
| • Справочные функции для форматирования отступов SMIE | Справочные функции для правил форматирования отступов. | |
| • Пример форматирования отступов SMIE | Примеры правил форматирования отступов. | |
| • Настройка SMIE | Настройка форматирования отступов. |
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/SMIE.html