我正在使用 ruby 实现一个内部 DSL。我提供了一个命令行工具来执行用文件编写的 DSL 脚本(很像puppet)。起初我打算使用 load() 来运行脚本,事情是,我希望能够在执行脚本之前传递一些上下文。我希望我可以阅读文本形式的脚本并将其视为一个块,然后在给定的上下文中执行该块。这样的事情可能吗?
或者这些事情通常是如何实现的?可以肯定地做到这一点,因为 puppet 做到了。但在我可以挖掘它的代码库之前,我在这里尝试。
另外,我可以看看内部 DSL 实现的任何不错的小例子吗?
请检查以下链接,一系列 DSL 文章。
http://www.ibm.com/developerworks/java/library/j-cb04046/index.html http://deadprogrammersociety.blogspot.de/2006/11/ruby-domain-specific-languages-basics.html http: //deadprogrammersociety.blogspot.de/2006/11/ruby-domain-specific-languages-basics_08.html http://deadprogrammersociety.blogspot.de/2006/11/ruby-domain-specific-languages-basics_19.html http: //deadprogrammersociety.blogspot.de/2006/11/ruby-domain-specific-languages-basics_27.html