3

我编写了一个应该应用于 DSL 脚本的全局 AST 转换,现在我正在选择将特定 groovy 脚本识别为这些 DSL 脚本的最佳方法。

我考虑了以下选项:

  1. 自定义文件扩展名;这里最大的缺点是 IDE 支持:许多几乎不支持编译/编辑具有非 groovy 扩展名的文件(您可以配置编辑器,但需要一些调整)。
  2. 一个特殊的文件名后缀(前缀),但在这种情况下,后缀应该是唯一的(因此相对较长)以避免意外转换常规 groovy 文件(我当前的选择)。
  3. 应用于脚本类的本地 AST 转换,其缺点是需要为每个脚本编写一些样板代码。
  4. 在脚本中有一些独特的第一条语句将识别 DSL。

你认为什么是最好的选择,为什么?还有其他我没有考虑过的选择吗?

4

1 回答 1

0

如果您使用 GroovyShell 编译 DSL 脚本,您可以使用CompilerConfiguration.addCompilationCustomizer( ASTTransformationCustomizer( YourGlobalASTTransformation)) 对它们应用转换。

于 2012-07-11T06:55:43.263 回答