【问题标题】:ColdFusion code parser?ColdFusion 代码解析器?
【发布时间】:2009-08-05 20:07:29
【问题描述】:

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

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

【问题讨论】:

  • Kip,这也是我一直感兴趣的东西(也是我想集成到 CFE 中的东西),所以我想知道你是否取得了任何有用的进展?
  • @Peter Boughton:实际上我是代表一位同事问这个问题的。请参阅下面的答案——他在 CFEclipse 的源代码中使用了解析器。我不知道重新分发这是否合法,但我们将它用于内部开发工具。
  • 好吧,您需要检查许可证的准确措辞,但如果它是从 EPL 代码(CFEclipse 源代码)派生的,那么它也只需要与 EPL 许可证一起分发。但是,我想创建一个替代品是当前的 CFE 解析器,所以除非你对它进行了大修,否则它不会是我想要的。

标签: coldfusion parsing cfeclipse


【解决方案1】:

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

【讨论】:

【解决方案2】:

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

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

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

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

【讨论】:

  • Reengineering Toolkit 可能确实是一个很好的入门工具,可惜它没有在its out-of-the-box front ends 中列出对 CF 的支持。
  • @CrazyPro:是的,这确实是一种耻辱,因为这样你就根本不需要构建解析器了。但是我们只能在有限的预算下做这么多:-} 关键是,如果您必须构建自己的解析器,这是一个很好的基础。
  • @CrazyPyro:好吧,我们花了一段时间才解决这个问题。现在(2020 年 7 月)我们提供 CF 支持作为开箱即用的前端。
【解决方案3】:

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

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

【讨论】:

  • 类似于脚本并不意味着很难为其编写解析器。任何语言都由一组字符串表示。解析器解析由包含解析器的过程代码隐式描述的字符串集,或者由驱动解析器的语法规则显式描述(如果这样设计)。将 ColdFusion 定义为语法驱动的解析器生成器更重要的是获得对 ColdFusion 的良好描述。
猜你喜欢
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 2016-04-04
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多