解析代码以检测功能块

时间:2013-04-24 02:38:58

标签: python string-parsing

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

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

1 个答案:

答案 0 :(得分:1)

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

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