Ruby 中的简单 DSL

Posted

技术标签:

【中文标题】Ruby 中的简单 DSL【英文标题】:simple DSL in Ruby 【发布时间】:2017-02-21 00:54:54 【问题描述】:

我想用 Ruby 制作一个 DSL,在那里我可以使用简单的命令做一些事情。例如“GO PRINT 10 *”将打印 10 颗星 或“GO PRINT 5 &”将打印 5 & 符号。有谁知道好的教程吗? 听说宝石驯服值得关注?

【问题讨论】:

我建议自己先学习编写 DSL 的基础知识。否则 Docile 可能会成为你难以理解的魔法黑匣子。 Russ Olsen 所著的Ruby 中的设计模式一书有一章是关于 DSL 的。 Tutorials for writing DSL in Ruby的可能重复 【参考方案1】:

这里有一些与你想做的事情相关的链接:

https://robots.thoughtbot.com/writing-a-domain-specific-language-in-rubyTutorials for writing DSL in Rubyhttps://www.leighhalliday.com/creating-ruby-dsl

如果您想要一个非常灵活的 DSL(即,您无法分辨出它实际上是 Ruby,这听起来像是您想要的),我建议您学习一门语言,例如Racket 非常适合创建各种语言,例如 a brainf*ck clone、a stack-based calculator、these 和 these。

【讨论】:

以上是关于Ruby 中的简单 DSL的主要内容,如果未能解决你的问题,请参考以下文章

Ruby DSL 体验?

Ruby入门

Ruby 和规则引擎

ruby 关于自定义DSL的演示

DSL-让你的 Ruby 代码更优秀

在 ruby​​ DSL 实现中捕获规范文件名?