【发布时间】:2011-02-03 14:57:06
【问题描述】:
我正在整理我的一个旧项目,该项目计算一些关于大型软件项目的简单指标。指标之一是文件/类/方法的长度。目前我的代码“猜测”类/方法边界基于非常粗略的算法(遍历文件,保持“当前深度”并在遇到不带引号的括号时对其进行调整;当您返回到类或方法开始的级别时,认为它已退出)。但是,此过程存在许多问题,并且检测深度何时发生变化的“简单”方法并不总是有效的。
为了得到准确的结果,我需要使用规范的方式(在每种语言中)检测函数定义、类定义和深度变化。这相当于编写一个简单的解析器来为我希望我的项目适用的每种语言生成至少包含这些元素的解析树。
显然之前已经为所有这些语言编写过解析器,所以看起来我不应该重复这项工作(即使编写解析器很有趣)。 是否有一些开源项目可以为一堆源语言收集现成的解析器库?还是我应该只使用 ANTLR 从头开始制作自己的?(注意:我很高兴将项目移植到另一种语言以利用现有资源,所以如果你知道一个,它用什么语言写的并不重要。)
【问题讨论】:
-
有处理许多不同语言的语法高亮库(想到 pygments)。我想知道其中一个是否会为您的案件提供足够的信息。我怀疑不是,但可能值得一看。
标签: parsing antlr code-metrics parser-generator