2015-09-10 63 views
0

我想将Lisp源代码分割成代码段列表。每个段都是顶级S表达式,或者是这些S表达式之间的任何文本。由emacs Lisp顶级S表达式来细分Lisp源代码?

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

(我觉得有可能制定出一个正则表达式匹配顶级S-EXP)通过下面的例子这 Using regular expressions to extract functions and function headers from source code

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

在我这样做之前,我觉得考虑到emacs Lisp中无处不在的S表达式,应该已经有解决方案满足我的需求。

所以我问你是否可以教我任何解决方案?

谢谢,

回答

1

正则表达式是完全错误的工作。你无法将任意嵌套的平衡表格与正则表达式匹配,所以忘记了这个想法。

移动在与elisp的一个s表达式很简单,只要(forward-sexp)

,我实在不明白它是什么你想达到的,虽然。你能否用更多的细节更新这个问题?

编辑:看到你已经接受了这个答案,我只是点你这些进一步阅读:

  • 我克(elisp) Parsing ExpressionsRET
  • Chig(elisp) List MotionRET
+0

Thanks!我正在寻找像前瞻性这样的现有支持。我的目标是将Lisp源代码文件转换为emacs org-babel支持的literate编程org文件,我希望每个函数或顶级sexp都是org代码块。 –