首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dart支持编写嵌入式DSL吗?

Dart支持编写嵌入式DSL吗?
EN

Stack Overflow用户
提问于 2013-12-18 14:15:26
回答 1查看 1.6K关注 0票数 4

我想知道Dart是否能够在运行时使用这样的委托支持来执行闭包,Groovy能够做到什么呢?请参阅此示例以更好地理解:一个从零开始的Groovy 2小时

我有一个用Groovy编写的DSL,可以轻松地定义MARC库记录。我希望能够通过将定义调用绑定到程序中的委托类来本地处理类似的Dart脚本。

代码语言:javascript
复制
record {
   leader "00000nam a2200000 u 4500"
   controlfield "001", "LIB001"
   controlfield "005", "20120311123453.0"
   datafield("100") {
     subfield "a", "Author of record"
   }
   datafield("245", "0") {
     subfield "a", "Title of record"
   }
}

您可能会想:为什么这不能用JSON表示呢?有了这样一个DSL,我可以做的不仅仅是表达数据。因为它是嵌入式的,所以您可以在DSL中执行任何操作,这在宿主语言中是有效的(这里是Groovy)。如果您必须使用不同的值多次定义相同的东西,可以使用GString表达式、调用数据库、访问文件等,可以执行for循环。使用定义的DSLD,IDE知道您的概念,就像它始终是语言的一部分一样,它可以为您提供辅助工具。它具有很强的表现力和直觉。

对于Dart来说类似的事情就是我要找的东西。

EN

回答 1

Stack Overflow用户

发布于 2013-12-29 18:39:37

您应该查看sweet.js,它为JavaScript提供卫生的宏。您可以编写宏以接受所需的DSL。编译时,您将得到必须包含的JavaScript文件。然后您可以直接从JavaScript或Dart使用DSL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20660527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档