2009-08-05 63 views
4

我正在尝试创建一个应用程序来搜索我公司的ColdFusion代码库。我希望能够进行智能搜索,例如:找到一个函数被定义的位置(并且在所有函数被调用的位置都没有)。为了做到这一点,我需要解析ColdFusion代码来识别函数声明,函数调用,数据库查询等。ColdFusion代码解析器?

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

+0

硖,这是我一直感兴趣成也(和我想要的东西融入CFE),所以如果你所做的任何有用的进展我想知道? – 2009-10-18 13:43:05

+0

@Peter Boughton:其实我是代表一位同事问的。在下面看到我的答案 - 他使用源代码中的解析器来CFEclipse。我不知道这样做对于重新分配是否完全合法,但是我们将它用于内部开发工具。 – Kip 2009-10-18 18:34:24

+0

那么你需要检查许可证的准确字眼,但是如果它是从EPL代码(CFEclipse源代码)派生的,那么它也只需要分发一个EPL许可证。 但是,它是目前的CFE解析器,我想创建一个替代品,所以除非你对它进行了大的修改,否则它不会是我想要的。 – 2009-10-18 19:02:28

回答

3

我用source to CFEclipse,因为它是开源和具有解析器。如果我们销售/重新分配它,不确定这种合法性,但我们只是将它用于内部工具。

+0

我相信它使用[MIT许可证](https://github.com/cfeclipse/cfeclipse/blob/master/org.cfeclipse.cfml/License.txt)。 – John 2014-04-17 20:52:01

0

没有。由于ColdFusion更像脚本而不是代码,我想可能很难为它编写解析器。

ColdFusion的生成器可以解析CFM/CFC在Eclipse的轮廓。也许你可以研究CF Builder插件是否可以做你想做的事情。

+3

类似脚本并不意味着很难为其编写解析器。任何语言都由一组字符串表示。解析器解析由构成解析器的过程代码隐含描述的字符串集合,或者如果设计的话,则由语法规则明确地驱动解析器。将ColdFusion定义为语法驱动的解析器生成器更重要的是对ColdFusion进行很好的描述。 – 2009-08-27 03:46:51

1

真正的汉语语言写作解析器通常是困难的,因为它们包含Lex和Yacc往往不处理好结构,例如,对的langauge不是LALR(1)。由于其类似于XML的风格,ColdFusion可能比一些更容易。

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

如果你想避免写你自己的或黑客所有这些正则表达式,你可以考虑我们的Source Code Search Engine。它具有语言敏感的解析器,可以非常快速地搜索非常大的源代码库。它的“语言敏感”解析器之一是AdhocText,它被设计来处理“通用”编程语言,比如你可能在随机编程书中找到的语言;它甚至可以理解像ColdFusion这样的类似XML的标签。您可以从提供的链接下载评估版来尝试。

编辑3/4/2010:添加到SCSE一项最新功能是标记定义的能力,并分别使用。这将解决OP希望找到函数定义而不是所有的调用。

+0

重新设计工具包可能确实是一个很好的开始工具,它只是一个耻辱,它没有在[开箱即用的前端]之间列出CF支持(http://www.semanticdesigns。COM /产品/前端/ index.html的?首页= DMSDomains)。 – CrazyPyro 2011-02-22 19:25:08

+0

@CrazyPro:是的,这确实是一个耻辱,因为那样你根本就不必构建解析器。但是我们只能在有限的预算中做到这一点: - }关键是,如果您必须构建自己的解析器,这是一个很好的基础。 – 2011-02-22 20:53:03