24.8.1 简易缩进引擎(SMIE)

SMIE 是一个提供通用结构导航与缩进引擎的包。它基于一个使用运算符优先文法的极简解析器, 允许主模式将 Lisp 的符号表达式导航能力扩展到非 Lisp 语言,并提供简单易用且可靠的自动缩进。

与编译器中常见的解析技术相比,运算符优先文法是一种非常基础的解析技术。 它具有以下特点:解析能力非常有限,基本无法检测语法错误, 但算法效率高,并且可以向前或向后双向解析。 在实际应用中,这意味着 SMIE 可以基于向后解析实现缩进, 可以同时提供 forward-sexpbackward-sexp 功能, 并且无需额外处理就能自然地在语法不合法的代码上工作。 缺点是,这也意味着大多数编程语言无法直接用 SMIE 正确解析, 至少需要借助一些特殊技巧(see 适配简易解析器)。

emacs

Emacs

org-mode

Orgmode

Donations

打赏

Copyright

© Jasper Hsu

Creative Commons

Creative Commons

Attribute

Attribute

Noncommercial

Noncommercial

Share Alike

Share Alike