动态dsl使用kotlin with content assist

kotlin是否帮助建立以下dsl?

test 'test_01' { description " test that a user by name tom is present author : xyz GET /userstore/users/user(name=tom) { verify(/first-name == 'Tom') } } 

在这个dsl​​中,以下是静态部分

测试,描述,作者,GET,validation

但是,expression

/ userstore /用户/用户(名称= TOM)

是动态支持的。 这意味着,应用程序知道可以通过“/”分隔语法导航的各种域模型。 IDE(Intellij)在我调用它时应该给我内容帮助。 例如,在GET之后,如果我输入“/”并调用ca,它应该给我以下选项

  1. userstore
  2. 书店
  3. 建筑物等

事实是,在开发时我不知道这些条目。 我可以编写可以返回这些条目的代码。 我需要编辑来调用我的代码,并获得内容帮助候选人。

而且,如果expression式由无效标记形成,我需要构建标记错误。 所以,我需要编辑器继续检查我的代码,并且在返回的候选列表中没有find令牌时,应该在编辑器中标记错误。

首先,你的例子的语法是无效的Kotlin,所以不,你不能把它作为一个Kotlin DSL。 如果您可以更改语法,以便路径存储在字符串文字中,那么这将是有效的Kotlin。

其次,您可以为IntelliJ IDEA构建一个插件,它可以为任何语言(Java,Kotlin或其他任何语言)提供这种内容帮助和即时validation。 构建这样一个插件所需的努力并不取决于你所支持的语言。 使用Kotlin不会使创建这样一个插件变得更容易。