-1

我正在为 sublime 文本编辑器(使用 Python)编写一个插件,它只会在文件加载时折叠函数/方法。为了做到这一点,我必须解析文件内容,检测功能块并获取每个块的开始和结束位置(这是 API 进行折叠所必需的)。Regex 是我想到的第一件事,但我很快了解到它不适用于嵌套函数,尤其是对于 c 样式语法。

我目前这样做的方式是逐行查找'{'和'}'并检查函数定义是否在同一行或高于'{'。如果找不到函数定义,我认为它是一个控制结构。这远非完美,因为注释中不匹配的大括号符号将导致此逻辑失败。由于我不知道任何其他选择,这可能是完全错误的做法。有任何想法吗?

4

1 回答 1

1

查看 pyparsing 或 PLY,或者使用“递归下降解析器”做自己的事情。

嵌套括号(和花括号 - 相同)可能是无堆栈模式匹配器无法对任意深度执行的最常见示例。但是上面提到的3种技术应该都能做好。

于 2013-04-24T03:02:25.770 回答