Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Groovy DSL脚本_Groovy_Dsl - Fatal编程技术网

Groovy DSL脚本

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

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

我考虑了以下选择:

  • 自定义文件扩展名;这里最大的缺点是IDE支持:许多几乎不支持编译/编辑具有非groovy扩展名的文件(您可以配置编辑器,但它需要一些调整)
  • 一个特殊的文件名后缀(前缀),但在这种情况下,后缀应该是唯一的(因此相对较长),以避免常规groovy文件的意外转换(我当前的选择)
  • 本地AST转换应用于脚本类,其缺点是需要为每个脚本编写一些样板代码
  • 在脚本中有一些唯一的第一个语句来标识DSL
    你认为什么是最好的选择?为什么?有没有我没有考虑过的其他选项?

    如果您使用GroovyShell编译DSL脚本,您可以使用GlobalAstTransformation)对其应用转换。

    出于性能原因,我希望在编译时应用转换。它还允许我以
    execute(ClassName)
    的形式运行脚本,而不是
    execute(“path/to/the/script/ClassName.groovy”)