ColdFusion代码解析器?

时间:2009-08-05 20:07:30

标签: coldfusion parsing cfeclipse

我正在尝试创建一个应用来搜索我公司的ColdFusion代码库。我希望能够进行智能搜索,例如:找到定义函数的位置(并且不会在调用函数的任何地方命中)。为此,我需要解析ColdFusion代码以识别函数声明,函数调用,数据库查询等。

我已经研究过使用lex和yacc,但我以前从未使用它们,学习曲线看起来非常陡峭。我希望有一些我可以使用的东西。我的另一个选择是一堆难以维护的正则表达式 - 意大利面条代码,我想避免。

3 个答案:

答案 0 :(得分:3)

我使用了source to CFEclipse,因为它是开源的,并且有一个解析器。如果我们正在销售/重新分发它,我不确定这是否合法,但我们只是将它用于内部工具。

答案 1 :(得分:1)

为真正的语言编写解析器通常很困难,因为它们包含Lex和Yacc通常不能很好处理的结构,例如,语言不是LALR(1)。 ColdFusion可能比某些更容易,因为它具有类似XML的风格。

如果您想快速构建复杂的解析器,可以考虑使用我们的 DMS Software Reengineering Toolkit具有GLR解析支持。

如果你想避免编写自己的或者攻击所有这些Regexp,你可以考虑我们的Source Code Search Engine。它具有语言敏感的解析器,可以非常快速地搜索非常大的源代码库。其中一个“语言敏感”解析器是AdhocText,它旨在处理“通用”编程语言,例如您可能在随机编程书中找到的语言;它甚至可以理解像ColdFusion这样的类似XML的标签。您可以从提供的链接下载评估版本以进行尝试。

EDIT 4/3/2010:SCSE最近添加的一项功能是能够单独标记定义和使用。这将解决OP希望找到函数定义而不是所有调用。

答案 2 :(得分:0)

没有。由于ColdFusion更像脚本而不是代码,因此我认为为它编写解析器会很困难。

ColdFusion Builder可以将CFM / CFC解析为Eclipse中的大纲。也许你可以研究CF Builder插件是否可以做你想做的事情。