ColdFusion代码解析器?

ColdFusion代码解析器?,coldfusion,parsing,cfeclipse,Coldfusion,Parsing,Cfeclipse,我正在尝试创建一个应用程序来搜索我公司的ColdFusion代码库。我希望能够进行智能搜索,例如:查找定义函数的位置(而不是在调用函数的任何地方命中)。为了做到这一点,我需要解析ColdFusion代码,以识别函数声明、函数调用、数据库查询等内容 我研究过使用lex和yacc,但我以前从未使用过它们,而且学习曲线似乎非常陡峭。我希望那里已经有我可以使用的东西。我的另一个选择是一堆难以维护的正则表达式意大利面代码,我想避免它们。不存在。由于ColdFusion更像是脚本而不是代码,我想为它编写解析

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


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

不存在。由于ColdFusion更像是脚本而不是代码,我想为它编写解析器是很困难的


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

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

<>如果你想快速构建一个复杂的解析器,你可以考虑使用我们的 它具有GLR解析支持

如果你想避免写你自己的书或者把所有的Regexps都砍掉,你可以考虑我们的。它有语言敏感的解析器,可以非常快速地搜索非常大的源代码库。它的一个“语言敏感”解析器是AdhocText,它被设计用来处理“通用”编程语言,比如你可能在随机编程书中找到的那些语言;它甚至可以理解类似XML的标记,比如ColdFusion。您可以从提供的链接下载评估版本进行尝试


2010年4月3日编辑:SCSE最近增加的一项功能是能够单独标记定义和使用。这将解决OP希望找到函数定义而不是所有调用的问题。

我使用了,因为它是开源的,并且有一个解析器。如果我们出售/重新分发它,我们不确定它的合法性,但我们只是将它用作一个内部工具。

像脚本一样并不意味着很难为它编写解析器。任何语言都由一组字符串表示。解析器解析由组成解析器的过程代码隐式描述的字符串集,或者由驱动解析器的语法规则显式描述的字符串集(如果这样设计的话)。将ColdFusion定义为语法驱动的解析器生成器更重要的是获得对ColdFusion的良好描述。Kip,这也是我感兴趣的事情(也是我想集成到CFE中的事情),所以我想知道你是否取得了一些有用的进展?@Peter Boughton:实际上我是代表一位同事问这个问题的。请看下面我的答案——他在源代码中使用了解析器来实现Eclipse。我不知道重新发布是否合法,但我们将其用于内部开发工具。您需要检查许可证的精确措辞,但如果它是从EPL代码(CFEclipse源代码)派生的,那么它也需要使用EPL许可证进行分发。然而,我想为当前的CFE解析器创建一个替代品,因此,除非您对其进行了大的检修,否则它将不会是我想要的。重新工程工具包可能确实是一个很好的开始工具,但遗憾的是它没有将CF支持列在其中。@CrazyPro:是的,这确实是一个遗憾,因为这样你就不必构建解析器了。但是我们可以在有限的预算上做这么多:-}要点是,如果你必须建立自己的解析器,这是一个很好的基础。现在(2020年7月),我们有了CF支持,作为开箱即用的前端。我相信它使用了。