通过 emacs Lisp 的顶级 S 表达式分段 Lisp 源代码?

Segment Lisp source code by top level S-expression by emacs Lisp?

我想将 Lisp 源代码分割成代码段列表。每个段要么是顶级 S 表达式,要么是这些 S 表达式之间的任何文本。

最初我认为我可以使用正则表达式模式来匹配顶级 S 表达式,但我发现仅在顶级处理匹配括号并不那么简单。

(我觉得有可能通过以下示例计算出匹配顶级 S-exp 的正则表达式) Using regular expressions to extract functions and function headers from source code

接下来,我想我可能会扫描文本以观察第一个左括号'('和最后一个右括号')',并据此进行分割。

在我这样做之前,我觉得考虑到 S-expression 在 emacs Lisp 中无处不在的性质,应该已经存在满足我的要求的解决方案。

所以我问你是否可以教我解决方法?

谢谢,

正则表达式对于这项工作来说绝对是错误的。您不能将任意嵌套的平衡形式与正则表达式相匹配,所以忘记这个想法吧。

使用 elisp 移动 s 表达式就像 (forward-sexp)

一样简单

不过,我实际上并不了解您要实现的目标。您能否更新问题并提供更多详细信息?

编辑:鉴于您已经接受了这个答案,我将向您指出这些以供进一步阅读:

  • C-hig (elisp) Parsing Expressions RET
  • C-hig (elisp) List Motion RET