我正在掸掉我的一个旧项目,该项目计算大量关于大型软件项目的简单度量标准。其中一个指标是文件/类/方法的长度。目前,我的代码“猜测”类/方法边界基于非常粗糙的算法(遍历文件,保持“当前深度”并在遇到未引用的括号时对其进行调整;当您返回到级别时,类或方法开始,考虑退出)。然而,这个程序存在很多问题,而且检测深度变化的“简单”方法并不总是有效。编程语言解析器的来源?
为了给出准确的结果,我需要使用规范的方式(在每种语言中)检测函数定义,类定义和深度变化。这相当于编写一个简单的解析器来生成至少包含这些元素的解析树,这些解析树适用于我希望项目适用的每种语言。
很明显,解析器已经为所有这些语言编写过,所以看起来我不应该重复这种努力(即使编写解析器很有趣)。 是否有一些开源项目为一系列源语言收集了即用解析器库?还是应该使用ANTLR从头开始创建自己的?(注:我会很高兴,以港口项目到另一种语言来利用一个伟大的现有的资源,因此,如果您知道的,所以无所谓什么语言它用)。
有语法高亮库(想到pygments)处理许多不同的语言。我想知道他们中的一个是否会为您的案例提供足够的信息。我怀疑不是,但它可能值得一看。 – Ken 2010-04-02 15:03:56