24.8.1 Движок форматирования "Простой ум"

SMIE — это пакет, который предоставляет общий движок навигации и форматирования. Основанный на очень простом парсере с грамматикой прецедента операторов, он позволяет основным режимам расширять навигацию на основе sexp Lisp на не-Lisp языки, а также обеспечивает простое в использовании, но надежное автоматическое форматирование.

Грамматика прецедента операторов — это очень примитивная технология парсинга по сравнению с некоторыми более распространенными методами, используемыми в компиляторах. Она обладает следующими характеристиками: ее мощность парсинга очень ограничена, и она в значительной степени неспособна обнаруживать синтаксические ошибки, но ее преимущество заключается в алгоритмической эффективности и способности парсить как вперед, так и назад. На практике это означает, что SMIE может использовать ее для форматирования на основе обратного парсинга, что позволяет ему предоставлять функциональность как forward-sexp, так и backward-sexp, и что он естественным образом будет работать с синтаксически некорректным кодом без каких-либо дополнительных усилий. Недостатком является то, что это также означает, что большинство языков программирования не могут быть правильно разобраны с помощью SMIE, по крайней мере, без использования некоторых специальных трюков (см. Жизнь с слабым парсером).